diff --git a/.gitignore b/.gitignore index cbd4fe33eaa..84f282d0af7 100644 --- a/.gitignore +++ b/.gitignore @@ -64,11 +64,7 @@ web/src/main/webapp/META-INF/MANIFEST.MF web/src/main/webapp/WEB-INF/data/0* web/src/main/webapp/WEB-INF/data/config/encryptor.properties web/src/main/webapp/WEB-INF/data/config/index/records.json -web/src/main/webapp/WEB-INF/data/config/schema_plugins/*/schematron/schematron*.xsl -web/src/main/webapp/WEB-INF/data/config/schema_plugins/csw-record -web/src/main/webapp/WEB-INF/data/config/schema_plugins/dublin-core -web/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19* -web/src/main/webapp/WEB-INF/data/config/schema_plugins/schemaplugin-uri-catalog.xml +web/src/main/webapp/WEB-INF/data/config/schema_plugins/* web/src/main/webapp/WEB-INF/data/config/schemaplugin-uri-catalog.xml web/src/main/webapp/WEB-INF/data/data/backup web/src/main/webapp/WEB-INF/data/data/metadata_data diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000000..1cdaa3768cf --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,88 @@ +# This CITATION.cff file was generated with cffinit. +# Visit https://bit.ly/cffinit to generate yours today! + +cff-version: 1.2.0 +title: GeoNetwork opensource +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: François + family-names: Prunayre + affiliation: Titellus + - given-names: Jose + family-names: García + affiliation: GeoCat BV + - given-names: Jeroen + family-names: Ticheler + affiliation: GeoCat BV + orcid: 'https://orcid.org/0009-0003-3896-0437' + email: jeroen.ticheler@geocat.net + - given-names: Florent + family-names: Gravin + affiliation: CamptoCamp + - given-names: Simon + family-names: Pigot + affiliation: CSIRO Australia + - name: GeoCat BV + address: Veenderweg 13 + city: Bennekom + country: NL + post-code: 6721 WD + tel: +31 (0) 318 416 664 + website: 'https://www.geocat.net/' + email: info@geocat.net + - name: Titellus + address: 321 Route de la Mollière + city: Saint Pierre de Genebroz + country: FR + post-code: 73360 + website: 'https://titellus.net/' + email: fx.prunayre@titellus.net + - name: CamptoCamp + address: QG Center Rte de la Chaux 4 + city: Bussigny + country: CH + post-code: 1030 + tel: +41 (21) 619 10 10 + website: 'https://camptocamp.com/' + email: info@camptocamp.com + - name: Open Source Geospatial Foundation - OSGeo + address: '9450 SW Gemini Dr. #42523' + location: Beaverton + region: Oregon + post-code: '97008' + country: US + email: info@osgeo.org + website: 'https://www.osgeo.org/' +repository-code: 'http://github.com/geonetwork/core-geonetwork' +url: 'https://geonetwork-opensource.org' +repository-artifact: >- + https://sourceforge.net/projects/geonetwork/files/GeoNetwork_opensource/ +abstract: >- + GeoNetwork is a catalog application to manage spatial and + non-spatial resources. It is compliant with critical + international standards from ISO, OGC and INSPIRE. It + provides powerful metadata editing and search functions as + well as an interactive web map viewer. +keywords: + - catalog + - gis + - sdi + - spatial data infrastructure + - dataspace + - search + - open data + - standards + - spatial + - CSW + - OGCAPI Records + - DCAT + - GeoDCAT-AP + - Catalog Service + - OGC + - open geospatial consortium + - osgeo + - open source geospatial foundation +license: GPL-2.0 diff --git a/add-schema.sh b/add-schema.sh index 2a268428530..4f1ecc8c92d 100755 --- a/add-schema.sh +++ b/add-schema.sh @@ -83,7 +83,7 @@ then ${insertLine} a\\ \ \\ \ org.geonetwork-opensource.schemas\\ -\ schema-${schema}\\ +\ gn-schema-${schema}\\ \ ${gnSchemasVersion}\\ \ SED_SCRIPT @@ -103,7 +103,7 @@ SED_SCRIPT \ \\ \ \\ \ org.geonetwork-opensource.schemas\\ -\ schema-${schema}\\ +\ gn-schema-${schema}\\ \ ${gnSchemasVersion}\\ \ \\ \ \\ @@ -121,7 +121,7 @@ SED_SCRIPT \ \\ \ \\ \ org.geonetwork-opensource.schemas\\ -\ schema-${schema}\\ +\ gn-schema-${schema}\\ \ zip\\ \ false\\ \ \$\{schema-plugins.dir\}\\ @@ -138,7 +138,7 @@ SED_SCRIPT fi # Add schema resources in service/pom.xml with test scope for unit tests -line=$(grep -n "schema-${schema}" services/pom.xml | cut -d: -f1) +line=$(grep -n "gn-schema-${schema}" services/pom.xml | cut -d: -f1) if [ ! $line ] then @@ -154,7 +154,7 @@ then ${finalLine} a\\ \ \\ \ ${projectGroupId}\\ -\ schema-${schema}\\ +\ gn-schema-${schema}\\ \ ${gnSchemasVersion}\\ \ test\\ \ diff --git a/common/src/main/java/org/fao/geonet/utils/XmlRequest.java b/common/src/main/java/org/fao/geonet/utils/XmlRequest.java index 7b6a3b69c59..cba8608a556 100644 --- a/common/src/main/java/org/fao/geonet/utils/XmlRequest.java +++ b/common/src/main/java/org/fao/geonet/utils/XmlRequest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2016 Food and Agriculture Organization of the + * Copyright (C) 2001-2024 Food and Agriculture Organization of the * United Nations (FAO-UN), United Nations World Food Programme (WFP) * and United Nations Environment Programme (UNEP) * @@ -124,13 +124,13 @@ protected final Element executeAndReadResponse(HttpRequestBase httpMethod) throw " -- Response Code: " + httpResponse.getRawStatusCode()); } - byte[] data = null; + byte[] data; try { data = IOUtils.toByteArray(httpResponse.getBody()); return Xml.loadStream(new ByteArrayInputStream(data)); } catch (JDOMException e) { - throw new BadXmlResponseEx("Response: '" + new String(data, "UTF8") + "' (from URI " + httpMethod.getURI() + ")"); + throw new BadXmlResponseEx("Invalid XML document from URI: " + httpMethod.getURI()); } finally { httpMethod.releaseConnection(); diff --git a/core/src/main/java/org/fao/geonet/api/records/attachments/AbstractStore.java b/core/src/main/java/org/fao/geonet/api/records/attachments/AbstractStore.java index c5291a59bbf..168e4e2a63c 100644 --- a/core/src/main/java/org/fao/geonet/api/records/attachments/AbstractStore.java +++ b/core/src/main/java/org/fao/geonet/api/records/attachments/AbstractStore.java @@ -1,6 +1,6 @@ /* * ============================================================================= - * === Copyright (C) 2019 Food and Agriculture Organization of the + * === Copyright (C) 2024 Food and Agriculture Organization of the * === United Nations (FAO-UN), United Nations World Food Programme (WFP) * === and United Nations Environment Programme (UNEP) * === @@ -44,12 +44,16 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public abstract class AbstractStore implements Store { + protected static final String RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_SEPARATOR = ":"; + protected static final String RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_ESCAPED_SEPARATOR = "\\:"; + @Override public final List getResources(final ServiceContext context, final String metadataUuid, final Sort sort, final String filter) throws Exception { @@ -279,4 +283,28 @@ public String toString() { } }; } + + private String escapeResourceManagementExternalProperties(String value) { + return value.replace(RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_SEPARATOR, RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_ESCAPED_SEPARATOR); +} + + /** + * Create an encoded base 64 object id contains the following fields to uniquely identify the resource + * The fields are separated by a colon ":" + * @param type to identify type of storage - document/folder + * @param visibility of the resource public/private + * @param metadataId internal metadata id + * @param version identifier which can be used to directly get this version. + * @param resourceId or filename of the resource + * @return based 64 object id + */ + protected String getResourceManagementExternalPropertiesObjectId(final String type, final MetadataResourceVisibility visibility, final Integer metadataId, final String version, + final String resourceId) { + return Base64.getEncoder().encodeToString( + ((type + RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_SEPARATOR + + escapeResourceManagementExternalProperties(visibility == null ? "" : visibility.toString().toLowerCase()) + RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_SEPARATOR + + metadataId + RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_SEPARATOR + + escapeResourceManagementExternalProperties(version == null ? "" : version) + RESOURCE_MANAGEMENT_EXTERNAL_PROPERTIES_SEPARATOR + + escapeResourceManagementExternalProperties(resourceId)).getBytes())); + } } diff --git a/core/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java b/core/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java index 4fc31b3f7a2..469bfc296ea 100644 --- a/core/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java +++ b/core/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java @@ -232,21 +232,28 @@ private Path getPath(ServiceContext context, int metadataId, MetadataResourceVis public String delResources(ServiceContext context, int metadataId) throws Exception { Path metadataDir = Lib.resource.getMetadataDir(getDataDirectory(context), metadataId); try { + Log.info(Geonet.RESOURCES, String.format("Deleting all files from metadataId '%d'", metadataId)); IO.deleteFileOrDirectory(metadataDir, true); - return String.format("Metadata '%s' directory removed.", metadataId); + Log.info(Geonet.RESOURCES, + String.format("Metadata '%d' directory removed.", metadataId)); + return String.format("Metadata '%d' directory removed.", metadataId); } catch (Exception e) { - return String.format("Unable to remove metadata '%s' directory.", metadataId); + return String.format("Unable to remove metadata '%d' directory.", metadataId); } } @Override public String delResource(ServiceContext context, String metadataUuid, String resourceId, Boolean approved) throws Exception { - canEdit(context, metadataUuid, approved); + int metadataId = canEdit(context, metadataUuid, approved); try (ResourceHolder filePath = getResource(context, metadataUuid, resourceId, approved)) { Files.deleteIfExists(filePath.getPath()); - return String.format("MetadataResource '%s' removed.", resourceId); + Log.info(Geonet.RESOURCES, + String.format("Resource '%s' removed for metadata %d (%s).", resourceId, metadataId, metadataUuid)); + return String.format("Metadata resource '%s' removed.", resourceId); } catch (IOException e) { + Log.warning(Geonet.RESOURCES, + String.format("Unable to remove resource '%s' for metadata %d (%s). %s", resourceId, metadataId, metadataUuid, e.getMessage())); return String.format("Unable to remove resource '%s'.", resourceId); } } @@ -254,12 +261,16 @@ public String delResource(ServiceContext context, String metadataUuid, String re @Override public String delResource(final ServiceContext context, final String metadataUuid, final MetadataResourceVisibility visibility, final String resourceId, Boolean approved) throws Exception { - canEdit(context, metadataUuid, approved); + int metadataId = canEdit(context, metadataUuid, approved); try (ResourceHolder filePath = getResource(context, metadataUuid, visibility, resourceId, approved)) { Files.deleteIfExists(filePath.getPath()); - return String.format("MetadataResource '%s' removed.", resourceId); + Log.info(Geonet.RESOURCES, + String.format("Resource '%s' removed for metadata %d (%s).", resourceId, metadataId, metadataUuid)); + return String.format("Metadata resource '%s' removed.", resourceId); } catch (IOException e) { + Log.warning(Geonet.RESOURCES, + String.format("Unable to remove resource '%s' for metadata %d (%s). %s", resourceId, metadataId, metadataUuid, e.getMessage())); return String.format("Unable to remove resource '%s'.", resourceId); } } diff --git a/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java b/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java index 86a0cdca444..cc5296232bd 100644 --- a/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java +++ b/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java @@ -27,8 +27,11 @@ import jeeves.server.sources.http.JeevesServlet; import org.fao.geonet.ApplicationContextHolder; import org.fao.geonet.constants.Geonet; +import org.fao.geonet.exceptions.BadParameterEx; +import org.fao.geonet.utils.FilePathChecker; import org.fao.geonet.utils.IO; import org.fao.geonet.utils.Log; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEvent; import org.springframework.context.ConfigurableApplicationContext; @@ -63,6 +66,9 @@ public class GeonetworkDataDirectory { */ public static final String GEONETWORK_BEAN_KEY = "GeonetworkDataDirectory"; + @Autowired + SchemaManager schemaManager; + private Path webappDir; private Path systemDataDir; private Path indexConfigDir; @@ -797,11 +803,18 @@ public Path getXsltConversion(String conversionId) { if (conversionId.startsWith(IMPORT_STYLESHEETS_SCHEMA_PREFIX)) { String[] pathToken = conversionId.split(":"); if (pathToken.length == 3) { + String schema = pathToken[1]; + if (!schemaManager.existsSchema(schema)) { + throw new BadParameterEx(String.format( + "Conversion not found. Schema '%s' is not registered in this catalog.", schema)); + } + FilePathChecker.verify(pathToken[2]); return this.getSchemaPluginsDir() .resolve(pathToken[1]) .resolve(pathToken[2] + ".xsl"); } } else { + FilePathChecker.verify(conversionId); return this.getWebappDir().resolve(Geonet.Path.IMPORT_STYLESHEETS). resolve(conversionId + ".xsl"); } diff --git a/core/src/main/java/org/fao/geonet/kernel/SchemaManager.java b/core/src/main/java/org/fao/geonet/kernel/SchemaManager.java index 4139d045ac5..18742c86494 100644 --- a/core/src/main/java/org/fao/geonet/kernel/SchemaManager.java +++ b/core/src/main/java/org/fao/geonet/kernel/SchemaManager.java @@ -76,6 +76,7 @@ import java.util.Map; import java.util.Set; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * Class that handles all functions relating to metadata schemas. This includes @@ -106,6 +107,7 @@ public class SchemaManager { private static int activeWriters = 0; private Map hmSchemas = new HashMap<>(); private Map hmSchemasTypenames = new HashMap<>(); + private Map cswOutputSchemas = new HashMap<>(); private String[] fnames = {"labels.xml", "codelists.xml", "strings.xml"}; private Path schemaPluginsDir; private Path schemaPluginsCat; @@ -958,6 +960,7 @@ private void addSchema(ApplicationContext applicationContext, Path schemaDir, El if (mds.getSchemaPlugin() != null && mds.getSchemaPlugin().getCswTypeNames() != null) { hmSchemasTypenames.putAll(mds.getSchemaPlugin().getCswTypeNames()); + cswOutputSchemas.putAll(mds.getSchemaPlugin().getOutputSchemas()); } // -- add cached xml files (schema codelists and label files) @@ -1925,17 +1928,17 @@ public Map getHmSchemasTypenames() { } /** - * Return the list of namespace URI of all typenames declared in all schema plugins. + * Return the list of outputSchema declared in all schema plugins. + */ + public Map getOutputSchemas() { + return cswOutputSchemas; + } + + /** + * Return the list of namespace URI of all outputSchema declared in all schema plugins. */ public List getListOfOutputSchemaURI() { - Iterator iterator = hmSchemasTypenames.keySet().iterator(); - List listOfSchemaURI = new ArrayList<>(); - while (iterator.hasNext()) { - String typeLocalName = iterator.next(); - Namespace ns = hmSchemasTypenames.get(typeLocalName); - listOfSchemaURI.add(ns.getURI()); - } - return listOfSchemaURI; + return new ArrayList<>(cswOutputSchemas.values()); } /** diff --git a/core/src/main/java/org/fao/geonet/kernel/Thesaurus.java b/core/src/main/java/org/fao/geonet/kernel/Thesaurus.java index efaeaf60a89..a9f2d57230f 100644 --- a/core/src/main/java/org/fao/geonet/kernel/Thesaurus.java +++ b/core/src/main/java/org/fao/geonet/kernel/Thesaurus.java @@ -121,7 +121,7 @@ public class Thesaurus { // map of lang -> dictionary of values // key is a dublinCore element (i.e. https://guides.library.ucsc.edu/c.php?g=618773&p=4306386) // see #retrieveDublinCore() for example - private Map> dublinCoreMultilingual = new Hashtable<>(); + private Map> dublinCoreMultilingual = new Hashtable<>(); private Cache THESAURUS_SEARCH_CACHE; @@ -133,14 +133,15 @@ protected Thesaurus() { } /** - * @param fname file name - * @param dname category/domain name of thesaurus + * @param fname file name + * @param dname category/domain name of thesaurus * @param thesaurusCacheMaxSize */ public Thesaurus(IsoLanguagesMapper isoLanguageMapper, String fname, String type, String dname, Path thesaurusFile, String siteUrl, int thesaurusCacheMaxSize) { this(isoLanguageMapper, fname, null, null, type, dname, thesaurusFile, siteUrl, false, thesaurusCacheMaxSize); } + public Thesaurus(IsoLanguagesMapper isoLanguageMapper, String fname, String tname, String tnamespace, String type, String dname, Path thesaurusFile, String siteUrl, boolean ignoreMissingError, int thesaurusCacheMaxSize) { this(isoLanguageMapper, fname, null, null, null, type, dname, thesaurusFile, siteUrl, false, thesaurusCacheMaxSize); } @@ -152,9 +153,9 @@ public Thesaurus(IsoLanguagesMapper isoLanguageMapper, String fname, super(); THESAURUS_SEARCH_CACHE = CacheBuilder.newBuilder() - .maximumSize(thesaurusCacheMaxSize) - .expireAfterAccess(25, TimeUnit.HOURS) - .build(); + .maximumSize(thesaurusCacheMaxSize) + .expireAfterAccess(25, TimeUnit.HOURS) + .build(); this.isoLanguageMapper = isoLanguageMapper; this.fname = fname; @@ -193,7 +194,6 @@ public Thesaurus(IsoLanguagesMapper isoLanguageMapper, String fname, } /** - * * @param fname * @param type * @param dname @@ -211,7 +211,7 @@ public Map getMultilingualTitles() { return Collections.unmodifiableMap(this.multilingualTitles); } - public Map> getDublinCoreMultilingual() { + public Map> getDublinCoreMultilingual() { return Collections.unmodifiableMap(this.dublinCoreMultilingual); } @@ -332,7 +332,7 @@ public synchronized Thesaurus initRepository() throws ConfigurationException, IO SailConfig syncSail = new SailConfig("org.openrdf.sesame.sailimpl.sync.SyncRdfSchemaRepository"); SailConfig memSail = new org.openrdf.sesame.sailimpl.memory.RdfSchemaRepositoryConfig(getFile().toString(), - RDFFormat.RDFXML); + RDFFormat.RDFXML); repConfig.addSail(syncSail); repConfig.addSail(memSail); repConfig.setWorldReadable(true); @@ -344,7 +344,7 @@ public synchronized Thesaurus initRepository() throws ConfigurationException, IO } public synchronized QueryResultsTable performRequest(String query) throws IOException, MalformedQueryException, - QueryEvaluationException, AccessDeniedException { + QueryEvaluationException, AccessDeniedException { if (Log.isDebugEnabled(Geonet.THESAURUS)) Log.debug(Geonet.THESAURUS, "Query : " + query); @@ -354,15 +354,15 @@ public synchronized QueryResultsTable performRequest(String query) throws IOExce public boolean hasConceptScheme(String uri) { String query = "SELECT conceptScheme" - + " FROM {conceptScheme} rdf:type {skos:ConceptScheme}" - + " WHERE conceptScheme = <" + uri + ">" - + " USING NAMESPACE skos = "; + + " FROM {conceptScheme} rdf:type {skos:ConceptScheme}" + + " WHERE conceptScheme = <" + uri + ">" + + " USING NAMESPACE skos = "; try { return performRequest(query).getRowCount() > 0; } catch (Exception e) { Log.error(Geonet.THESAURUS_MAN, - String.format("Error retrieving concept scheme for %s. Error is: %s", thesaurusFile, e.getMessage())); + String.format("Error retrieving concept scheme for %s. Error is: %s", thesaurusFile, e.getMessage())); throw new RuntimeException(e); } } @@ -370,8 +370,8 @@ public boolean hasConceptScheme(String uri) { public List getConceptSchemes() { String query = "SELECT conceptScheme" - + " FROM {conceptScheme} rdf:type {skos:ConceptScheme}" - + " USING NAMESPACE skos = "; + + " FROM {conceptScheme} rdf:type {skos:ConceptScheme}" + + " USING NAMESPACE skos = "; try { List ret = new ArrayList<>(); @@ -383,7 +383,7 @@ public List getConceptSchemes() { return ret; } catch (Exception e) { Log.error(Geonet.THESAURUS_MAN, String.format( - "Error retrieving concept schemes for %s. Error is: %s", thesaurusFile, e.getMessage())); + "Error retrieving concept schemes for %s. Error is: %s", thesaurusFile, e.getMessage())); return Collections.emptyList(); } } @@ -406,34 +406,28 @@ public synchronized URI addElement(KeywordBean keyword) throws IOException, Acce URI mySubject = myFactory.createURI(keyword.getUriCode()); URI skosClass = myFactory.createURI(SKOS_NAMESPACE, "Concept"); + URI rdfType = myFactory.createURI(org.openrdf.vocabulary.RDF.TYPE); + mySubject.addProperty(rdfType, skosClass); + URI predicatePrefLabel = myFactory - .createURI(SKOS_NAMESPACE, "prefLabel"); + .createURI(SKOS_NAMESPACE, "prefLabel"); URI predicateScopeNote = myFactory - .createURI(SKOS_NAMESPACE, "scopeNote"); - - URI predicateBoundedBy = myFactory.createURI(namespaceGml, "BoundedBy"); - URI predicateEnvelope = myFactory.createURI(namespaceGml, "Envelope"); - URI predicateSrsName = myFactory.createURI(namespaceGml, "srsName"); - URI srsNameURI = myFactory - .createURI("http://www.opengis.net/gml/srs/epsg.xml#epsg:4326"); - BNode gmlNode = myFactory.createBNode(); - URI predicateLowerCorner = myFactory.createURI(namespaceGml, - "lowerCorner"); - URI predicateUpperCorner = myFactory.createURI(namespaceGml, - "upperCorner"); - - Literal lowerCorner = myFactory.createLiteral(keyword.getCoordWest() + " " + keyword.getCoordSouth()); - Literal upperCorner = myFactory.createLiteral(keyword.getCoordEast() + " " + keyword.getCoordNorth()); + .createURI(SKOS_NAMESPACE, "scopeNote"); + + URI predicateInScheme = myFactory + .createURI(SKOS_NAMESPACE, "inScheme"); + myGraph.add(mySubject, + predicateInScheme, + myFactory.createURI(this.getDefaultNamespace())); - mySubject.addProperty(rdfType, skosClass); Set> values = keyword.getValues().entrySet(); for (Entry entry : values) { String language = toiso639_1_Lang(entry.getKey()); Value valueObj = myFactory.createLiteral(entry.getValue(), language); myGraph.add(mySubject, predicatePrefLabel, valueObj); - } + Set> definitions = keyword.getDefinitions().entrySet(); for (Entry entry : definitions) { String language = toiso639_1_Lang(entry.getKey()); @@ -441,12 +435,29 @@ public synchronized URI addElement(KeywordBean keyword) throws IOException, Acce myGraph.add(mySubject, predicateScopeNote, definitionObj); } - myGraph.add(mySubject, predicateBoundedBy, gmlNode); - gmlNode.addProperty(rdfType, predicateEnvelope); - myGraph.add(gmlNode, predicateLowerCorner, lowerCorner); - myGraph.add(gmlNode, predicateUpperCorner, upperCorner); - myGraph.add(gmlNode, predicateSrsName, srsNameURI); + if (!(keyword.getCoordEast() + keyword.getCoordNorth() + keyword.getCoordWest() + keyword.getCoordSouth()).trim().isEmpty()) { + URI predicateBoundedBy = myFactory.createURI(namespaceGml, "BoundedBy"); + URI predicateEnvelope = myFactory.createURI(namespaceGml, "Envelope"); + URI predicateSrsName = myFactory.createURI(namespaceGml, "srsName"); + URI srsNameURI = myFactory + .createURI("http://www.opengis.net/gml/srs/epsg.xml#epsg:4326"); + BNode gmlNode = myFactory.createBNode(); + URI predicateLowerCorner = myFactory.createURI(namespaceGml, + "lowerCorner"); + URI predicateUpperCorner = myFactory.createURI(namespaceGml, + "upperCorner"); + + Literal lowerCorner = myFactory.createLiteral(keyword.getCoordWest() + " " + keyword.getCoordSouth()); + Literal upperCorner = myFactory.createLiteral(keyword.getCoordEast() + " " + keyword.getCoordNorth()); + + myGraph.add(mySubject, predicateBoundedBy, gmlNode); + + gmlNode.addProperty(rdfType, predicateEnvelope); + myGraph.add(gmlNode, predicateLowerCorner, lowerCorner); + myGraph.add(gmlNode, predicateUpperCorner, upperCorner); + myGraph.add(gmlNode, predicateSrsName, srsNameURI); + } repository.addGraph(myGraph); return mySubject; @@ -485,7 +496,7 @@ public synchronized Thesaurus removeElement(String uri) throws AccessDeniedExcep } private Thesaurus removeElement(Graph myGraph, URI subject) - throws AccessDeniedException { + throws AccessDeniedException { StatementIterator iter = myGraph.getStatements(subject, null, null); while (iter.hasNext()) { AtomicReference st = new AtomicReference(iter.next()); @@ -504,8 +515,8 @@ private Thesaurus removeElement(Graph myGraph, URI subject) private String toiso639_1_Lang(String lang) { String defaultCode = getIsoLanguageMapper().iso639_2_to_iso639_1( - Geonet.DEFAULT_LANGUAGE, - Geonet.DEFAULT_LANGUAGE.substring(0, 2)); + Geonet.DEFAULT_LANGUAGE, + Geonet.DEFAULT_LANGUAGE.substring(0, 2)); return getIsoLanguageMapper().iso639_2_to_iso639_1(lang, defaultCode); } @@ -548,15 +559,14 @@ public synchronized URI updateElement(KeywordBean keyword, boolean replace) thro String language = toiso639_1_Lang(entry.getKey()); Value valueObj = myFactory.createLiteral(entry.getValue(), language); myGraph.add(subject, predicatePrefLabel, valueObj); - } + // add updated Definitions/Notes Set> definitions = keyword.getDefinitions().entrySet(); for (Entry entry : definitions) { String language = toiso639_1_Lang(entry.getKey()); Value definitionObj = myFactory.createLiteral(entry.getValue(), language); myGraph.add(subject, predicateScopeNote, definitionObj); - } // update bbox @@ -677,7 +687,7 @@ public synchronized Thesaurus updateCode(String namespace, String oldcode, Strin /** * Update concept code using its URI. This is recommended when concept identifier may not be * based on thesaurus namespace and does not contains #. - * + *

* eg. http://vocab.nerc.ac.uk/collection/P07/current/CFV13N44/ */ public synchronized Thesaurus updateCodeByURI(String olduri, String newuri) throws AccessDeniedException { @@ -729,13 +739,13 @@ public void createConceptScheme(String thesaurusTitle, Graph myGraph = new org.openrdf.model.impl.GraphImpl(); writeConceptScheme(myGraph, - thesaurusTitle, - multilingualTitles, - thesaurusDescription, - multilingualDescriptions, - identifier, - type, - namespace); + thesaurusTitle, + multilingualTitles, + thesaurusDescription, + multilingualDescriptions, + identifier, + type, + namespace); repository.addGraph(myGraph); } @@ -755,13 +765,13 @@ public void updateConceptScheme(String thesaurusTitle, removeElement(getConceptSchemes().get(0)); writeConceptScheme(myGraph, - thesaurusTitle, - multilingualTitles, - thesaurusDescription, - multilingualDescriptions, - identifier, - type, - namespace); + thesaurusTitle, + multilingualTitles, + thesaurusDescription, + multilingualDescriptions, + identifier, + type, + namespace); } public void writeConceptScheme(Graph myGraph, String thesaurusTitle, @@ -823,9 +833,6 @@ public void writeConceptScheme(Graph myGraph, String thesaurusTitle, } - - - private void addElement(String name, String value, Graph myGraph, ValueFactory myFactory, URI mySubject) { if (StringUtils.isNotEmpty(value)) { URI uri = myFactory.createURI(DC_NAMESPACE, name); @@ -861,22 +868,22 @@ private void addElement(String name, String value, Graph myGraph, ValueFactory m private void retrieveDublinCore(Element thesaurusEl) { List theNSs = getThesaurusNamespaces(); - Namespace xmlNS = Namespace.getNamespace("xml","http://www.w3.org/XML/1998/namespace"); + Namespace xmlNS = Namespace.getNamespace("xml", "http://www.w3.org/XML/1998/namespace"); try { List multiLingualTitles = (List) Xml.selectNodes(thesaurusEl, - "skos:ConceptScheme/dc:*[@xml:lang]|skos:ConceptScheme/dcterms:*[@xml:lang]", theNSs); + "skos:ConceptScheme/dc:*[@xml:lang]|skos:ConceptScheme/dcterms:*[@xml:lang]", theNSs); dublinCoreMultilingual.clear(); - for (Element el: multiLingualTitles) { + for (Element el : multiLingualTitles) { String lang = isoLanguageMapper.iso639_2_to_iso639_1(el.getAttribute("lang", xmlNS).getValue()); String value = el.getTextTrim(); String name = el.getName(); if (!dublinCoreMultilingual.containsKey(lang)) { - dublinCoreMultilingual.put(lang,new HashMap<>()); + dublinCoreMultilingual.put(lang, new HashMap<>()); } - dublinCoreMultilingual.get(lang).put(name,value); + dublinCoreMultilingual.get(lang).put(name, value); } } catch (Exception e) { - Log.warning(Geonet.THESAURUS,"error extracting multilingual dublin core items from thesaurus",e); + Log.warning(Geonet.THESAURUS, "error extracting multilingual dublin core items from thesaurus", e); } } @@ -896,14 +903,14 @@ private void retrieveDublinCore(Element thesaurusEl) { private void retrieveMultiLingualTitles(Element thesaurusEl) { try { String xpathTitles = "skos:ConceptScheme/dc:title[@xml:lang]" + - "|skos:ConceptScheme/dcterms:title[@xml:lang]" + - "|skos:ConceptScheme/rdfs:label[@xml:lang]" + - "|skos:ConceptScheme/skos:prefLabel[@xml:lang]" + - "|rdf:Description[rdf:type/@rdf:resource = 'http://www.w3.org/2004/02/skos/core#ConceptScheme']/dc:title[@xml:lang]"; + "|skos:ConceptScheme/dcterms:title[@xml:lang]" + + "|skos:ConceptScheme/rdfs:label[@xml:lang]" + + "|skos:ConceptScheme/skos:prefLabel[@xml:lang]" + + "|rdf:Description[rdf:type/@rdf:resource = 'http://www.w3.org/2004/02/skos/core#ConceptScheme']/dc:title[@xml:lang]"; multilingualTitles.clear(); multilingualTitles.putAll(retrieveMultilingualField(thesaurusEl, xpathTitles)); } catch (Exception e) { - Log.warning(Geonet.THESAURUS,"error extracting multilingual titles from thesaurus",e); + Log.warning(Geonet.THESAURUS, "error extracting multilingual titles from thesaurus", e); } } @@ -913,19 +920,19 @@ private void retrieveMultiLingualDescriptions(Element thesaurusEl) { multilingualDescriptions.clear(); multilingualDescriptions.putAll(retrieveMultilingualField(thesaurusEl, xpathDescriptions)); } catch (Exception e) { - Log.warning(Geonet.THESAURUS,"error extracting multilingual descriptions from thesaurus",e); + Log.warning(Geonet.THESAURUS, "error extracting multilingual descriptions from thesaurus", e); } } private Map retrieveMultilingualField(Element thesaurusEl, String xpath) throws JDOMException { List theNSs = getThesaurusNamespaces(); - Namespace xmlNS = Namespace.getNamespace("xml","http://www.w3.org/XML/1998/namespace"); + Namespace xmlNS = Namespace.getNamespace("xml", "http://www.w3.org/XML/1998/namespace"); Map multilingualValues = new HashMap<>(); List multilingualValuesEl = (List) Xml.selectNodes(thesaurusEl, - xpath, theNSs); - for (Element el: multilingualValuesEl) { + xpath, theNSs); + for (Element el : multilingualValuesEl) { String lang = isoLanguageMapper.iso639_2_to_iso639_1(el.getAttribute("lang", xmlNS).getValue()); String titleValue = el.getTextTrim(); multilingualValues.put(lang, titleValue); @@ -936,7 +943,7 @@ private Map retrieveMultilingualField(Element thesaurusEl, Strin /** * Retrieves the thesaurus information from rdf file. - * + *

* Used to set the thesaurusName and thesaurusDate for keywords. */ private void retrieveThesaurusInformation(Path thesaurusFile, String defaultTitle, boolean ignoreMissingError) { @@ -956,25 +963,25 @@ private void retrieveThesaurusInformation(Path thesaurusFile, String defaultTitl retrieveDublinCore(thesaurusEl); Element titleEl = Xml.selectElement(thesaurusEl, - "skos:ConceptScheme/dc:title|skos:ConceptScheme/dcterms:title" + - "|skos:ConceptScheme/rdfs:label|skos:ConceptScheme/skos:prefLabel" + - "|skos:Collection/dc:title|skos:Collection/dcterms:title" + - "|rdf:Description/dc:title|rdf:Description/dcterms:title", theNSs); + "skos:ConceptScheme/dc:title|skos:ConceptScheme/dcterms:title" + + "|skos:ConceptScheme/rdfs:label|skos:ConceptScheme/skos:prefLabel" + + "|skos:Collection/dc:title|skos:Collection/dcterms:title" + + "|rdf:Description/dc:title|rdf:Description/dcterms:title", theNSs); if (titleEl != null) { this.title = titleEl.getValue(); this.defaultNamespace = titleEl - .getParentElement() - .getAttributeValue("about", Namespace.getNamespace("rdf", RDF_NAMESPACE)); + .getParentElement() + .getAttributeValue("about", Namespace.getNamespace("rdf", RDF_NAMESPACE)); } else { this.title = defaultTitle; this.defaultNamespace = DEFAULT_THESAURUS_NAMESPACE; } Element descriptionEl = Xml.selectElement(thesaurusEl, - "skos:ConceptScheme/dc:description|skos:ConceptScheme/dcterms:description|" + - "skos:Collection/dc:description|skos:Collection/dcterms:description|" + - "rdf:Description/dc:description|rdf:Description/dcterms:description", theNSs); + "skos:ConceptScheme/dc:description|skos:ConceptScheme/dcterms:description|" + + "skos:Collection/dc:description|skos:Collection/dcterms:description|" + + "rdf:Description/dc:description|rdf:Description/dcterms:description", theNSs); this.description = descriptionEl != null ? descriptionEl.getValue() : ""; @@ -987,13 +994,13 @@ private void retrieveThesaurusInformation(Path thesaurusFile, String defaultTitl } Element issuedDateEl = Xml.selectElement(thesaurusEl, "skos:ConceptScheme/dcterms:issued", theNSs); - this.issuedDate = issuedDateEl==null? "": issuedDateEl.getText(); + this.issuedDate = issuedDateEl == null ? "" : issuedDateEl.getText(); Element modifiedDateEl = Xml.selectElement(thesaurusEl, "skos:ConceptScheme/dcterms:modified", theNSs); - this.modifiedDate = modifiedDateEl==null? "": modifiedDateEl.getText(); + this.modifiedDate = modifiedDateEl == null ? "" : modifiedDateEl.getText(); Element createdDateEl = Xml.selectElement(thesaurusEl, "skos:ConceptScheme/dcterms:created", theNSs); - this.createdDate = createdDateEl==null? "": createdDateEl.getText(); + this.createdDate = createdDateEl == null ? "" : createdDateEl.getText(); // Default date Element dateEl = Xml.selectElement(thesaurusEl, "skos:ConceptScheme/dcterms:issued|skos:Collection/dc:date", theNSs); @@ -1031,12 +1038,12 @@ private void retrieveThesaurusInformation(Path thesaurusFile, String defaultTitl if (Log.isDebugEnabled(Geonet.THESAURUS_MAN)) { Log.debug(Geonet.THESAURUS_MAN, String.format( - "Thesaurus information: %s (%s)", this.title, this.date)); + "Thesaurus information: %s (%s)", this.title, this.date)); } } catch (Exception ex) { if (!ignoreMissingError) Log.error(Geonet.THESAURUS_MAN, String.format( - "Error getting thesaurus info for %s. Error is: %s", thesaurusFile, ex.getMessage())); + "Error getting thesaurus info for %s. Error is: %s", thesaurusFile, ex.getMessage())); } } @@ -1064,12 +1071,11 @@ private Date parseThesaurusDate(Element dateEl) { StringBuffer errorMsg = new StringBuffer("Error parsing the thesaurus date value: "); errorMsg.append(dateVal); - boolean success = false; for (SimpleDateFormat df : dfList) { try { thesaurusDate = df.parse(dateVal); - success = true; + return thesaurusDate; } catch (Exception ex) { // Ignore the exception and try next format errorMsg.append("\n * with format: "); @@ -1079,11 +1085,9 @@ private Date parseThesaurusDate(Element dateEl) { } } // Report error if no success - if (!success) { - errorMsg.append("\nCheck thesaurus date in "); - errorMsg.append(this.fname); - Log.error(Geonet.THESAURUS_MAN, errorMsg.toString()); - } + errorMsg.append("\nCheck thesaurus date in "); + errorMsg.append(this.fname); + Log.error(Geonet.THESAURUS_MAN, errorMsg.toString()); return thesaurusDate; } @@ -1140,9 +1144,9 @@ public KeywordBean getKeyword(String uri, String... languages) { try { Query query = QueryBuilder - .keywordQueryBuilder(getIsoLanguageMapper(), languages) - .where(Wheres.ID(uri)) - .build(); + .keywordQueryBuilder(getIsoLanguageMapper(), languages) + .where(Wheres.ID(uri)) + .build(); keywords = query.execute(this); } catch (Exception e) { @@ -1168,9 +1172,9 @@ public List getTopConcepts(String... languages) { try { Query query = QueryBuilder - .keywordQueryBuilder(getIsoLanguageMapper(), languages) - .select(Selectors.TOPCONCEPTS, true) - .build(); + .keywordQueryBuilder(getIsoLanguageMapper(), languages) + .select(Selectors.TOPCONCEPTS, true) + .build(); keywords = query.execute(this); } catch (Exception e) { @@ -1238,9 +1242,9 @@ public boolean hasBroader(String uri) { */ public List getRelated(String uri, KeywordRelation request, String... languages) { Query query = QueryBuilder - .keywordQueryBuilder(getIsoLanguageMapper(), languages) - .select(Selectors.related(uri, request), true) - .build(); + .keywordQueryBuilder(getIsoLanguageMapper(), languages) + .select(Selectors.related(uri, request), true) + .build(); try { return query.execute(this); @@ -1275,9 +1279,9 @@ public boolean hasKeywordWithLabel(String label, String langCode) { */ public KeywordBean getKeywordWithLabel(String label, String langCode) { Query query = QueryBuilder - .keywordQueryBuilder(getIsoLanguageMapper(), langCode) - .where(Wheres.prefLabel(langCode, label)) - .build(); + .keywordQueryBuilder(getIsoLanguageMapper(), langCode) + .where(Wheres.prefLabel(langCode, label)) + .build(); List matchingKeywords; @@ -1307,7 +1311,7 @@ public Map getTitles(ApplicationContext context) throws JDOMExce return LangUtils.translate(context, getKey()); } - public List getKeywordHierarchy(String keywordLabel, String langCode) { + public List getKeywordHierarchy(String keywordLabel, String langCode) { String cacheKey = "getKeywordHierarchy" + keywordLabel + langCode; Object cacheValue = THESAURUS_SEARCH_CACHE.getIfPresent(cacheKey); if (cacheValue != null) { @@ -1315,26 +1319,26 @@ public List getKeywordHierarchy(String keywordLabel, String langCode) { } boolean isUri = keywordLabel.startsWith("http"); KeywordBean term = - isUri - ? this.getKeyword(keywordLabel, langCode) - : this.getKeywordWithLabel(keywordLabel, langCode); + isUri + ? this.getKeyword(keywordLabel, langCode) + : this.getKeywordWithLabel(keywordLabel, langCode); - List> result = this.classify(term, langCode); + List> result = this.classify(term, langCode); - List hierarchies = new ArrayList<>(); - for ( List hierachy : result) { + List hierarchies = new ArrayList<>(); + for (List hierachy : result) { String path = hierachy.stream() - .map(k -> isUri ? k.getUriCode() : k.getPreferredLabel(langCode)) - .collect(Collectors.joining("^")); + .map(k -> isUri ? k.getUriCode() : k.getPreferredLabel(langCode)) + .collect(Collectors.joining("^")); hierarchies.add(path); } THESAURUS_SEARCH_CACHE.put(cacheKey, hierarchies); return hierarchies; } - public List> classify(KeywordBean term, String langCode) { + public List> classify(KeywordBean term, String langCode) { - List> result = new ArrayList<>(); + List> result = new ArrayList<>(); if (this.hasBroader(term.getUriCode())) { result.addAll(classifyTermWithBroaderTerms(term, langCode)); } else { @@ -1343,16 +1347,16 @@ public List> classify(KeywordBean term, String langCode) return result; } - private List> classifyTermWithBroaderTerms(KeywordBean term, String langCode) { - List> result = new ArrayList<>(); - for (ArrayList stringToBroaderTerm : classifyBroaderTerms(term, langCode)) { + private List> classifyTermWithBroaderTerms(KeywordBean term, String langCode) { + List> result = new ArrayList<>(); + for (ArrayList stringToBroaderTerm : classifyBroaderTerms(term, langCode)) { stringToBroaderTerm.add(term); result.add(stringToBroaderTerm); } return result; } - private List> classifyBroaderTerms(KeywordBean term, String langCode) { + private List> classifyBroaderTerms(KeywordBean term, String langCode) { List> result = new ArrayList<>(); List narrowerList = this.getNarrower(term.getUriCode(), langCode); for (KeywordBean broaderTerm : this.getBroader(term.getUriCode(), langCode)) { @@ -1364,8 +1368,8 @@ private List> classifyBroaderTerms(KeywordBean term, Str return result; } - private ArrayList classifyTermWithNoBroaderTerms(KeywordBean term) { - ArrayList list = new ArrayList <>(); + private ArrayList classifyTermWithNoBroaderTerms(KeywordBean term) { + ArrayList list = new ArrayList<>(); list.add(term); return list; } diff --git a/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java b/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java index f2f159c029c..7464a267735 100644 --- a/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java +++ b/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java @@ -582,7 +582,11 @@ public AbstractMetadata insertMetadata(ServiceContext context, AbstractMetadata // Check if the schema is allowed by settings String mdImportSetting = settingManager.getValue(Settings.METADATA_IMPORT_RESTRICT); - if (mdImportSetting != null && !mdImportSetting.equals("")) { + if (mdImportSetting != null) { + // Remove spaces from the list so that "iso19115-3.2018, dublin-core" will also work + mdImportSetting = mdImportSetting.replace(" ", ""); + } + if (!StringUtils.isBlank(mdImportSetting)) { if (!newMetadata.getHarvestInfo().isHarvested() && !Arrays.asList(mdImportSetting.split(",")).contains(schema)) { throw new IllegalArgumentException("The system setting '" + Settings.METADATA_IMPORT_RESTRICT + "' doesn't allow to import " + schema diff --git a/core/src/main/java/org/fao/geonet/kernel/metadata/DefaultStatusActions.java b/core/src/main/java/org/fao/geonet/kernel/metadata/DefaultStatusActions.java index cdb7a8bf8f7..58cc82a4459 100644 --- a/core/src/main/java/org/fao/geonet/kernel/metadata/DefaultStatusActions.java +++ b/core/src/main/java/org/fao/geonet/kernel/metadata/DefaultStatusActions.java @@ -1,5 +1,5 @@ //============================================================================= -//=== Copyright (C) 2001-2023 Food and Agriculture Organization of the +//=== Copyright (C) 2001-2024 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) //=== and United Nations Environment Programme (UNEP) //=== @@ -369,6 +369,25 @@ protected List getUserToNotify(MetadataStatus status) { return new ArrayList<>(); } + // If status is DRAFT and previous status is SUBMITTED, which means either: + // - a cancel working copy (from editor) --> should be notified the reviewer. + // - rejection (from reviewer) --> should be notified the editor. + // and the notification level is recordUserAuthor or recordProfileReviewer, + // then adjust the notification level, depending on the user role + if ((status.getStatusValue().getId() == Integer.parseInt(StatusValue.Status.DRAFT)) && + (!StringUtils.isEmpty(status.getPreviousState()) && + (status.getPreviousState().equals(StatusValue.Status.SUBMITTED))) && + (notificationLevel.equals(StatusValueNotificationLevel.recordUserAuthor) || (notificationLevel.equals(StatusValueNotificationLevel.recordProfileReviewer)))) { + UserRepository userRepository = ApplicationContextHolder.get().getBean(UserRepository.class); + Optional user = userRepository.findById(status.getUserId()); + if (user.isPresent()) { + if (user.get().getProfile() == Profile.Editor) { + notificationLevel = StatusValueNotificationLevel.recordProfileReviewer; + } else { + notificationLevel = StatusValueNotificationLevel.recordUserAuthor; + } + } + } // TODO: Status does not provide batch update // So taking care of one record at a time. // Currently the code could notify a mix of reviewers diff --git a/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java b/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java index bfd783bc5f4..978ab63a750 100644 --- a/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java +++ b/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java @@ -29,8 +29,8 @@ import co.elastic.clients.elasticsearch.core.bulk.BulkOperation; import co.elastic.clients.elasticsearch.core.bulk.UpdateOperation; import co.elastic.clients.elasticsearch.core.search.Hit; -import co.elastic.clients.elasticsearch.indices.*; import co.elastic.clients.elasticsearch.indices.ExistsRequest; +import co.elastic.clients.elasticsearch.indices.*; import co.elastic.clients.transport.endpoints.BooleanResponse; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; @@ -73,8 +73,7 @@ import java.util.*; import static org.fao.geonet.constants.Geonet.IndexFieldNames.IS_TEMPLATE; -import static org.fao.geonet.kernel.search.IndexFields.INDEXING_ERROR_FIELD; -import static org.fao.geonet.kernel.search.IndexFields.INDEXING_ERROR_MSG; +import static org.fao.geonet.kernel.search.IndexFields.*; public class EsSearchManager implements ISearchManager { @@ -216,7 +215,6 @@ private void addMDFields(Element doc, Path schemaDir, doc.addContent(new Element(INDEXING_ERROR_FIELD).setText("true")); doc.addContent(createIndexingErrorMsgElement("indexingErrorMsg-indexingStyleSheetError", "error", Map.of("message", e.getMessage()))); - doc.addContent(new Element(IndexFields.DRAFT).setText("n")); } } @@ -225,7 +223,7 @@ private void addMoreFields(Element doc, Multimap fields) { fields.entries().forEach(e -> { Element newElement = new Element(e.getKey()) .setText(String.valueOf(e.getValue())); - if(objectFields.contains(e.getKey())) { + if (objectFields.contains(e.getKey())) { newElement.setAttribute("type", "object"); } doc.addContent(newElement); @@ -349,6 +347,7 @@ public BulkResponse updateFields(String id, Multimap fields, Set fields.asMap().forEach((e, v) -> fieldMap.put(e, v.toArray())); return updateFields(id, fieldMap, fieldsToRemove); } + public BulkResponse updateFields(String id, Map fieldMap, Set fieldsToRemove) throws IOException { fieldMap.put(Geonet.IndexFieldNames.INDEXING_DATE, new Date()); @@ -404,7 +403,7 @@ public void updateFieldsAsynch(String id, Map fields) { if (exception != null) { LOGGER.error("Failed to index {}", exception); } else { - LOGGER.info("Updated fields for document {}", id); + LOGGER.info("Updated fields for document {}", id); } }); } @@ -479,7 +478,7 @@ private void sendDocumentsToIndex() { } catch (Exception e) { LOGGER.error( "An error occurred while indexing {} documents in current indexing list. Error is {}.", - listOfDocumentsToIndex.size(), e.getMessage()); + listOfDocumentsToIndex.size(), e.getMessage()); } finally { // TODO: Trigger this async ? documents.keySet().forEach(uuid -> overviewFieldUpdater.process(uuid)); @@ -502,6 +501,7 @@ private void checkIndexResponse(BulkResponse bulkItemResponses, String id = ""; String uuid = ""; String isTemplate = ""; + String isDraft = ""; String failureDoc = documents.get(e.id()); try { @@ -510,13 +510,14 @@ private void checkIndexResponse(BulkResponse bulkItemResponses, id = node.get(IndexFields.DBID).asText(); uuid = node.get("uuid").asText(); isTemplate = node.get(IS_TEMPLATE).asText(); + isDraft = node.get(DRAFT).asText(); } catch (Exception ignoredException) { } docWithErrorInfo.put(IndexFields.DBID, id); docWithErrorInfo.put("uuid", uuid); docWithErrorInfo.put(IndexFields.RESOURCE_TITLE, resourceTitle); docWithErrorInfo.put(IS_TEMPLATE, isTemplate); - docWithErrorInfo.put(IndexFields.DRAFT, "n"); + docWithErrorInfo.put(IndexFields.DRAFT, isDraft); docWithErrorInfo.put(INDEXING_ERROR_FIELD, true); ArrayNode errors = docWithErrorInfo.putArray(INDEXING_ERROR_MSG); errors.add(createIndexingErrorMsgObject(e.error().reason(), "error", Map.of())); @@ -539,7 +540,7 @@ private void checkIndexResponse(BulkResponse bulkItemResponses, BulkResponse response = client.bulkRequest(defaultIndex, listErrorOfDocumentsToIndex); if (response.errors()) { LOGGER.error("Failed to save error documents {}.", - Arrays.toString(errorDocumentIds.toArray())); + Arrays.toString(errorDocumentIds.toArray())); } } } @@ -573,6 +574,7 @@ private void checkIndexResponse(BulkResponse bulkItemResponses, .add("status_text") .add("coordinateSystem") .add("identifier") + .add("maintenance") .add("responsibleParty") .add("mdLanguage") .add("otherLanguage") @@ -674,7 +676,7 @@ public ObjectNode documentToJson(Element xml) { mapper.readTree(node.getTextNormalize())); } catch (IOException e) { LOGGER.error("Parsing invalid JSON node {} for property {}. Error is: {}", - node.getTextNormalize(), propertyName, e.getMessage()); + node.getTextNormalize(), propertyName, e.getMessage()); } } else { arrayNode.add( @@ -693,7 +695,7 @@ public ObjectNode documentToJson(Element xml) { )); } catch (IOException e) { LOGGER.error("Parsing invalid JSON node {} for property {}. Error is: {}", - nodeElements.get(0).getTextNormalize(), propertyName, e.getMessage()); + nodeElements.get(0).getTextNormalize(), propertyName, e.getMessage()); } } else { doc.put(propertyName, @@ -706,7 +708,8 @@ public ObjectNode documentToJson(Element xml) { } - /** Field starting with _ not supported in Kibana + /** + * Field starting with _ not supported in Kibana * Those are usually GN internal fields */ private String getPropertyName(String name) { @@ -934,12 +937,12 @@ public boolean isIndexWritable(String indexName) throws IOException, Elasticsear String indexBlockRead = "index.blocks.read_only_allow_delete"; GetIndicesSettingsRequest request = GetIndicesSettingsRequest.of( - b -> b.index(indexName) - .name(indexBlockRead) + b -> b.index(indexName) + .name(indexBlockRead) ); GetIndicesSettingsResponse settings = this.client.getClient() - .indices().getSettings(request); + .indices().getSettings(request); IndexState indexState = settings.get(indexBlockRead); @@ -950,7 +953,7 @@ public boolean isIndexWritable(String indexName) throws IOException, Elasticsear /** * Make a JSON Object that properly represents an indexingErrorMsg, to be used in the index. * - * @param type either 'error' or 'warning' + * @param type either 'error' or 'warning' * @param string a string that is translatable (see, e.g., en-search.json) * @param values values that replace the placeholders in the `string` parameter * @return a json object that represents an indexingErrorMsg @@ -961,7 +964,7 @@ public ObjectNode createIndexingErrorMsgObject(String string, String type, Map valuesObject.put(k, String.valueOf(v))); + values.forEach((k, v) -> valuesObject.put(k, String.valueOf(v))); indexingErrorMsg.set("values", valuesObject); return indexingErrorMsg; } @@ -969,7 +972,7 @@ public ObjectNode createIndexingErrorMsgObject(String string, String type, Map { + String parsed = new String(header.getBytes(ISO_8859_1), UTF_8); + return ALLOWED_HEADER_VALUE_PATTERN.matcher(parsed).matches(); + }); + } +} diff --git a/core/src/test/java/org/fao/geonet/kernel/AbstractGeonetworkDataDirectoryTest.java b/core/src/test/java/org/fao/geonet/kernel/AbstractGeonetworkDataDirectoryTest.java index 7f7f4b26b4a..63624516b09 100644 --- a/core/src/test/java/org/fao/geonet/kernel/AbstractGeonetworkDataDirectoryTest.java +++ b/core/src/test/java/org/fao/geonet/kernel/AbstractGeonetworkDataDirectoryTest.java @@ -26,6 +26,8 @@ import jeeves.server.ServiceConfig; import org.fao.geonet.AbstractCoreIntegrationTest; +import org.fao.geonet.constants.Geonet; +import org.fao.geonet.exceptions.BadParameterEx; import org.jdom.Element; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -34,7 +36,7 @@ import java.nio.file.Path; import java.util.ArrayList; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; /** * Abstract class for GeonetworkDataDirectory tests where the data directory layout is a default @@ -76,6 +78,29 @@ public void testInit() throws Exception { assertSystemDirSubFolders(expectedDataDir); } + @Test + public void testGetXsltConversion() { + Path xsltConversion = dataDirectory.getXsltConversion("conversion"); + assertEquals(dataDirectory.getWebappDir().resolve(Geonet.Path.IMPORT_STYLESHEETS).resolve("conversion.xsl"), xsltConversion); + try { + dataDirectory.getXsltConversion("../conversion"); + } catch (BadParameterEx e) { + assertEquals("../conversion is not a valid value for: Invalid character found in path.", e.getMessage()); + } + + xsltConversion = dataDirectory.getXsltConversion("schema:iso19115-3.2018:convert/fromISO19115-3.2014"); + assertNotNull(xsltConversion); + try { + dataDirectory.getXsltConversion("schema:notExistingSchema:convert/fromISO19115-3.2014"); + } catch (BadParameterEx e) { + assertEquals("Conversion not found. Schema 'notExistingSchema' is not registered in this catalog.", e.getMessage()); + } + try { + dataDirectory.getXsltConversion("schema:iso19115-3.2018:../../custom/path"); + } catch (BadParameterEx e) { + assertEquals("../../custom/path is not a valid value for: Invalid character found in path.", e.getMessage()); + } + } private void assertSystemDirSubFolders(Path expectedDataDir) { final Path expectedConfigDir = expectedDataDir.resolve("config"); assertEquals(expectedConfigDir, dataDirectory.getConfigDir()); diff --git a/core/src/test/resources/org/fao/geonet/api/Messages.properties b/core/src/test/resources/org/fao/geonet/api/Messages.properties index 33b48c12df8..823338a3a32 100644 --- a/core/src/test/resources/org/fao/geonet/api/Messages.properties +++ b/core/src/test/resources/org/fao/geonet/api/Messages.properties @@ -54,8 +54,7 @@ user_password_changed='%s' password was updated. user_password_notchanged=A problem occurred trying to change '%s' password. Contact the helpdesk. user_password_invalid_changekey='%s' is an invalid change key for '%s'. Change keys are only valid for one day. user_registered=User '%s' registered. -user_with_that_email_found=A user with this email or username already exists. -user_with_that_username_found=A user with this email or username already exists. +user_with_that_email_username_found=A user with this email or username already exists. register_email_admin_subject=%s / New account for %s as %s register_email_admin_message=Dear Admin,\n\ Newly registered user %s has requested %s access for %s.\n\ @@ -211,6 +210,10 @@ exception.doi.serverErrorDelete=Error deleting DOI exception.doi.serverErrorDelete.description=Error deleting DOI: {0} exception.doi.serverErrorUnregister=Error unregistering DOI exception.doi.serverErrorUnregister.description=Error unregistering DOI: {0} +exception.doi.serverCanNotHandleRecord=DOI server can not handle the metadata +exception.doi.serverCanNotHandleRecord.description=DOI server ''{0}'' can not handle the metadata with UUID ''{1}'' +exception.doi.configurationMissing=DOI server configuration is not complete +exception.doi.configurationMissing.description=DOI server configuration is not complete. Check the DOI server configuration to complete it exception.doi.notSupportedOperationError=Operation not supported exception.doi.notSupportedOperationError.description={0} api.metadata.import.importedWithId=Metadata imported with ID '%s' diff --git a/core/src/test/resources/org/fao/geonet/api/Messages_fre.properties b/core/src/test/resources/org/fao/geonet/api/Messages_fre.properties index 178db7cba12..d93b300f600 100644 --- a/core/src/test/resources/org/fao/geonet/api/Messages_fre.properties +++ b/core/src/test/resources/org/fao/geonet/api/Messages_fre.properties @@ -53,8 +53,7 @@ user_password_sent=Si l''utilisateur existe, vous recevrez un courriel contenant user_password_changed=Le mot de passe de %s a \u00E9t\u00E9 mis \u00E0 jour. user_password_notchanged=\u00C9chec lors du changement de mot de passe de %s. Contactez le support. user_password_invalid_changekey=%s est une cl\u00E9 invalide pour %s. Les cl\u00E9s ne sont valides que pendant une journ\u00E9e. -user_with_that_email_found=Un utilisateur avec cette adresse email ou ce nom d''utilisateur existe d\u00E9j\u00E0. -user_with_that_username_found=Un utilisateur avec cette adresse email ou ce nom d''utilisateur existe d\u00E9j\u00E0. +user_with_that_email_username_found=Un utilisateur avec cette adresse email ou ce nom d''utilisateur existe d\u00E9j\u00E0. register_email_admin_subject=%s / Cr\u00E9ation de compte pour %s en tant que %s register_email_admin_message=Cher administrateur,\n\ L'utilisateur %s vient de demander une cr\u00E9ation de compte pour %s.\n\ @@ -203,6 +202,10 @@ exception.doi.serverErrorDelete=Erreur lors de la suppression du DOI exception.doi.serverErrorDelete.description=Erreur lors de la suppression du DOI : {0} exception.doi.serverErrorUnregister=Erreur lors de la d\u00E9sinscription du DOI exception.doi.serverErrorUnregister.description=Erreur lors de la d\u00E9sinscription du DOI {0} +exception.doi.serverCanNotHandleRecord=DOI server can not handle the metadata +exception.doi.serverCanNotHandleRecord.description=DOI server ''{0}'' can not handle the metadata with UUID ''{1}'' +exception.doi.configurationMissing=DOI server configuration is not complete +exception.doi.configurationMissing.description=DOI server configuration is not complete. Check the DOI server configuration to complete it exception.doi.notSupportedOperationError=Op\u00E9ration non prise en charge exception.doi.notSupportedOperationError.description={0} api.metadata.import.importedWithId=Fiche import\u00E9e avec l'ID '%s' diff --git a/csw-server/src/main/java/org/fao/geonet/component/csw/GetCapabilities.java b/csw-server/src/main/java/org/fao/geonet/component/csw/GetCapabilities.java index 50f0a420200..72f0dc19c43 100644 --- a/csw-server/src/main/java/org/fao/geonet/component/csw/GetCapabilities.java +++ b/csw-server/src/main/java/org/fao/geonet/component/csw/GetCapabilities.java @@ -65,6 +65,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import static org.fao.geonet.kernel.setting.SettingManager.isPortRequired; @@ -529,6 +530,8 @@ private void setOperationsParameters(Element capabilities) { */ private void populateTypeNameAndOutputSchema(Element op) { Map typenames = _schemaManager.getHmSchemasTypenames(); + List outputSchemas = _schemaManager.getOutputSchemas().values().stream().sorted().collect(Collectors.toList()); + List operations = op.getChildren("Parameter", Csw.NAMESPACE_OWS); for (Element operation : operations) { if ("typeNames".equals(operation.getAttributeValue("name"))) { @@ -541,12 +544,10 @@ private void populateTypeNameAndOutputSchema(Element op) { .setText(typename)); } } else if ("outputSchema".equals(operation.getAttributeValue("name"))) { - for (Map.Entry entry : typenames.entrySet()) { - Namespace ns = entry.getValue(); - operation.addNamespaceDeclaration(ns); + outputSchemas.forEach(uri -> operation.addContent(new Element("Value", Csw.NAMESPACE_OWS) - .setText(ns.getURI())); - } + .setText(uri)) + ); } } } diff --git a/csw-server/src/main/java/org/fao/geonet/csw/common/OutputSchema.java b/csw-server/src/main/java/org/fao/geonet/csw/common/OutputSchema.java index 9b156b71541..c6d65519c47 100644 --- a/csw-server/src/main/java/org/fao/geonet/csw/common/OutputSchema.java +++ b/csw-server/src/main/java/org/fao/geonet/csw/common/OutputSchema.java @@ -78,16 +78,16 @@ public static String parse(String schema, SchemaManager schemaManager) throws In if (schema.equals("csw:IsoRecord")) return "gmd"; if (schema.equals("own")) return "own"; - Map typenames = schemaManager.getHmSchemasTypenames(); - for (Map.Entry entry : typenames.entrySet()) { - Namespace ns = entry.getValue(); - if (schema.equals(ns.getURI())) { - return ns.getPrefix(); + Map typenames = schemaManager.getOutputSchemas(); + for (Map.Entry entry : typenames.entrySet()) { + String ns = entry.getValue(); + if (schema.equals(ns)) { + return entry.getKey(); } } throw new InvalidParameterValueEx("outputSchema", - String.format("'%s' schema is not valid. Supported values are %s", + String.format("'%s' output schema is not valid. Supported values are %s", schema, schemaManager.getListOfOutputSchemaURI().toString())); } diff --git a/csw-server/src/main/java/org/fao/geonet/csw/common/util/Xml.java b/csw-server/src/main/java/org/fao/geonet/csw/common/util/Xml.java index 51bdeffe793..c5ab2c8053a 100644 --- a/csw-server/src/main/java/org/fao/geonet/csw/common/util/Xml.java +++ b/csw-server/src/main/java/org/fao/geonet/csw/common/util/Xml.java @@ -125,22 +125,24 @@ public static Element applyElementSetName(ServiceContext context, SchemaManager ResultType resultType, String id, String displayLanguage) throws InvalidParameterValueEx { Path schemaDir = schemaManager.getSchemaCSWPresentDir(schema); Path styleSheet = schemaDir.resolve(outputSchema + "-" + elementSetName + ".xsl"); + Path styleSheetWithoutElementSet = schemaDir.resolve(outputSchema + ".xsl"); - if (!Files.exists(styleSheet)) { + if (!Files.exists(styleSheet) && !Files.exists(styleSheetWithoutElementSet)) { throw new InvalidParameterValueEx("OutputSchema", String.format( - "OutputSchema '%s' not supported for metadata with '%s' (%s).\nCorresponding XSL transformation '%s' does not exist for this schema.\nThe record will not be returned in response.", - outputSchema, id, schema, styleSheet.getFileName())); + "OutputSchema '%s' not supported for metadata with '%s' (%s).\nCorresponding XSL transformation '%s' (or '%s') does not exist for this schema.\nThe record will not be returned in response.", + outputSchema, id, schema, styleSheet.getFileName(), styleSheetWithoutElementSet.getFileName())); } else { Map params = new HashMap<>(); params.put("lang", displayLanguage); + Path xslFile = Files.exists(styleSheet) ? styleSheet : styleSheetWithoutElementSet; try { - result = org.fao.geonet.utils.Xml.transform(result, styleSheet, params); + result = org.fao.geonet.utils.Xml.transform(result, xslFile, params); } catch (Exception e) { String msg = String.format( - "Error occured while transforming metadata with id '%s' using '%s'.", - id, styleSheet.getFileName()); + "Error occurred while transforming metadata with id '%s' using '%s'.", + id, xslFile.getFileName()); context.error(msg); context.error(" (C) StackTrace:\n" + Util.getStackTrace(e)); throw new InvalidParameterValueEx("OutputSchema", msg); diff --git a/csw-server/src/main/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2Es.java b/csw-server/src/main/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2Es.java index 2122a8c4a10..d77bfd28818 100644 --- a/csw-server/src/main/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2Es.java +++ b/csw-server/src/main/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2Es.java @@ -29,6 +29,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.fao.geonet.constants.Geonet; import org.fao.geonet.kernel.csw.services.getrecords.IFieldMapper; +import org.fao.geonet.utils.DateUtil; import org.fao.geonet.utils.Log; import org.geotools.api.filter.*; import org.geotools.api.filter.expression.Expression; @@ -338,7 +339,11 @@ public Object visitRange(BinaryComparisonOperator filter, String operator, Objec String dataPropertyValue = stack.pop(); String dataPropertyName = stack.pop(); - if (!NumberUtils.isNumber(dataPropertyValue)) { + boolean isDate = (DateUtil.parseBasicOrFullDateTime(dataPropertyValue) != null); + + if (isDate) { + dataPropertyValue = CswFilter2Es.quoteString(dataPropertyValue); + } else if (!NumberUtils.isNumber(dataPropertyValue)) { dataPropertyValue = StringEscapeUtils.escapeJson(CswFilter2Es.quoteString(dataPropertyValue)); } diff --git a/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2EsTest.java b/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2EsTest.java index f8a31dabbfb..98770670563 100644 --- a/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2EsTest.java +++ b/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/CswFilter2EsTest.java @@ -381,4 +381,27 @@ void assertFilterEquals(JsonNode expected, String actual, String filterSpecVersi assertEquals(expected, MAPPER.readTree(new StringReader(result))); } + + + @Test + void testPropertyIsGreaterThanDateValue() throws IOException { + + // INPUT: + final String input = + " \n" + + " \n" + + " Modified\n" + + " 1910-02-05\n" + + " \n" + + " "; + + // EXPECTED: + final ObjectNode expected = EsJsonHelper.boolbdr(). // + must(array(range("Modified", "gt", "1910-02-05"))). // + filter(queryStringPart()). // + bld(); + + + assertFilterEquals(expected, input); + } } diff --git a/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/EsJsonHelper.java b/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/EsJsonHelper.java index 629247c8825..f727509808a 100644 --- a/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/EsJsonHelper.java +++ b/csw-server/src/test/java/org/fao/geonet/kernel/csw/services/getrecords/es/EsJsonHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2023 Food and Agriculture Organization of the + * Copyright (C) 2001-2024 Food and Agriculture Organization of the * United Nations (FAO-UN), United Nations World Food Programme (WFP) * and United Nations Environment Programme (UNEP) * @@ -62,6 +62,35 @@ public static ObjectNode match(String property, String matchString) { return outer; } + + /** + * Returns a structure like + * + *

+     *  { "range":
+     *    {
+     *      "gt": "value"
+     *    }
+     * 
+ * + * @param property + * @param operator + * @param matchString + * @return + */ + public static ObjectNode range(String property, String operator, String matchString) { + final ObjectNode rangeOperatorObject = MAPPER.createObjectNode(); + rangeOperatorObject.put(operator, matchString); + + final ObjectNode rangeObject = MAPPER.createObjectNode(); + rangeObject.put(property, rangeOperatorObject); + + final ObjectNode outer = MAPPER.createObjectNode(); + outer.set("range", rangeObject); + return outer; + } + + private static ArrayNode bound(double x, double y) { final ArrayNode bound = MAPPER.createArrayNode(); bound.add(x); diff --git a/datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java b/datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java index cc39c8d2d78..a158ae9a319 100644 --- a/datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java +++ b/datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java @@ -1,6 +1,6 @@ /* * ============================================================================= - * === Copyright (C) 2001-2016 Food and Agriculture Organization of the + * === Copyright (C) 2001-2024 Food and Agriculture Organization of the * === United Nations (FAO-UN), United Nations World Food Programme (WFP) * === and United Nations Environment Programme (UNEP) * === @@ -391,6 +391,7 @@ public String delResources(final ServiceContext context, final int metadataId) t folderKey = getMetadataDir(context, metadataId); final Folder folder = cmisUtils.getFolderCache(folderKey, true); + Log.info(Geonet.RESOURCES, String.format("Deleting the folder of '%s' and the files within the folder", folderKey)); folder.deleteTree(true, UnfileObject.DELETE, true); cmisUtils.invalidateFolderCache(folderKey); @@ -423,13 +424,9 @@ public String delResource(final ServiceContext context, final String metadataUui for (MetadataResourceVisibility visibility : MetadataResourceVisibility.values()) { if (tryDelResource(context, metadataUuid, metadataId, visibility, resourceId)) { - Log.info(Geonet.RESOURCES, - String.format("MetadataResource '%s' removed.", resourceId)); - return String.format("MetadataResource '%s' removed.", resourceId); + return String.format("Metadata resource '%s' removed.", resourceId); } } - Log.info(Geonet.RESOURCES, - String.format("Unable to remove resource '%s'.", resourceId)); return String.format("Unable to remove resource '%s'.", resourceId); } @@ -438,12 +435,8 @@ public String delResource(final ServiceContext context, final String metadataUui final String resourceId, Boolean approved) throws Exception { int metadataId = canEdit(context, metadataUuid, approved); if (tryDelResource(context, metadataUuid, metadataId, visibility, resourceId)) { - Log.info(Geonet.RESOURCES, - String.format("MetadataResource '%s' removed.", resourceId)); - return String.format("MetadataResource '%s' removed.", resourceId); + return String.format("Metadata resource '%s' removed.", resourceId); } - Log.info(Geonet.RESOURCES, - String.format("Unable to remove resource '%s'.", resourceId)); return String.format("Unable to remove resource '%s'.", resourceId); } @@ -458,6 +451,8 @@ protected boolean tryDelResource(final ServiceContext context, final String meta try { final CmisObject object = cmisConfiguration.getClient().getObjectByPath(key, oc); object.delete(); + Log.info(Geonet.RESOURCES, + String.format("Resource '%s' removed for metadata %d (%s).", resourceId, metadataId, metadataUuid)); if (object instanceof Folder) { cmisUtils.invalidateFolderCacheItem(key); } @@ -466,6 +461,8 @@ protected boolean tryDelResource(final ServiceContext context, final String meta //CmisPermissionDeniedException when user does not have permissions. //CmisConstraintException when there is a lock on the file from a checkout. } catch (CmisObjectNotFoundException | CmisPermissionDeniedException | CmisConstraintException e) { + Log.info(Geonet.RESOURCES, + String.format("Unable to remove resource '%s' for metadata %d (%s). %s", resourceId, metadataId, metadataUuid, e.getMessage())); return false; } } @@ -508,7 +505,9 @@ public MetadataResourceContainer getResourceContainerDescription(final ServiceCo @Override public void copyResources(ServiceContext context, String sourceUuid, String targetUuid, MetadataResourceVisibility metadataResourceVisibility, boolean sourceApproved, boolean targetApproved) throws Exception { final int sourceMetadataId = canEdit(context, sourceUuid, metadataResourceVisibility, sourceApproved); + final int targetMetadataId = canEdit(context, sourceUuid, metadataResourceVisibility, targetApproved); final String sourceResourceTypeDir = getMetadataDir(context, sourceMetadataId) + cmisConfiguration.getFolderDelimiter() + metadataResourceVisibility.toString(); + final String targetResourceTypeDir = getMetadataDir(context, targetMetadataId) + cmisConfiguration.getFolderDelimiter() + metadataResourceVisibility.toString(); try { Folder sourceParentFolder = cmisUtils.getFolderCache(sourceResourceTypeDir, true); @@ -522,6 +521,8 @@ public void copyResources(ServiceContext context, String sourceUuid, String targ for (Map.Entry sourceEntry : sourceDocumentMap.entrySet()) { Document sourceDocument = sourceEntry.getValue(); + + Log.info(Geonet.RESOURCES, String.format("Copying %s to %s" , sourceResourceTypeDir+cmisConfiguration.getFolderDelimiter()+sourceDocument.getName(), targetResourceTypeDir)); // Get cmis properties from the source document Map sourceProperties = getProperties(sourceDocument); putResource(context, targetUuid, sourceDocument.getName(), sourceDocument.getContentStream().getStream(), null, metadataResourceVisibility, targetApproved, sourceProperties); @@ -622,8 +623,10 @@ private GeonetworkDataDirectory getDataDirectory(ServiceContext context) { /** * get external resource management for the supplied resource. * Replace the following + * {objectId} type:visibility:metadataId:version:resourceId in base64 encoding * {id} resource id - * {type:folder:document} // If the type is folder then type "folder" will be displayed else if document then "document" will be displayed + * {type:folder:document} // Custom return type based on type. If the type is folder then type "folder" will be displayed else if document then "document" will be displayed + * {type} // If the type is folder then type "folder" will be displayed else if document then "document" will be displayed * {uuid} metadatauuid * {metadataid} metadataid * {visibility} visibility @@ -652,16 +655,27 @@ protected MetadataResourceExternalManagementProperties getMetadataResourceExtern ) { String metadataResourceExternalManagementPropertiesUrl = cmisConfiguration.getExternalResourceManagementUrl(); if (!StringUtils.isEmpty(metadataResourceExternalManagementPropertiesUrl)) { + // {objectid} objectId // It will be the type:visibility:metadataId:version:resourceId in base64 + // i.e. folder::100::100 # Folder in resource 100 + // i.e. document:public:100:v1:sample.jpg # public document 100 version v1 name sample.jpg + if (metadataResourceExternalManagementPropertiesUrl.contains("{objectid}")) { + metadataResourceExternalManagementPropertiesUrl = metadataResourceExternalManagementPropertiesUrl.replaceAll("(\\{objectid\\})", + getResourceManagementExternalPropertiesObjectId((type == null ? "document" : (type instanceof Folder ? "folder" : "document")), visibility, metadataId, version, resourceId)); + } // {id} id if (metadataResourceExternalManagementPropertiesUrl.contains("{id}")) { metadataResourceExternalManagementPropertiesUrl = metadataResourceExternalManagementPropertiesUrl.replaceAll("(\\{id\\})", (resourceId==null?"":resourceId)); } - // {type:folder:document} // If the type is folder then type "folder" will be displayed else if document then "document" will be displayed + // {type:folder:document} // Custom return type based on type. If the type is folder then type "folder" will be displayed else if document then "document" will be displayed if (metadataResourceExternalManagementPropertiesUrl.contains("{type:")) { metadataResourceExternalManagementPropertiesUrl = metadataResourceExternalManagementPropertiesUrl.replaceAll("\\{type:([a-zA-Z0-9]*?):([a-zA-Z0-9]*?)\\}", (type==null?"":(type instanceof Folder?"$1":"$2"))); } - + // {type} // If the type is folder then type "folder" will be displayed else if document then "document" will be displayed + if (metadataResourceExternalManagementPropertiesUrl.contains("{type}")) { + metadataResourceExternalManagementPropertiesUrl = metadataResourceExternalManagementPropertiesUrl.replaceAll("(\\{type\\})", + (type == null ? "document" : (type instanceof Folder ? "folder" : "document"))); + } // {uuid} metadatauuid if (metadataResourceExternalManagementPropertiesUrl.contains("{uuid}")) { metadataResourceExternalManagementPropertiesUrl = metadataResourceExternalManagementPropertiesUrl.replaceAll("(\\{uuid\\})", (metadataUuid==null?"":metadataUuid)); diff --git a/datastorages/cmis/src/main/java/org/fao/geonet/resources/CMISConfiguration.java b/datastorages/cmis/src/main/java/org/fao/geonet/resources/CMISConfiguration.java index 257ef3246d6..87b76ec0821 100644 --- a/datastorages/cmis/src/main/java/org/fao/geonet/resources/CMISConfiguration.java +++ b/datastorages/cmis/src/main/java/org/fao/geonet/resources/CMISConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2016 Food and Agriculture Organization of the + * Copyright (C) 2001-2024 Food and Agriculture Organization of the * United Nations (FAO-UN), United Nations World Food Programme (WFP) * and United Nations Environment Programme (UNEP) * @@ -59,26 +59,28 @@ public class CMISConfiguration { private Session client = null; - public final static Integer CMIS_MAX_ITEMS_PER_PAGE = 1000; - public final static String CMIS_FOLDER_DELIMITER = "/"; // Specs indicate that "/" is the folder delimiter/separator - not sure if other delimiter can be used?. - public final static String CMIS_SECONDARY_PROPERTY_SEPARATOR = "->"; - private final String CMIS_DEFAULT_WEBSERVICES_ACL_SERVICE = "/services/ACLService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_DISCOVERY_SERVICE = "/services/DiscoveryService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_MULTIFILING_SERVICE = "/services/MultiFilingService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_NAVIGATION_SERVICE = "/services/NavigationService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_OBJECT_SERVICE = "/services/ObjectService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_POLICY_SERVICE = "/services/PolicyService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_RELATIONSHIP_SERVICE = "/services/RelationshipService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_REPOSITORY_SERVICE = "/services/RepositoryService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_VERSIONING_SERVICE = "/services/VersioningService?wsdl"; - private final String CMIS_DEFAULT_WEBSERVICES_BASE_URL_SERVICE = "/cmis"; - private final String CMIS_DEFAULT_BROWSER_URL_SERVICE = "/browser"; - private final String CMIS_DEFAULT_ATOMPUB_URL_SERVICE = "/atom"; - - private final String CMIS_DEFAULT_EXTERNAL_RESOURCE_MANAGEMENT_WINDOW_PARAMETERS = "toolbar=0,width=600,height=600"; - private final Boolean CMIS_DEFAULT_EXTERNAL_RESOURCE_MANAGEMENT_MODAL_ENABLED = true; - private final Boolean CMIS_DEFAULT_EXTERNAL_RESOURCE_MANAGEMENT_FOLDER_ENABLED = true; - private final Boolean CMIS_DEFAULT_VERSIONING_ENABLED = false; + // DFO change to 100. Due to bug with open text cmis where if max is set to 1000, it will return 100 but if it is set to 100 it will return all records. + // https://dev.azure.com/foc-poc/EDH-CDE/_workitems/edit/95878 + public static final Integer CMIS_MAX_ITEMS_PER_PAGE = 100; + public static final String CMIS_FOLDER_DELIMITER = "/"; // Specs indicate that "/" is the folder delimiter/separator - not sure if other delimiter can be used?. + public static final String CMIS_SECONDARY_PROPERTY_SEPARATOR = "->"; + private static final String CMIS_DEFAULT_WEBSERVICES_ACL_SERVICE = "/services/ACLService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_DISCOVERY_SERVICE = "/services/DiscoveryService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_MULTIFILING_SERVICE = "/services/MultiFilingService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_NAVIGATION_SERVICE = "/services/NavigationService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_OBJECT_SERVICE = "/services/ObjectService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_POLICY_SERVICE = "/services/PolicyService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_RELATIONSHIP_SERVICE = "/services/RelationshipService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_REPOSITORY_SERVICE = "/services/RepositoryService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_VERSIONING_SERVICE = "/services/VersioningService?wsdl"; + private static final String CMIS_DEFAULT_WEBSERVICES_BASE_URL_SERVICE = "/cmis"; + private static final String CMIS_DEFAULT_BROWSER_URL_SERVICE = "/browser"; + private static final String CMIS_DEFAULT_ATOMPUB_URL_SERVICE = "/atom"; + + private static final String CMIS_DEFAULT_EXTERNAL_RESOURCE_MANAGEMENT_WINDOW_PARAMETERS = "toolbar=0,width=600,height=600"; + private static final Boolean CMIS_DEFAULT_EXTERNAL_RESOURCE_MANAGEMENT_MODAL_ENABLED = true; + private static final Boolean CMIS_DEFAULT_EXTERNAL_RESOURCE_MANAGEMENT_FOLDER_ENABLED = true; + private static final Boolean CMIS_DEFAULT_VERSIONING_ENABLED = false; private String servicesBaseUrl; private String bindingType; @@ -111,7 +113,6 @@ public class CMISConfiguration { * Property name for validation status that is expected to be an integer with values of null, 0, 1, 2 * (See MetadataResourceExternalManagementProperties.ValidationStatus for code meaning) * Property name follows the same format as cmisMetadataUUIDPropertyName - * * If null then validation status will default to UNKNOWN. */ private String externalResourceManagementValidationStatusPropertyName; @@ -505,7 +506,6 @@ public void setExternalResourceManagementValidationStatusPropertyName(String ext String.format("Invalid format for property name %s property will not be used", externalResourceManagementValidationStatusPropertyName)); this.externalResourceManagementValidationStatusPropertyName = null; this.externalResourceManagementValidationStatusSecondaryProperty = false; - return; } else { this.externalResourceManagementValidationStatusSecondaryProperty = true; } @@ -514,7 +514,7 @@ public void setExternalResourceManagementValidationStatusPropertyName(String ext public MetadataResourceExternalManagementProperties.ValidationStatus getValidationStatusDefaultValue() { // We only need to set the default if there is a status property supplied, and it is not already set - if (this.defaultStatus == null && !org.springframework.util.StringUtils.isEmpty(getExternalResourceManagementValidationStatusPropertyName())) { + if (this.defaultStatus == null && org.springframework.util.StringUtils.hasLength(getExternalResourceManagementValidationStatusPropertyName())) { if (getExternalResourceManagementValidationStatusDefaultValue() != null) { // If a default property name does exist then use it this.defaultStatus = MetadataResourceExternalManagementProperties.ValidationStatus.valueOf(getExternalResourceManagementValidationStatusDefaultValue()); @@ -536,9 +536,8 @@ public void init() { } // default factory implementation - Map parameters = new HashMap(); + Map parameters = new HashMap<>(); - this.baseRepositoryPath = baseRepositoryPath; if (this.baseRepositoryPath == null) { this.baseRepositoryPath = ""; } @@ -609,7 +608,7 @@ public void init() { } } } else { - // Try to find the repository name for the id that we have specified.. + // Try to find the repository name for the id that we have specified. try { for (Repository repository : factory.getRepositories(parameters)) { if (repository.getId().equalsIgnoreCase(this.repositoryId)) { @@ -633,7 +632,7 @@ public void init() { repositoryUrl + "' using product '" + client.getRepositoryInfo().getProductName() + "' version '" + client.getRepositoryInfo().getProductVersion() + "'."); - // Check if we can parse the secondary parameters from human readable to secondary ids. + // Check if we can parse the secondary parameters from human-readable to secondary ids. parsedCmisMetadataUUIDPropertyName = parseSecondaryProperty(client, cmisMetadataUUIDPropertyName); parsedExternalResourceManagementValidationStatusPropertyName = parseSecondaryProperty(client, externalResourceManagementValidationStatusPropertyName); @@ -743,7 +742,7 @@ public boolean existExternalResourceManagementValidationStatusSecondaryProperty( } /** - * Generte a full url based on the supplied entered serviceurl and the default. + * Generate a full url based on the supplied entered serviceUrl and the default. * * @param baseUrl Base url * @param serviceUrl Supplied service url (This could start with / or http. If it starts with http then ignore baseUrl) diff --git a/datastorages/cmis/src/main/resources/config-store/config-cmis-overrides.properties b/datastorages/cmis/src/main/resources/config-store/config-cmis-overrides.properties index f0a62c1920a..4c154639ca5 100644 --- a/datastorages/cmis/src/main/resources/config-store/config-cmis-overrides.properties +++ b/datastorages/cmis/src/main/resources/config-store/config-cmis-overrides.properties @@ -11,8 +11,8 @@ cmis.external.resource.management.window.parameters=${CMIS_EXTERNAL_RESOURCE_MAN cmis.external.resource.management.modal.enabled=${CMIS_EXTERNAL_RESOURCE_MANAGEMENT_MODAL_ENABLED:#{null}} cmis.external.resource.management.folder.enabled=${CMIS_EXTERNAL_RESOURCE_MANAGEMENT_FOLDER_ENABLED:#{null}} cmis.external.resource.management.folder.root=${CMIS_EXTERNAL_RESOURCE_MANAGEMENT_FOLDER_ROOT:#{null}} -cmis.external.resource.status.property.name=${CMIS_EXTERNAL_RESOURCE_STATUS_PROPERTY_NAME:#{null}} -cmis.external.resource.management.status.default.value=${CMIS_EXTERNAL_RESOURCE_MANAGEMENT_STATUS_DEFAULT_VALUE:#{null}} +cmis.external.resource.management.validation.status.property.name=${CMIS_EXTERNAL_RESOURCE_MANAGEMENT_VALIDATION_STATUS_PROPERTY_NAME:#{null}} +cmis.external.resource.management.validation.status.default.value=${CMIS_EXTERNAL_RESOURCE_MANAGEMENT_VALIDATION_STATUS_DEFAULT_VALUE:#{null}} cmis.versioning.enabled=${CMIS_VERSIONING_ENABLED:#{null}} cmis.versioning.state=#{'${CMIS_VERSIONING_STATE:MAJOR}'.toUpperCase()} diff --git a/datastorages/cmis/src/main/resources/config-store/config-cmis.xml b/datastorages/cmis/src/main/resources/config-store/config-cmis.xml index 76abe73572c..1c302788b5c 100644 --- a/datastorages/cmis/src/main/resources/config-store/config-cmis.xml +++ b/datastorages/cmis/src/main/resources/config-store/config-cmis.xml @@ -1,6 +1,6 @@ settings`: +Configure the DOI API access point to publish the metadata in the `Admin console --> Settings --> Doi servers`: -![](img/doi-admin-console.png) +![](img/doi-create-server.png) + +Providing the following information: + +- `Name`: A descriptive name for the server. +- `Description`: (Optional) A verbose description of the server. +- `DataCite API endpoint`: The API url, usually https://mds.datacite.org or https://mds.test.datacite.org for testing. +- `DataCite username` / `DataCite password`: Credentials required to publish the DOI resources. +- `Landing page URL template`: The URL to use to register the DOI. A good default for GeoNetwork is http://localhost:8080/geonetwork/srv/resources/records/{{uuid}}. The landing page URL MUST contains the UUID of the record. +- `Final DOI URL prefix`: (Optional) Keep it empty to use the default https://doi.org prefix. Use https://mds.test.datacite.org/doi when using the test API. +- `DOI pattern`: Default is `{{uuid}}` but the DOI structure can be customized with database id and/or record group eg. `example-{{groupOwner}}-{{id}}`. +- `DataCite prefix`: Usually looks like `10.xxxx`. You will be allowed to register DOI names only under the prefixes that have been assigned to you. +- `Publication groups`: (Optional) Select the groups which metadata should be published to the DOI server. If no groups are selected, the server will be provided to publish the metadata that has no other DOI servers related to the metadata owner group. A record can be downloaded using the DataCite format from the API using: diff --git a/docs/manual/docs/user-guide/associating-resources/img/doi-create-server.png b/docs/manual/docs/user-guide/associating-resources/img/doi-create-server.png new file mode 100644 index 00000000000..efccf603065 Binary files /dev/null and b/docs/manual/docs/user-guide/associating-resources/img/doi-create-server.png differ diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-csw.md b/docs/manual/docs/user-guide/harvesting/harvesting-csw.md index 614687eb471..dc94a777d4a 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-csw.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-csw.md @@ -4,16 +4,38 @@ This harvester will connect to a remote CSW server and retrieve metadata records ## Adding a CSW harvester -The figure above shows the options available: - -- **Site** - Options about the remote site. - - *Name* - This is a short description of the remote site. It will be shown in the harvesting main page as the name for this instance of the CSW harvester. - - *Service URL* - The URL of the capabilities document of the CSW server to be harvested. eg. . This document is used to discover the location of the services to call to query and retrieve metadata. - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing harvested metadata records in the search results. - - *Use account* - Account credentials for basic HTTP authentication on the CSW server. -- **Search criteria** - Using the Add button, you can add several search criteria. You can query only the fields recognised by the CSW protocol. -- **Options** - Scheduling options. -- **Options** - Specific harvesting options for this harvester. - - *Validate* - If checked, the metadata will be validated after retrieval. If the validation does not pass, the metadata will be skipped. +To create a CSW harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `CSW`: + +![](img/add-csw-harvester.png) + +Providing the following information: + +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to OGC CSW 2.0.2** + - *Service URL*: The URL of the capabilities document of the CSW server to be harvested. eg. . This document is used to discover the location of the services to call to query and retrieve metadata. + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the CSW server. + - *Search filter*: (Optional) Define the search criteria below to restrict the records to harvest. + - *Search options*: + - *Sort by*: Define sort option to retrieve the results. Sorting by 'identifier:A' means by UUID with alphabetical order. Any CSW queryables can be used in combination with A or D for setting the ordering. + - *Output Schema*: The metadata standard to request the metadata records from the CSW server. + - *Distributed search*: Enables the distributed search in remote server (if the remote server supports it). When this option is enabled, the remote catalog cascades the search to the Federated CSW servers that has configured. + +- **Configure response processing for CSW** + - *Action on UUID collision*: When a harvester finds the same uuid on a record collected by another method (another harvester, importer, dashboard editor,...), should this record be skipped (default), overriden or generate a new UUID? + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + - *Check for duplicate resources based on the resource identifier*: If checked, ignores metadata with a resource identifier (`gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation/gmd:identifier/*/gmd:code/gco:CharacterString`) that is assigned to other metadata record in the catalog. It only applies to records in ISO19139 or ISO profiles. + - *XPath filter*: (Optional) When record is retrived from remote server, check an XPath expression to accept or discard the record. + - *XSL transformation to apply*: (Optional) The referenced XSL transform will be applied to each metadata record before it is added to GeoNetwork. + - *Batch edits*: (Optional) Allows to update harvested records, using XPATH syntax. It can be used to add, replace or delete element. + - *Category*: (Optional) A GeoNetwork category to assign to each metadata record. + - **Privileges** - Assign privileges to harvested metadata. -- **Categories** diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-filesystem.md b/docs/manual/docs/user-guide/harvesting/harvesting-filesystem.md index 5e0b6b3ab54..900deeafc4c 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-filesystem.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-filesystem.md @@ -4,21 +4,35 @@ This harvester will harvest metadata as XML files from a filesystem available on ## Adding a Local File System harvester -The figure above shows the options available: - -- **Site** - Options about the remote site. - - *Name* - This is a short description of the filesystem harvester. It will be shown in the harvesting main page as the name for this instance of the Local Filesystem harvester. - - *Directory* - The path name of the directory containing the metadata (as XML files) to be harvested. - - *Recurse* - If checked and the *Directory* path contains other directories, then the harvester will traverse the entire file system tree in that directory and add all metadata files found. - - *Keep local if deleted at source* - If checked then metadata records that have already been harvested will be kept even if they have been deleted from the *Directory* specified. - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing harvested metadata records in the search results. -- **Options** - Scheduling options. -- **Harvested Content** - Options that are applied to harvested content. - - *Apply this XSLT to harvested records* - Choose an XSLT here that will convert harvested records to a different format. - - *Validate* - If checked, the metadata will be validated after retrieval. If the validation does not pass, the metadata will be skipped. -- **Privileges** - Assign privileges to harvested metadata. -- **Categories** +To create a Local File System harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `Directory`: + +![](img/add-filesystem-harvester.png) + +Providing the following information: -!!! Notes +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. - - in order to be successfully harvested, metadata records retrieved from the file system must match a metadata schema in the local GeoNetwork instance +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to Directory** + - *Directory*: The path name of the directory containing the metadata (as XML files) to be harvested. The directory must be accessible by GeoNetwork. + - *Also search in subfolders*: If checked and the *Directory* path contains other directories, then the harvester will traverse the entire file system tree in that directory and add all metadata files found. + - *Script to run before harvesting* + - *Type of record* + +- **Configure response processing for filesystem** + - *Action on UUID collision*: When a harvester finds the same uuid on a record collected by another method (another harvester, importer, dashboard editor,...), should this record be skipped (default), overriden or generate a new UUID? + - *Update catalog record only if file was updated* + - *Keep local even if deleted at source*: If checked then metadata records that have already been harvested will be kept even if they have been deleted from the *Directory* specified. + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + - *XSL transformation to apply*: (Optional) The referenced XSL transform will be applied to each metadata record before it is added to GeoNetwork. + - *Batch edits*: (Optional) Allows to update harvested records, using XPATH syntax. It can be used to add, replace or delete element. + - *Category*: (Optional) A GeoNetwork category to assign to each metadata record. + +- **Privileges** - Assign privileges to harvested metadata. diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork-2.md b/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork-2.md new file mode 100644 index 00000000000..de085a9bb9b --- /dev/null +++ b/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork-2.md @@ -0,0 +1,9 @@ +# GeoNetwork 2.0 Harvester {#gn2_harvester} + +## Upgrading from GeoNetwork 2.0 Guidance + +GeoNetwork 2.1 introduced a new powerful harvesting engine which is not compatible with GeoNetwork version 2.0 based catalogues. + +* Harvesting metadata from a v2.0 server requires this harvesting type. +* Old 2.0 servers can still harvest from 2.1 servers +* Due to the fact that GeoNetwork 2.0 is no longer suitable for production use, this harvesting type is deprecated. diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork.md b/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork.md index de085a9bb9b..3c692b5e3ec 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-geonetwork.md @@ -1,9 +1,43 @@ -# GeoNetwork 2.0 Harvester {#gn2_harvester} +# GeoNetwork 2.1-3.X Harvester -## Upgrading from GeoNetwork 2.0 Guidance +This harvester will connect to a remote GeoNetwork server that uses versions from 2.1-3.X and retrieve metadata records that match the query parameters. -GeoNetwork 2.1 introduced a new powerful harvesting engine which is not compatible with GeoNetwork version 2.0 based catalogues. +## Adding a GeoNetwork 2.1-3.X harvester -* Harvesting metadata from a v2.0 server requires this harvesting type. -* Old 2.0 servers can still harvest from 2.1 servers -* Due to the fact that GeoNetwork 2.0 is no longer suitable for production use, this harvesting type is deprecated. +To create a GeoNetwork 2.1-3.X harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `GeoNetwork (from 2.1 to 3.x)`: + +![](img/add-geonetwork-3-harvester.png) + +Providing the following information: + +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to GeoNetwork (from 2.1 to 3.x)** + - *Catalog URL*: + - The remote URL of the GeoNetwork server from which metadata will be harvested. The URL should contain the catalog name, for example: http://www.fao.org/geonetwork. + - Additionally, it should be configured the node name, usually the value `srv`. + - *Search filter*: (Optional) Define the filter to retrieve the remote metadata. + - *Catalog*: (Optional) Select the portal in the remote server to harvest. + +- **Configure response processing for GeoNetwork** + - *Action on UUID collision*: When a harvester finds the same uuid on a record collected by another method (another harvester, importer, dashboard editor,...), should this record be skipped (default), overriden or generate a new UUID? + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the WebDAV/WAF server. + - *Use full MEF format*: If checked, uses MEF format instead of XML to retrieve the remote metadata. Recommended to metadata with files. + - *Use change date for comparison*: If checked, uses change date to detect changes on remote server. + - *Set category if it exists locally*: If checked, uses the category set on the metadata in the remote server also locally (assuming it exists locally). Applies only when using MEF format for the harvesting. + - *Category*: (Optional) A GeoNetwork category to assign to each metadata record. + - *XSL filter name to apply*: (Optional) The XSL filter is applied to each metadata record. The filter is a process which depends on the schema (see the `process` folder of the schemas). + + It could be composed of parameter which will be sent to XSL transformation using the following syntax: `anonymizer?protocol=MYLOCALNETWORK:FILEPATH&email=gis@organisation.org&thesaurus=MYORGONLYTHEASURUS` + + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + +- **Privileges** - Assign privileges to harvested metadata. diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-geoportal.md b/docs/manual/docs/user-guide/harvesting/harvesting-geoportal.md index e8887286ea3..ec16a07b9ae 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-geoportal.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-geoportal.md @@ -4,24 +4,38 @@ This harvester will connect to a remote GeoPortal version 9.3.x or 10.x server a ## Adding a GeoPortal REST harvester -The figure above shows the options available: - -- **Site** - Options about the remote site. - - *Name* - This is a short description of the remote site. It will be shown in the harvesting main page as the name for this instance of the GeoPortal REST harvester. - - *Base URL* - The base URL of the GeoPortal server to be harvested. eg. . The harvester will add the additional path required to access the REST services on the GeoPortal server. - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing harvested metadata records in the search results. -- **Search criteria** - Using the Add button, you can add several search criteria. You can query any field on the GeoPortal server using the Lucene query syntax described at . -- **Options** - Scheduling options. -- **Harvested Content** - Options that are applied to harvested content. - - *Apply this XSLT to harvested records* - Choose an XSLT here that will convert harvested records to a different format. See notes section below for typical usage. - - *Validate* - If checked, the metadata will be validated after retrieval. If the validation does not pass, the metadata will be skipped. +To create a GeoPortal REST harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `GeoPortal REST`: + +![](img/add-geoportalrest-harvester.png) + +Providing the following information: + +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to GeoPortal REST** + - *URL*: The base URL of the GeoPortal server to be harvested. eg. . The harvester will add the additional path required to access the REST services on the GeoPortal server. + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the server. + - *Search filter*: (Optional) You can query any field on the GeoPortal server using the Lucene query syntax described at . + +- **Configure response processing for geoPREST** + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + - *XSL transformation to apply*: (Optional) The referenced XSL transform will be applied to each metadata record before it is added to GeoNetwork. + - **Privileges** - Assign privileges to harvested metadata. -- **Categories** + !!! Notes - - this harvester uses two REST services from the GeoPortal API: + - This harvester uses two REST services from the GeoPortal API: - `rest/find/document` with searchText parameter to return an RSS listing of metadata records that meet the search criteria (maximum 100000) - `rest/document` with id parameter from each result returned in the RSS listing - - this harvester has been tested with GeoPortal 9.3.x and 10.x. It can be used in preference to the CSW harvester if there are issues with the handling of the OGC standards etc. - - typically ISO19115 metadata produced by the Geoportal software will not have a 'gmd' prefix for the namespace `http://www.isotc211.org/2005/gmd`. GeoNetwork XSLTs will not have any trouble understanding this metadata but will not be able to map titles and codelists in the viewer/editor. To fix this problem, please select the ``Add-gmd-prefix`` XSLT for the *Apply this XSLT to harvested records* in the **Harvested Content** set of options described earlier + - This harvester has been tested with GeoPortal 9.3.x and 10.x. It can be used in preference to the CSW harvester if there are issues with the handling of the OGC standards etc. + - Typically ISO19115 metadata produced by the Geoportal software will not have a 'gmd' prefix for the namespace `http://www.isotc211.org/2005/gmd`. GeoNetwork XSLTs will not have any trouble understanding this metadata but will not be able to map titles and codelists in the viewer/editor. To fix this problem, please select the ``Add-gmd-prefix`` XSLT for the *Apply this XSLT to harvested records* in the **Harvested Content** set of options described earlier diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-oaipmh.md b/docs/manual/docs/user-guide/harvesting/harvesting-oaipmh.md index cf046363634..6c528feb7e2 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-oaipmh.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-oaipmh.md @@ -1,36 +1,49 @@ # OAIPMH Harvesting {#oaipmh_harvester} -This is a harvesting protocol that is widely used among libraries. GeoNetwork implements version 2.0 of the protocol. +This is a harvesting protocol that is widely used among libraries. GeoNetwork implements version 2.0 of the protocol. An OAI-PMH server implements a harvesting protocol that GeoNetwork, acting as a client, can use to harvest metadata. ## Adding an OAI-PMH harvester -An OAI-PMH server implements a harvesting protocol that GeoNetwork, acting as a client, can use to harvest metadata. +To create a OAI-PMH harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `OAI/PMH`: -Configuration options: +![](img/add-oaipmh-harvester.png) -- **Site** - Options describing the remote site. - - *Name* - This is a short description of the remote site. It will be shown in the harvesting main page as the name for this instance of the OAIPMH harvester. - - *URL* - The URL of the OAI-PMH server from which metadata will be harvested. - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing search results. - - *Use account* - Account credentials for basic HTTP authentication on the OAIPMH server. -- **Search criteria** - This allows you to select metadata records for harvest based on certain criteria: - - *From* - You can provide a start date here. Any metadata whose last change date is equal to or greater than this date will be harvested. To add or edit a value for this field you need to use the icon alongside the text box. This field is optional so if you don't provide a start date the constraint is dropped. Use the icon to clear the field. - - *Until* - Functions in the same way as the *From* parameter but adds an end constraint to the last change date search. Any metadata whose last change data is less than or equal to this data will be harvested. - - *Set* - An OAI-PMH server classifies metadata into sets (like categories in GeoNetwork). You can request all metadata records that belong to a set (and any of its subsets) by specifying the name of that set here. - - *Prefix* - 'Prefix' means metadata format. The oai_dc prefix must be supported by all OAI-PMH compliant servers. - - You can use the Add button to add more than one Search Criteria set. Search Criteria sets can be removed by clicking on the small cross at the top left of the set. +Providing the following information: -!!! note +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. - the 'OAI provider sets' drop down next to the *Set* text box and the 'OAI provider prefixes' drop down next to the *Prefix* textbox are initially blank. After specifying the connection URL, you can press the **Retrieve Info** button, which will connect to the remote OAI-PMH server, retrieve all supported sets and prefixes and fill the drop downs with these values. Selecting a value from either of these drop downs will fill the appropriate text box with the selected value. +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). +- **Configure connection to OGC CSW 2.0.2** + - *URL*: The URL of the OAI-PMH server from which metadata will be harvested. + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the OAIPMH server. + - *Search filter*: (Optional) Define the search criteria below to restrict the records to harvest. + - *From*: You can provide a start date here. Any metadata whose last change date is equal to or greater than this date will be harvested. To add or edit a value for this field you need to use the icon alongside the text box. This field is optional so if you don't provide a start date the constraint is dropped. Use the icon to clear the field. + - *Until*: Functions in the same way as the *From* parameter but adds an end constraint to the last change date search. Any metadata whose last change data is less than or equal to this data will be harvested. + - *Set*: An OAI-PMH server classifies metadata into sets (like categories in GeoNetwork). You can request all metadata records that belong to a set (and any of its subsets) by specifying the name of that set here. + - *Prefix*: 'Prefix' means metadata format. The oai_dc prefix must be supported by all OAI-PMH compliant servers. + + !!! note + + The 'OAI provider sets' drop down next to the *Set* text box and the 'OAI provider prefixes' drop down next to the *Prefix* textbox are initially blank. After specifying the connection URL, you can press the **Retrieve Info** button, which will connect to the remote OAI-PMH server, retrieve all supported sets and prefixes and fill the drop downs with these values. Selecting a value from either of these drop downs will fill the appropriate text box with the selected value. +- **Configure response processing for oaipmh** + - *Action on UUID collision*: When a harvester finds the same uuid on a record collected by another method (another harvester, importer, dashboard editor,...), should this record be skipped (default), overriden or generate a new UUID? + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + - *XSL transformation to apply*: (Optional) The referenced XSL transform will be applied to each metadata record before it is added to GeoNetwork. + + - *Category*: (Optional) A GeoNetwork category to assign to each metadata record. + +- **Privileges** - Assign privileges to harvested metadata. -- **Options** - Scheduling Options. -- **Privileges** -- **Categories** !!! Notes - - if you request the oai_dc output format, GeoNetwork will convert it to Dublin Core format. - - when you edit a previously created OAIPMH harvester instance, both the *set* and *prefix* drop down lists will be empty. You have to press the retrieve info button again to connect to the remote server and retrieve set and prefix information. - - the id of the remote server must be a UUID. If not, metadata can be harvested but during hierarchical propagation id clashes could corrupt harvested metadata. + - If you request the oai_dc output format, GeoNetwork will convert it to Dublin Core format. + - When you edit a previously created OAIPMH harvester instance, both the *set* and *prefix* drop down lists will be empty. You have to press the retrieve info button again to connect to the remote server and retrieve set and prefix information. + - The id of the remote server must be a UUID. If not, metadata can be harvested but during hierarchical propagation id clashes could corrupt harvested metadata. diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-ogcwxs.md b/docs/manual/docs/user-guide/harvesting/harvesting-ogcwxs.md index 52c88c134d4..70f45cf75d6 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-ogcwxs.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-ogcwxs.md @@ -11,27 +11,46 @@ An OGC service implements a GetCapabilities operation that GeoNetwork, acting as ## Adding an OGC Service Harvester -Configuration options: - -- **Site** - - *Name* - The name of the catalogue and will be one of the search criteria. - - *Type* - The type of OGC service indicates if the harvester has to query for a specific kind of service. Supported type are WMS (1.0.0, 1.1.1, 1.3.0), WFS (1.0.0 and 1.1.0), WCS (1.0.0), WPS (0.4.0 and 1.0.0), CSW (2.0.2) and SOS (1.0.0). - - *Service URL* - The service URL is the URL of the service to contact (without parameters like "REQUEST=GetCapabilities", "VERSION=", \...). It has to be a valid URL like . - - *Metadata language* - Required field that will define the language of the metadata. It should be the language used by the OGC web service administrator. - - *ISO topic category* - Used to populate the topic category element in the metadata. It is recommended to choose one as the topic category is mandatory for the ISO19115/19139 standard if the hierarchical level is "datasets". - - *Type of import* - By default, the harvester produces one service metadata record. Check boxes in this group determine the other metadata that will be produced. - - *Create metadata for layer elements using GetCapabilities information*: Checking this option means that the harvester will loop over datasets served by the service as described in the GetCapabilities document. - - *Create metadata for layer elements using MetadataURL attributes*: Checkthis option means that the harvester will generate metadata from an XML document referenced in the MetadataUrl attribute of the dataset in the GetCapabilities document. If the document referred to by this attribute is not valid (eg. unknown schema, bad XML format), the GetCapabilities document is used as per the previous option. - - *Create thumbnails for WMS layers*: If harvesting from an OGC WMS, then checking this options means that thumbnails will be created during harvesting. - - *Target schema* - The metadata schema of the dataset metadata records that will be created by this harvester. - - *Icon* - The default icon displayed as attribution logo for metadata created by this harvester. -- **Options** - Scheduling Options. -- **Privileges** -- **Category for service** - Metadata for the harvested service is assigned to the category selected in this option (eg. "interactive resources"). -- **Category for datasets** - Metadata for the harvested datasets is assigned to the category selected in this option (eg. "datasets"). +To create a OGC Service harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `OGC Web Services`: + +![](img/add-ogcwebservices-harvester.png) + +Providing the following information: + +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to OGC Web Services** + - *Service URL*: The service URL is the URL of the service to contact (without parameters like "REQUEST=GetCapabilities", "VERSION=", \...). It has to be a valid URL like . + - *Service type* - The type of OGC service indicates if the harvester has to query for a specific kind of service. Supported type are WMS (1.0.0, 1.1.1, 1.3.0), WFS (1.0.0 and 1.1.0), WCS (1.0.0), WPS (0.4.0 and 1.0.0), CSW (2.0.2) and SOS (1.0.0). + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the server. + +- **Configure response processing for ogcwxs** + - *Build service metadata record from a template*: + - *Category for service metadata*: (Optional) Metadata for the harvested service is assigned to the category selected in this option (eg. "interactive resources"). + - *Create record for each layer only using GetCapabilities information*: Checking this option means that the harvester will loop over datasets served by the service as described in the GetCapabilities document. + - *Import record for each layer using MetadataURL attributes*: Checkthis option means that the harvester will generate metadata from an XML document referenced in the MetadataUrl attribute of the dataset in the GetCapabilities document. If the document referred to by this attribute is not valid (eg. unknown schema, bad XML format), the GetCapabilities document is used as per the previous option. + - *Build dataset metadata records from a template* + - *Create thumbnail*: If checked, when harvesting from an OGC Web Map Service (WMS) that supports WGS84 projection, thumbnails for the layers metadata will be created during harvesting. + - *Category for datasets*: Metadata for the harvested datasets is assigned to the category selected in this option (eg. "datasets"). + + - *ISO category*: (Optional) Used to populate the topic category element in the metadata. It is recommended to choose one as the topic category is mandatory for the ISO19115/19139 standard if the hierarchical level is "datasets". + - *Metadata language*: Required field that will define the language of the metadata. It should be the language used by the OGC web service administrator. + - *Output schema*: The metadata schema of the dataset metadata records that will be created by this harvester. The value should be an XSLT process which is used by the harvester to convert the GetCapabilities document to metadata records from that schema. If in doubt, use the default value `iso19139`. + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + - *XSL transformation to apply*: (Optional) The referenced XSL transform will be applied to each metadata record before it is added to GeoNetwork. + + +- **Privileges** - Assign privileges to harvested metadata. + !!! Notes - - every time the harvester runs, it will remove previously harvested records and create new records. GeoNetwork will generate the uuid for all metadata (both service and datasets). The exception to this rule is dataset metadata created using the MetadataUrl tag is in the GetCapabilities document, in that case, the uuid of the remote XML document is used instead - - thumbnails can only be generated when harvesting an OGC Web Map Service (WMS). The WMS should support the WGS84 projection - - the chosen *Target schema* must have the support XSLTs which are used by the harvester to convert the GetCapabilities statement to metadata records from that schema. If in doubt, use iso19139. + - Every time the harvester runs, it will remove previously harvested records and create new records. GeoNetwork will generate the uuid for all metadata (both service and datasets). The exception to this rule is dataset metadata created using the MetadataUrl tag is in the GetCapabilities document, in that case, the uuid of the remote XML document is used instead diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-sde.md b/docs/manual/docs/user-guide/harvesting/harvesting-sde.md index 7f4f99cb913..32cdd4df780 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-sde.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-sde.md @@ -1,55 +1,60 @@ # Harvesting an ARCSDE Node {#sde_harvester} -This is a harvesting protocol for metadata stored in an ArcSDE installation. +This is a harvesting protocol for metadata stored in an ArcSDE installation. The harvester identifies the ESRI metadata format: ESRI ISO, ESRI FGDC to apply the required xslts to transform metadata to ISO19139. ## Adding an ArcSDE harvester -The harvester identifies the ESRI metadata format: ESRI ISO, ESRI FGDC to apply the required xslts to transform metadata to ISO19139. Configuration options: +To create an ArcSDE harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `ArcSDE`: + +![](img/add-arcsde-harvester.png) + +Providing the following information: - **Identification** - - *Name* - This is a short description of the node. It will be shown in the harvesting main page. - - *Group* - User admin of this group and catalog administrator can manage this node. - - *Harvester user* - User that owns the harvested metadata. -- **Schedule** - Schedule configuration to execute the harvester. -- **Configuration for protocol ArcSDE** - - *Server* - ArcSde server IP address or name. - - *Port* - ArcSde service port (typically 5151) or ArcSde database port, depending on the connection type selected, see below the *Connection type* section. - - *Database name* - ArcSDE instance name (typically esri_sde). - - *ArcSde version* - ArcSde version to harvest. The data model used by ArcSde is different depending on the ArcSde version. + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to Database** + - *Server*: ArcSDE server IP address or name. + - *Port*: ArcSDE service port (typically 5151) or ArcSDE database port, depending on the connection type selected, see below the *Connection type* section. + - *Database name*: ArcSDE instance name (typically esri_sde). + - *ArcSDE version: ArcSDE version to harvest. The data model used by ArcSDE is different depending on the ArcSDE version. - *Connection type* - - *ArcSde service* - Uses the ArcSde service to retrieve the metadata. + - *ArcSDE service*: Uses the ArcSDE service to retrieve the metadata. !!! note - Additional installation steps are required to use the ArcSDE harvester because it needs proprietary ESRI Java api jars to be installed. - - ArcSDE Java API libraries need to be installed by the user in GeoNetwork (folder INSTALL_DIR_GEONETWORK/WEB-INF/lib), as these are proprietary libraries not distributed with GeoNetwork. - - The following jars are required: - - - jpe_sdk.jar - - jsde_sdk.jar - - dummy-api-XXX.jar must be removed from INSTALL_DIR/web/geonetwork/WEB-INF/lib + Additional installation steps are required to use the ArcSDE harvester because it needs proprietary ESRI Java api jars to be installed. + ArcSDE Java API libraries need to be installed by the user in GeoNetwork (folder `INSTALL_DIR_GEONETWORK/WEB-INF/lib`), as these are proprietary libraries not distributed with GeoNetwork. - - *Database direct connection* - Uses a database connection (JDBC) to retrieve the metadata. With + The following jars are required: - !!! note + - jpe_sdk.jar + - jsde_sdk.jar - Database direct connection requires to copy JDBC drivers in INSTALL_DIR_GEONETWORK/WEB-INF/lib. + `dummy-api-XXX.jar` must be removed from `INSTALL_DIR/web/geonetwork/WEB-INF/lib`. + - *Database direct connection*: Uses a database connection (JDBC) to retrieve the metadata. + + !!! note + + Database direct connection requires to copy JDBC drivers in `INSTALL_DIR_GEONETWORK/WEB-INF/lib`. !!! note Postgres JDBC drivers are distributed with GeoNetwork, but not for Oracle or SqlServer. - - *Database type* - ArcSde database type: Oracle, Postgres, SqlServer. Only available if connection type is configured to *Database direct connection*. - - *Username* - Username to connect to ArcSDE server. - - *Password* - Password of the ArcSDE user. -- **Advanced options for protocol arcsde** - - *Validate records before import* - Defines the criteria to reject metadata that is invalid according to XSD and schematron rules. + - *Database type* - ArcSDE database type: Oracle, Postgres, SqlServer. Only available if connection type is configured to *Database direct connection*. + - *Remote authentication*: Credentials to connect to the ArcSDE server. + +- **Configure response processing for arcsde** + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). - Accept all metadata without validation. - Accept metadata that are XSD valid. - Accept metadata that are XSD and schematron valid. + - **Privileges** - Assign privileges to harvested metadata. diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-simpleurl.md b/docs/manual/docs/user-guide/harvesting/harvesting-simpleurl.md index 775b4a9d1a9..e7243dc8421 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-simpleurl.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-simpleurl.md @@ -4,47 +4,72 @@ This harvester connects to a remote server via a simple URL to retrieve metadata ## Adding a simple URL harvester -- **Site** - Options about the remote site. +To create a Simple URL harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `Simple URL`: - - *Name* - This is a short description of the remote site. It will be shown in the harvesting main page as the name for this instance of the harvester. - - *Service URL* - The URL of the server to be harvested. This can include pagination params like `?start=0&rows=20` - - *loopElement* - Propery/element containing a list of the record entries. (Indicated as an absolute path from the document root.) eg. `/datasets` - - *numberOfRecordPath* : Property indicating the total count of record entries. (Indicated as an absolute path from the document root.) eg. `/nhits` - - *recordIdPath* : Property containing the record id. eg. `datasetid` - - *pageFromParam* : Property indicating the first record item on the current "page" eg. `start` - - *pageSizeParam* : Property indicating the number of records containned in the current "page" eg. `rows` - - *toISOConversion* : Name of the conversion schema to use, which must be available as XSL on the GN instance. eg. `OPENDATASOFT-to-ISO19115-3-2018` +![](img/add-simpleurl-harvester.png) - !!! note +Providing the following information: - GN looks for schemas by name in . These schemas might internally include schemas from other locations like . To indicate the `fromJsonOpenDataSoft` schema for example, from the latter location directly in the admin UI the following syntax can be used: `schema:iso19115-3.2018:convert/fromJsonOpenDataSoft`. +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). - **Sample configuration for opendatasoft** +- **Configure connection to Simple URL** + - *URL* - The URL of the server to be harvested. This can include pagination params like `?start=0&rows=20` + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the server. + - *Element to loop on*: Propery/element containing a list of the record entries. (Indicated as an absolute path from the document root.) eg. `/datasets` + - *Element for the UUID of each record* : Property containing the record id. eg. `datasetid` + - *Pagination parameters*: (optional). + - *Element for the number of records to collect*: Property indicating the total count of record entries. (Indicated as an absolute path from the document root.) eg. `/nhits` + - *From URL parameter*: Property indicating the first record item on the current "page" eg. `start` + - *Size URL parameter*: Property indicating the number of records containned in the current "page" eg. `rows` + +- **Configure response processing for Simple URL** - - *loopElement* - `/datasets` - - *numberOfRecordPath* : `/nhits` - - *recordIdPath* : `datasetid` - - *pageFromParam* : `start` - - *pageSizeParam* : `rows` - - *toISOConversion* : `OPENDATASOFT-to-ISO19115-3-2018` + - *XSL transformation to apply*: Name of the conversion schema to use, which must be available as XSL on the GeoNetwork instance. eg. `OPENDATASOFT-to-ISO19115-3-2018` - **Sample configuration for ESRI** + !!! note - - *loopElement* - `/dataset` - - *numberOfRecordPath* : `/result/count` - - *recordIdPath* : `landingPage` - - *pageFromParam* : `start` - - *pageSizeParam* : `rows` - - *toISOConversion* : `ESRIDCAT-to-ISO19115-3-2018` + GN looks for schemas by name in . These schemas might internally include schemas from other locations like . To indicate the `fromJsonOpenDataSoft` schema for example, from the latter location directly in the admin UI the following syntax can be used: `schema:iso19115-3.2018:convert/fromJsonOpenDataSoft`. - **Sample configuration for DKAN** - - - *loopElement* - `/result/0` - - *numberOfRecordPath* : `/result/count` - - *recordIdPath* : `id` - - *pageFromParam* : `start` - - *pageSizeParam* : `rows` - - *toISOConversion* : `DKAN-to-ISO19115-3-2018` + - *Batch edits*: (Optional) Allows to update harvested records, using XPATH syntax. It can be used to add, replace or delete element. + - *Category*: (Optional) A GeoNetwork category to assign to each metadata record. + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. - **Privileges** - Assign privileges to harvested metadata. + + +## Sample configurations + +### Sample configuration for opendatasoft + +- *Element to loop on* - `/datasets` +- *Element for the number of records to collect* : `/nhits` +- *Element for the UUID of each record* : `datasetid` +- *From URL parameter* : `start` +- *Size URL parameter* : `rows` +- *XSL transformation to apply* : `OPENDATASOFT-to-ISO19115-3-2018` + +### Sample configuration for ESRI + +- *Element to loop on* - `/dataset` +- *Element for the number of records to collect* : `/result/count` +- *Element for the UUID of each record* : `landingPage` +- *From URL parameter* : `start` +- *Size URL parameter* : `rows` +- *XSL transformation to apply* : `ESRIDCAT-to-ISO19115-3-2018` + +### Sample configuration for DKAN + +- *Element to loop on* - `/result/0` +- *Element for the number of records to collect* : `/result/count` +- *Element for the UUID of each record* : `id` +- *From URL parameter* : `start` +- *Size URL parameter* : `rows` +- *XSL transformation to apply* : `DKAN-to-ISO19115-3-2018` diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-thredds.md b/docs/manual/docs/user-guide/harvesting/harvesting-thredds.md index 2c988d58e34..bb4716c7508 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-thredds.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-thredds.md @@ -4,35 +4,33 @@ THREDDS catalogs describe inventories of datasets. They are organised in a hiera ## Adding a THREDDS Catalog Harvester -The available options are: - -- **Site** - - *Name* - This is a short description of the THREDDS catalog. It will be shown in the harvesting main page as the name of this THREDDS harvester instance. - - *Catalog URL* - The remote URL of the THREDDS Catalog from which metadata will be harvested. This must be the xml version of the catalog (i.e. ending with .xml). The harvester will crawl through all datasets and services defined in this catalog creating metadata for them as specified by the options described further below. - - *Metadata language* - Use this option to specify the language of the metadata to be harvested. - - *ISO topic category* - Use this option to specify the ISO topic category of service metadata. - - *Create ISO19119 metadata for all services in catalog* - Select this option to generate iso19119 metadata for services defined in the THREDDS catalog (eg. OpenDAP, OGC WCS, ftp) and for the THREDDS catalog itself. - - *Create metadata for Collection datasets* - Select this option to generate metadata for each collection dataset (THREDDS dataset containing other datasets). Creation of metadata can be customised using options that are displayed when this option is selected as described further below. - - *Create metadata for Atomic datasets* - Select this option to generate metadata for each atomic dataset (THREDDS dataset not containing other datasets -- for example cataloguing a netCDF dataset). Creation of metadata can be customised using options that are displayed when this option is selected as described further below. - - *Ignore harvesting attribute* - Select this option to harvest metadata for selected datasets regardless of the harvest attribute for the dataset in the THREDDS catalog. If this option is not selected, metadata will only be created for datasets that have a harvest attribute set to true. - - *Extract DIF metadata elements and create ISO metadata* - Select this option to generate ISO metadata for datasets in the THREDDS catalog that have DIF metadata elements. When this option is selected a list of schemas is shown that have a DIFToISO.xsl stylesheet available (see for example `GEONETWORK_DATA_DIR/config/schema_plugins/iso19139/convert/DIFToISO.xsl`). Metadata is generated by reading the DIF metadata items in the THREDDS into a DIF format metadata record and then converting that DIF record to ISO using the DIFToISO stylesheet. - - *Extract Unidata dataset discovery metadata using fragments* - Select this option when the metadata in your THREDDS or netCDF/ncml datasets follows Unidata dataset discovery conventions (see ). You will need to write your own stylesheets to extract this metadata as fragments and define a template to combine with the fragments. When this option is selected the following additional options will be shown: - - *Select schema for output metadata records* - choose the ISO metadata schema or profile for the harvested metadata records. Note: only the schemas that have THREDDS fragment stylesheets will be displayed in the list (see the next option for the location of these stylesheets). - - *Stylesheet to create metadata fragments* - Select a stylesheet to use to convert metadata for the dataset (THREDDS metadata and netCDF ncml where applicable) into metadata fragments. These stylesheets can be found in the directory convert/ThreddsToFragments in the schema directory eg. for iso19139 this would be `GEONETWORK_DATA_DIR/config/schema_plugins/iso19139/convert/ThreddsToFragments`. - - *Create subtemplates for fragments and XLink them into template* - Select this option to create a subtemplate (=metadata fragment stored in GeoNetwork catalog) for each metadata fragment generated. - - *Template to combine with fragments* - Select a template that will be filled in with the metadata fragments generated for each dataset. The generated metadata fragments are used to replace referenced elements in the templates with an xlink to a subtemplate if the *Create subtemplates* option is checked. If *Create subtemplates* is not checked, then the fragments are simply copied into the template metadata record. - - For Atomic Datasets , one additional option is provided *Harvest new or modified datasets only*. If this option is checked only datasets that have been modified or didn't exist when the harvester was last run will be harvested. - - *Create Thumbnails* - Select this option to create thumbnails for WMS layers in referenced WMS services - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing search results. -- **Options** - Scheduling Options. -- **Privileges** -- **Category for Service** - Select the category to assign to the ISO19119 service records for the THREDDS services. -- **Category for Datasets** - Select the category to assign the generated metadata records (and any subtemplates) to. - -At the bottom of the page there are the following buttons: - -- **Back** - Go back to the main harvesting page. The harvesting definition is not added. -- **Save** - Saves this harvester definition creating a new harvesting instance. After the save operation has completed, the main harvesting page will be displayed. +To create a THREDDS Catalog harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `Thredds Catalog`: + +![](img/add-threddscatalog-harvester.png) + +Providing the following information: + +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to Thredds catalog** + - *Service URL*: The remote URL of the THREDDS Catalog from which metadata will be harvested. This must be the xml version of the catalog (i.e. ending with .xml). The harvester will crawl through all datasets and services defined in this catalog creating metadata for them as specified by the options described further below. + +- **Configure response processing for thredds** + - *Language*: Use this option to specify the language of the metadata to be harvested. + - *ISO19115 Topic category for output metadata records*: Use this option to specify the ISO topic category of service metadata. + - *Create ISO19119 metadata for all services in the thredds catalog*: Select this option to generate iso19119 metadata for services defined in the THREDDS catalog (eg. OpenDAP, OGC WCS, ftp) and for the THREDDS catalog itself. + - *Select schema for output metadata records*: The metadata standard to create the metadata. It should be a valid metadata schema installed in GeoNetwork, by default `iso19139`. + - *Dataset title*: (Optional) Title for the dataset. Default is catalog url. + - *Dataset abstract*: (Optional) Abstract for the dataset. Default is 'Thredds Dataset'. + - *Geonetwork category to assign to dataset metadata records* - Select the category to assign to the ISO19119 service records for the THREDDS services. + - *Geonetwork category to assign to dataset metadata records* - Select the category to assign the generated metadata records (and any subtemplates) to. + +- **Privileges** - Assign privileges to harvested metadata. ## More about harvesting THREDDS DIF metadata elements with the THREDDS Harvester diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-webdav.md b/docs/manual/docs/user-guide/harvesting/harvesting-webdav.md index 4313483f627..cdd6b12434a 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-webdav.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-webdav.md @@ -4,19 +4,35 @@ This harvesting type uses the WebDAV (Distributed Authoring and Versioning) prot ## Adding a WebDAV harvester -- **Site** - Options about the remote site. - - *Subtype* - Select WebDAV or WAF according to the type of server being harvested. - - *Name* - This is a short description of the remote site. It will be shown in the harvesting main page as the name for this instance of the WebDAV harvester. - - *URL* - The remote URL from which metadata will be harvested. Each file found that ends with .xml is assumed to be a metadata record. - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing search results. - - *Use account* - Account credentials for basic HTTP authentication on the WebDAV/WAF server. -- **Options** - Scheduling options. -- **Options** - Specific harvesting options for this harvester. - - *Validate* - If checked, the metadata will be validated after retrieval. If the validation does not pass, the metadata will be skipped. - - *Recurse* - When the harvesting engine will find folders, it will recursively descend into them. -- **Privileges** - Assign privileges to harvested metadata. -- **Categories** +To create a WebDAV harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `WebDAV / WAF`: + +![](img/add-webdav-harvester.png) + +Providing the following information: -!!! Notes +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. - - The same metadata could be harvested several times by different instances of the WebDAV harvester. This is not good practise because copies of the same metadata record will have a different UUID. +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to WebDAV / WAF** + - *URL*: The remote URL from which metadata will be harvested. Each file found that has the extension `.xml` is assumed to be a metadata record. + - *Type of protocol*: Select WebDAV or WAF according to the type of server being harvested. + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the WebDAV/WAF server. + - *Also search in subfolders*: When the harvesting engine will find folders, it will recursively descend into them. + +- **Configure response processing for webdav** + - *Action on UUID collision*: When a harvester finds the same uuid on a record collected by another method (another harvester, importer, dashboard editor,...), should this record be skipped (default), overriden or generate a new UUID? + - *XSL filter name to apply*: (Optional) The XSL filter is applied to each metadata record. The filter is a process which depends on the schema (see the `process` folder of the schemas). + + It could be composed of parameter which will be sent to XSL transformation using the following syntax: `anonymizer?protocol=MYLOCALNETWORK:FILEPATH&email=gis@organisation.org&thesaurus=MYORGONLYTHEASURUS` + + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + - *Category*: (Optional) A GeoNetwork category to assign to each metadata record. + +- **Privileges** - Assign privileges to harvested metadata. diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-wfs-features.md b/docs/manual/docs/user-guide/harvesting/harvesting-wfs-features.md index 16abfa13bb7..c198e5f5966 100644 --- a/docs/manual/docs/user-guide/harvesting/harvesting-wfs-features.md +++ b/docs/manual/docs/user-guide/harvesting/harvesting-wfs-features.md @@ -2,26 +2,43 @@ Metadata can be present in the tables of a relational databases, which are commonly used by many organisations. Putting an OGC Web Feature Service (WFS) over a relational database will allow metadata to be extracted via standard query mechanisms. This harvesting type allows the user to specify a GetFeature query and map information from the features to fragments of metadata that can be linked or copied into a template to create metadata records. +An OGC web feature service (WFS) implements a GetFeature query operation that returns data in the form of features (usually rows from related tables in a relational database). GeoNetwork, acting as a client, can read the GetFeature response and apply a user-supplied XSLT stylesheet to produce metadata fragments that can be linked or copied into a user-supplied template to build metadata records. + ## Adding an OGC WFS GetFeature Harvester -An OGC web feature service (WFS) implements a GetFeature query operation that returns data in the form of features (usually rows from related tables in a relational database). GeoNetwork, acting as a client, can read the GetFeature response and apply a user-supplied XSLT stylesheet to produce metadata fragments that can be linked or copied into a user-supplied template to build metadata records. +To create a OGC WFS GetFeature harvester go to `Admin console` > `Harvesting` and select `Harvest from` > `OGC WFS GetFeature`: + +![](img/add-wfsgetfeature-harvester.png) -The available options are: +Providing the following information: -- **Site** - - *Name* - This is a short description of the harvester. It will be shown in the harvesting main page as the name for this WFS GetFeature harvester. - - *Service URL* - The bare URL of the WFS service (no OGC params required) - - *Metadata language* - The language that will be used in the metadata records created by the harvester +- **Identification** + - *Node name and logo*: A unique name for the harvester and, optionally, a logo to assign to the harvester. + - *Group*: Group which owns the harvested records. Only the catalog administrator or users with the profile `UserAdmin` of this group can manage the harvester. + - *User*: User who owns the harvested records. + +- **Schedule**: Scheduling options to execute the harvester. If disabled, the harvester must be run manually from the harvester page. If enabled, a scheduling expression using cron syntax should be configured ([See examples](https://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/crontrigger)). + +- **Configure connection to OGC CSW 2.0.2** + - *Service URL*: The bare URL of the WFS service (no OGC params required). + - *Remote authentication*: If checked, should be provided the credentials for basic HTTP authentication on the WFS server. - *OGC WFS GetFeature Query* - The OGC WFS GetFeature query used to extract features from the WFS. - - *Schema for output metadata records* - choose the metadata schema or profile for the harvested metadata records. Note: only the schemas that have WFS fragment stylesheets will be displayed in the list (see the next option for the location of these stylesheets). - - *Stylesheet to create fragments* - User-supplied stylesheet that transforms the GetFeature response to a metadata fragments document (see below for the format of that document). Stylesheets exist in the WFSToFragments directory which is in the convert directory of the selected output schema. eg. for the iso19139 schema, this directory is `GEONETWORK_DATA_DIR/config/schema_plugins/iso19139/convert/WFSToFragments`. - - *Save large response to disk* - Check this box if you expect the WFS GetFeature response to be large (eg. greater than 10MB). If checked, the GetFeature response will be saved to disk in a temporary file. Each feature will then be extracted from the temporary file and used to create the fragments and metadata records. If not checked, the response will be held in RAM. - - *Create subtemplates* - Check this box if you want the harvested metadata fragments to be saved as subtemplates in the metadata catalog and xlink'd into the metadata template (see next option). If not checked, the fragments will be copied into the metadata template. - - *Template to use to build metadata using fragments* - Choose the metadata template that will be combined with the harvested metadata fragments to create metadata records. This is a standard GeoNetwork metadata template record. - - *Category for records built with linked fragments* - Choose the metadata template that will be combined with the harvested metadata fragments to create metadata records. This is a standard GeoNetwork metadata template record. -- **Options** -- **Privileges** -- **Category for subtemplates** - When fragments are saved to GeoNetwork as subtemplates they will be assigned to the category selected here. + +- **Configure response processing for wfsfeatures** + - *Language*: The language that will be used in the metadata records created by the harvester. + - *Metadata standard*: The metadata standard to create the metadata. It should be a valid metadata schema installed in GeoNetwork, by default `iso19139`. + - *Save large response to disk*: Check this box if you expect the WFS GetFeature response to be large (eg. greater than 10MB). If checked, the GetFeature response will be saved to disk in a temporary file. Each feature will then be extracted from the temporary file and used to create the fragments and metadata records. If not checked, the response will be held in RAM. + - *Stylesheet to create fragments*: User-supplied stylesheet that transforms the GetFeature response to a metadata fragments document (see below for the format of that document). Stylesheets exist in the WFSToFragments directory which is in the convert directory of the selected output schema. eg. for the iso19139 schema, this directory is `GEONETWORK_DATA_DIR/config/schema_plugins/iso19139/convert/WFSToFragments`. + - *Create subtemplates*: Check this box if you want the harvested metadata fragments to be saved as subtemplates in the metadata catalog and xlink'd into the metadata template (see next option). If not checked, the fragments will be copied into the metadata template. + - *Select template to combine with fragments*: Choose the metadata template that will be combined with the harvested metadata fragments to create metadata records. This is a standard GeoNetwork metadata template record. + - *Category for directory entries*: (Optional) When fragments are saved to GeoNetwork as subtemplates they will be assigned to the category selected here. + - *Validate records before import*: Defines the criteria to reject metadata that is invalid according to XML structure (XSD) and validation rules (schematron). + - Accept all metadata without validation. + - Accept metadata that are XSD valid. + - Accept metadata that are XSD and schematron valid. + +- **Privileges** - Assign privileges to harvested metadata. + ## More about turning the GetFeature Response into metadata fragments diff --git a/docs/manual/docs/user-guide/harvesting/harvesting-z3950.md b/docs/manual/docs/user-guide/harvesting/harvesting-z3950.md deleted file mode 100644 index 47722c37464..00000000000 --- a/docs/manual/docs/user-guide/harvesting/harvesting-z3950.md +++ /dev/null @@ -1,90 +0,0 @@ -# Z3950 Harvesting {#z3950_harvester} - -Z3950 is a remote search and harvesting protocol that is commonly used to permit search and harvest of metadata. Although the protocol is often used for library catalogs, significant geospatial metadata catalogs can also be searched using Z3950 (eg. the metadata collections of the Australian Government agencies that participate in the Australian Spatial Data Directory - ASDD). This harvester allows the user to specify a Z3950 query and retrieve metadata records from one or more Z3950 servers. - -## Adding a Z3950 Harvester - -The available options are: - -- **Site** - - *Name* - A short description of this Z3950 harvester. It will be shown in the harvesting main page using this name. - - *Z3950 Server(s)* - These are the Z3950 servers that will be searched. You can select one or more of these servers. - - *Z3950 Query* - Specify the Z3950 query to use when searching the selected Z3950 servers. At present this field is known to support the Prefix Query Format (also known as Prefix Query Notation) which is described at this URL: . See below for more information and some simple examples. - - *Icon* - An icon to assign to harvested metadata. The icon will be used when showing search results. -- **Options** - Scheduling options. -- **Harvested Content** - - *Apply this XSLT to harvested records* - Choose an XSLT here that will convert harvested records to a different format. - - *Validate* - If checked, records that do not/cannot be validated will be rejected. -- **Privileges** -- **Categories** - -!!! note - - this harvester automatically creates a new Category named after each of the Z3950 servers that return records. Records that are returned by a server are assigned to the category named after that server. - - -## More about PQF Z3950 Queries - -PQF is a rather arcane query language. It is based around the idea of attributes and attribute sets. The most common attribute set used for geospatial metadata in Z3950 servers is the GEO attribute set (which is an extension of the BIB-1 and GILS attribute sets - see ). So all PQF queries to geospatial metadata Z3950 servers should start off with @attrset geo. - -The most useful attribute types in the GEO attribute set are as follows: - -| @attr number | Meaning | Description | -|---------------|------------|--------------------------------------------------| -| 1 | Use | What field to search | -| 2 | Relation | How to compare the term specified | -| 4 | Structure | What type is the term? eg. date, numeric, phrase | -| 5 | Truncation | How to truncate eg. right | - -In GeoNetwork the numeric values that can be specified for `@attr 1` map to the lucene index field names as follows: - -| @attr 1= | Lucene index field | ISO19139 element | -|----------------------|-------------------------------|-------------------------------------------------------------------------------------------------------------| -| 1016 | any | All text from all metadata elements | -| 4 | title, altTitle | gmd:identificationInfo//gmd:citation//gmd:title/gco:CharacterString | -| 62 | abstract | gmd:identificationInfo//gmd:abstract/gco:CharacterString | -| 1012 | _changeDate | Not a metadata element (maintained by GeoNetwork) | -| 30 | createDate | gmd:MD_Metadata/gmd:dateStamp/gco:Date | -| 31 | publicationDate | gmd:identificationInfo//gmd:citation//gmd:date/gmd:='publication' | -| 2072 | tempExtentBegin | gmd:identificationInfo//gmd:extent//gmd:temporalElement//gml:begin(Position) | -| 2073 | tempExtentEnd | gmd:identificationInfo//gmd:extent//gmd:temporalElement//gml:end(Position) | -| 2012 | fileId | gmd:MD_Metadata/gmd:fileIdentifier/* | -| 12 | identifier | gmd:identificationInfo//gmd:citation//gmd:identifier//gmd:code/* | -| 21,29,2002,3121,3122 | keyword | gmd:identificationInfo//gmd:keyword/* | -| 2060 | northBL,eastBL,southBL,westBL | gmd:identificationInfo//gmd:extent//gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude*/gco:Decimal (etc) | - -Note that this is not a complete set of the mappings between Z3950 GEO attribute set and the GeoNetwork lucene index field names for ISO19139. Check out INSTALL_DIR/web/geonetwork/xml/search/z3950Server.xsl and INSTALL_DIR/web/geonetwork/xml/schemas/iso19139/index-fields.xsl for more details and annexe A of the GEO attribute set for Z3950 at for more details. - -Common values for the relation attribute (`@attr=2`): - -| @attr 2= | Description | -|-----------|--------------------------| -| 1 | Less than | -| 2 | Less than or equal to | -| 3 | Equals | -| 4 | Greater than or equal to | -| 5 | Greater than | -| 6 | Not equal to | -| 7 | Overlaps | -| 8 | Fully enclosed within | -| 9 | Encloses | -| 10 | Fully outside of | - -So a simple query to get all metadata records that have the word 'the' in any field would be: - -`@attrset geo @attr 1=1016 the` - -- `@attr 1=1016` means that we are doing a search on any field in the metadata record - -A more sophisticated search on a bounding box might be formulated as: - -`@attrset geo @attr 1=2060 @attr 4=201 @attr 2=7 "-36.8262 142.6465 -44.3848 151.2598` - -- `@attr 1=2060` means that we are doing a bounding box search -- `@attr 4=201` means that the query contains coordinate strings -- `@attr 2=7` means that we are searching for records whose bounding box overlaps the query box specified at the end of the query - -!!! Notes - - - Z3950 servers must be configured for GeoNetwork in `INSTALL_DIR/web/geonetwork/WEB-INF/classes/JZKitConfig.xml.tem` - - every time the harvester runs, it will remove previously harvested records and create new ones. diff --git a/docs/manual/docs/user-guide/harvesting/img/add-arcsde-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-arcsde-harvester.png new file mode 100644 index 00000000000..258c163bfda Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-arcsde-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-csw-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-csw-harvester.png new file mode 100644 index 00000000000..e6e484359b9 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-csw-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-filesystem-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-filesystem-harvester.png new file mode 100644 index 00000000000..0e0f0d66bfd Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-filesystem-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-geonetwork-3-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-geonetwork-3-harvester.png new file mode 100644 index 00000000000..002459bae7d Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-geonetwork-3-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-geoportalrest-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-geoportalrest-harvester.png new file mode 100644 index 00000000000..31d60f997e7 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-geoportalrest-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-harvester.png new file mode 100644 index 00000000000..5d50e1dce3e Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-oaipmh-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-oaipmh-harvester.png new file mode 100644 index 00000000000..a6ad14e6a54 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-oaipmh-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-ogcwebservices-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-ogcwebservices-harvester.png new file mode 100644 index 00000000000..2734781c718 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-ogcwebservices-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-simpleurl-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-simpleurl-harvester.png new file mode 100644 index 00000000000..6f7af0255a9 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-simpleurl-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-threddscatalog-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-threddscatalog-harvester.png new file mode 100644 index 00000000000..a326a4b7c79 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-threddscatalog-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-webdav-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-webdav-harvester.png new file mode 100644 index 00000000000..4b36e089b8d Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-webdav-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/add-wfsgetfeature-harvester.png b/docs/manual/docs/user-guide/harvesting/img/add-wfsgetfeature-harvester.png new file mode 100644 index 00000000000..bd3646bc0cf Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/add-wfsgetfeature-harvester.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/harvester-history.png b/docs/manual/docs/user-guide/harvesting/img/harvester-history.png new file mode 100644 index 00000000000..f9064c1a8f3 Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/harvester-history.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/harvester-statistics.png b/docs/manual/docs/user-guide/harvesting/img/harvester-statistics.png new file mode 100644 index 00000000000..b311bb2ec8e Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/harvester-statistics.png differ diff --git a/docs/manual/docs/user-guide/harvesting/img/harvesters.png b/docs/manual/docs/user-guide/harvesting/img/harvesters.png new file mode 100644 index 00000000000..bd008fdef7c Binary files /dev/null and b/docs/manual/docs/user-guide/harvesting/img/harvesters.png differ diff --git a/docs/manual/docs/user-guide/harvesting/index.md b/docs/manual/docs/user-guide/harvesting/index.md index 46f52f782c5..abea85ff38c 100644 --- a/docs/manual/docs/user-guide/harvesting/index.md +++ b/docs/manual/docs/user-guide/harvesting/index.md @@ -6,7 +6,8 @@ Harvesting is the process of ingesting metadata from remote sources and storing The following sources can be harvested: -- [GeoNetwork 2.0 Harvester](harvesting-geonetwork.md) +- [GeoNetwork 2.1-3.X Harvester](harvesting-geonetwork.md) +- [GeoNetwork 2.0 Harvester](harvesting-geonetwork-2.md) - [Harvesting CSW services](harvesting-csw.md) - [Harvesting OGC Services](harvesting-ogcwxs.md) - [Simple URL harvesting (opendata)](harvesting-simpleurl.md) @@ -17,7 +18,6 @@ The following sources can be harvested: - [GeoPortal REST Harvesting](harvesting-geoportal.md) - [THREDDS Harvesting](harvesting-thredds.md) - [WFS GetFeature Harvesting](harvesting-wfs-features.md) -- [Z3950 Harvesting](harvesting-z3950.md) ## Mechanism overview @@ -134,79 +134,45 @@ The script will add the certificate to the JVM keystore, if you run it as follow $ ./ssl_key_import.sh https_server_name 443 -## The main page +## Harvesting page -To access the harvesting main page you have to be logged in as an administrator. From the administration page, select the harvest shortcut. The harvesting main page will then be displayed. +To access the harvesting main page you have to be logged in with a profile `Administrator` or `UserAdmin`. From the `Admin console` menu, select the option `Harvesting`. -The page shows a list of the currently defined harvesters and a set of buttons for management functions. The meaning of each column in the list of harvesters is as follows: +The page shows a list of the currently defined harvesters with information about the status of the harvesters: -1. *Select* Check box to select one or more harvesters. The selected harvesters will be affected by the first row of buttons (activate, deactivate, run, remove). For example, if you select three harvesters and press the Remove button, they will all be removed. -2. *Name* This is the harvester name provided by the administrator. -3. *Type* The harvester type (eg. GeoNetwork, WebDAV etc\...). -4. *Status* An icon showing current status. See [Harvesting Status and Error Icons](index.md#admin_harvesting_status) for the different icons and status descriptions. -5. *Errors* An icon showing the result of the last harvesting run, which could have succeeded or not. See [Harvesting Status and Error Icons](index.md#admin_harvesting_status) for the different icons and error descriptions. Hovering the cursor over the icon will show detailed information about the last harvesting run. -6. *Run at* and *Every*: Scheduling of harvester runs. Essentially the time of the day + how many hours between repeats and on which days the harvester will run. -7. *Last run* The date, in ISO 8601 format, of the most recent harvesting run. -8. *Operation* A list of buttons/links to operations on a harvester. - - Selecting *Edit* will allow you to change the parameters for a harvester. - - Selecting *Clone* will allow you to create a clone of this harvester and start editing the details of the clone. - - Selecting *History* will allow you to view/change the harvesting history for a harvester - see [Harvest History](index.md#harvest_history). +![](img/harvesters.png) -At the bottom of the list of harvesters are two rows of buttons. The first row contains buttons that can operate on a selected set of harvesters. You can select the harvesters you want to operate on using the check box in the Select column and then press one of these buttons. When the button finishes its action, the check boxes are cleared. Here is the meaning of each button: +The following information is shown for each harvester: -1. *Activate* When a new harvester is created, the status is *inactive*. Use this button to make it *active* and start the harvester(s) according to the schedule it has/they have been configured to use. -2. *Deactivate* Stops the harvester(s). Note: this does not mean that currently running harvest(s) will be stopped. Instead, it means that the harvester(s) will not be scheduled to run again. -3. *Run* Start the selected harvesters immediately. This is useful for testing harvester setups. -4. *Remove* Remove all currently selected harvesters. A dialogue will ask the user to confirm the action. +- **Last run**: Date on which the harvester was last run. +- **Total**: It is the total number of metadata found remotely. Metadata with the same id are considered as one. +- **Updated**: Number of metadata that are present locally but needed to be updated because their last modification date was different from the remote one. +- **Unchanged**: Number of local metadata that have not been modified. Its remote last modification date has not changed. -The second row contains general purpose buttons. Here is the meaning of each button: +At the bottom of the harvester list there are the following buttons: -1. *Back* Simply returns to the main administration page. -2. *Add* This button creates a new harvester. -3. *Refresh* Refreshes the current list of harvesters from the server. This can be useful to see if the harvesting list has been altered by someone else or to get the status of any running harvesters. -4. *History* Show the harvesting history of all harvesters. See [Harvest History](index.md#harvest_history) for more details. +1. *Harvest from*: Allows you to select the type of harvester to create. +2. *Clone*: Creates a new harvester, using the information of an existing harvester. +3. *Refresh*: Refreshes the list of harvesters. -## Harvesting Status and Error Icons {#admin_harvesting_status} +### Adding new harvesters -## Harvesting result tips +To add a new harvester, click on the `Harvest from` button. A drop-down list with all available harvesting protocols will appear. -When a harvester runs and completes, a tool tip showing detailed information about the harvesting process is shown in the **Errors** column for the harvester. If the harvester succeeded then hovering the cursor over the tool tip will show a table, with some rows labelled as follows: +![](img/add-harvester.png) -- **Total** - This is the total number of metadata found remotely. Metadata with the same id are considered as one. -- **Added** - Number of metadata added to the system because they were not present locally. -- **Removed** - Number of metadata that have been removed locally because they are not present in the remote server anymore. -- **Updated** - Number of metadata that are present locally but that needed to be updated because their last change date was different from the remote one. -- **Unchanged** - Local metadata left unchanged. Their remote last change date did not change. -- **Unknown schema** - Number of skipped metadata because their format was not recognised by GeoNetwork. -- **Unretrievable** - Number of metadata that were ready to be retrieved from the remote server but for some reason there was an exception during the data transfer process. -- **Bad Format** - Number of skipped metadata because they did not have a valid XML representation. -- **Does not validate** - Number of metadata which did not validate against their schema. These metadata were harvested with success but skipped due to the validation process. Usually, there is an option to force validation: if you want to harvest these metadata anyway, simply turn/leave it off. -- **Thumbnails/Thumbnails failed** - Number of metadata thumbnail images added/that could not be added due to some failure. -- **Metadata URL attribute used** - Number of layers/featuretypes/coverages that had a metadata URL that could be used to link to a metadata record (OGC Service Harvester only). -- **Services added** - Number of ISO19119 service records created and added to the catalogue (for THREDDS catalog harvesting only). -- **Collections added** - Number of collection dataset records added to the catalogue (for THREDDS catalog harvesting only). -- **Atomics added** - Number of atomic dataset records added to the catalogue (for THREDDS catalog harvesting only). -- **Subtemplates added** - Number of subtemplates (= fragment visible in the catalog) added to the metadata catalog. -- **Subtemplates removed** - Number of subtemplates (= fragment visible in the catalog) removed from the metadata catalog. -- **Fragments w/Unknown schema** - Number of fragments which have an unknown metadata schema. -- **Fragments returned** - Number of fragments returned by the harvester. -- **Fragments matched** - Number of fragments that had identifiers that in the template used by the harvester. -- **Existing datasets** - Number of metadata records for datasets that existed when the THREDDS harvester was run. -- **Records built** - Number of records built by the harvester from the template and fragments. -- **Could not insert** - Number of records that the harvester could not insert into the catalog (usually because the record was already present eg. in the Z3950 harvester this can occur if the same record is harvested from different servers). +You can choose the type of harvesting you want to do. Supported harvesters and details on what to do next can be found in the following sections. -## Adding new harvesters +### Harvester History {#harvest_history} -The Add button in the main page allows you to add new harvesters. A drop down list is then shown with all the available harvester protocols. +Each time a harvester is run, a log file is generated of what was harvested and/or what went wrong (e.g., an exception report). To view the harvester history, select a harvester in the harvester list and select the `Harvester history` tab on the harvester page: -You can choose the type of harvest you intend to perform and press *Add* to begin the process of adding the harvester. The supported harvesters and details of what to do next are in the following sections: +![](img/harvester-history.png) -## Harvest History {#harvest_history} +Once the harvester history is displayed, it is possible to download the log file of the harvester run and delete the harvester history. -Each time a harvester is run, it generates a status report of what was harvested and/or what went wrong (eg. exception report). These reports are stored in a table in the database used by GeoNetwork. The entire harvesting history for all harvesters can be recalled using the History button on the Harvesting Management page. The harvest history for an individual harvester can also be recalled using the History link in the Operations for that harvester. +### Harvester records -Once the harvest history has been displayed it is possible to: +When a harvester is executed, you can see the list of harvested metadata and some statistics about the metadata. Select a harvester in the list of harvesters and select the `Metadata records` tab on the harvester page: -- expand the detail of any exceptions -- sort the history by harvest date (or in the case of the history of all harvesters, by harvester name) -- delete any history entry or the entire history +![](img/harvester-statistics.png) diff --git a/docs/manual/mkdocs.yml b/docs/manual/mkdocs.yml index 73af7ac42b5..40d6d86640f 100644 --- a/docs/manual/mkdocs.yml +++ b/docs/manual/mkdocs.yml @@ -294,6 +294,7 @@ nav: - user-guide/harvesting/harvesting-csw.md - user-guide/harvesting/harvesting-filesystem.md - user-guide/harvesting/harvesting-geonetwork.md + - user-guide/harvesting/harvesting-geonetwork-2.md - user-guide/harvesting/harvesting-geoportal.md - user-guide/harvesting/harvesting-oaipmh.md - user-guide/harvesting/harvesting-ogcwxs.md @@ -302,7 +303,6 @@ nav: - user-guide/harvesting/harvesting-thredds.md - user-guide/harvesting/harvesting-webdav.md - user-guide/harvesting/harvesting-wfs-features.md - - user-guide/harvesting/harvesting-z3950.md - user-guide/export/index.md - 'Administration': - administrator-guide/index.md diff --git a/doi/src/main/java/org/fao/geonet/doi/client/DoiManager.java b/doi/src/main/java/org/fao/geonet/doi/client/DoiManager.java index c21d0f3c4a0..012c710585e 100644 --- a/doi/src/main/java/org/fao/geonet/doi/client/DoiManager.java +++ b/doi/src/main/java/org/fao/geonet/doi/client/DoiManager.java @@ -32,8 +32,8 @@ import org.fao.geonet.domain.*; import org.fao.geonet.kernel.AccessManager; import org.fao.geonet.kernel.ApplicableSchematron; -import org.fao.geonet.kernel.DataManager; import org.fao.geonet.kernel.SchematronValidator; +import org.fao.geonet.kernel.datamanager.base.BaseMetadataManager; import org.fao.geonet.kernel.datamanager.base.BaseMetadataSchemaUtils; import org.fao.geonet.kernel.datamanager.base.BaseMetadataUtils; import org.fao.geonet.kernel.schema.MetadataSchema; @@ -41,12 +41,10 @@ import org.fao.geonet.kernel.search.IndexingMode; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.repository.SchematronRepository; -import org.fao.geonet.utils.Log; import org.fao.geonet.utils.Xml; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.Namespace; -import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import java.nio.file.Files; @@ -60,11 +58,9 @@ /** * Class to register/unregister DOIs using the Datacite Metadata Store (MDS) API. + *

+ * See ... * - * See https://support.datacite.org/docs/mds-api-guide - * - * @author Jose García - * @author Francois Prunayre */ public class DoiManager { private static final String DOI_ADD_XSL_PROCESS = "process/doi-add.xsl"; @@ -75,112 +71,52 @@ public class DoiManager { public static final String DOI_DEFAULT_URL = "https://doi.org/"; public static final String DOI_DEFAULT_PATTERN = "{{uuid}}"; - private IDoiClient client; - private String doiPrefix; - private String doiPattern; - private String landingPageTemplate; - private boolean initialised = false; - private boolean isMedra = false; - - DataManager dm; - SettingManager sm; - BaseMetadataSchemaUtils schemaUtils; - - @Autowired - BaseMetadataUtils metadataUtils; - - @Autowired - SchematronValidator validator; - - @Autowired - DoiBuilder doiBuilder; + private final SettingManager sm; + private final BaseMetadataSchemaUtils schemaUtils; + private final BaseMetadataManager metadataManager; + private final BaseMetadataUtils metadataUtils; + private final SchematronValidator validator; + private final DoiBuilder doiBuilder; + private final SchematronRepository schematronRepository; + + + public DoiManager(final SettingManager sm, final BaseMetadataSchemaUtils schemaUtils, + final BaseMetadataManager metadataManager, final BaseMetadataUtils metadataUtils, + final SchematronValidator validator, final DoiBuilder doiBuilder, + final SchematronRepository schematronRepository) { + this.sm = sm; + this.schemaUtils = schemaUtils; + this.metadataManager = metadataManager; + this.metadataUtils = metadataUtils; + this.validator = validator; + this.doiBuilder = doiBuilder; + this.schematronRepository = schematronRepository; - @Autowired - SchematronRepository schematronRepository; - - - public DoiManager() { - sm = ApplicationContextHolder.get().getBean(SettingManager.class); - dm = ApplicationContextHolder.get().getBean(DataManager.class); - schemaUtils = ApplicationContextHolder.get().getBean(BaseMetadataSchemaUtils.class); - - loadConfig(); } - public boolean isInitialised() { - return initialised; + private IDoiClient createDoiClient(DoiServer doiServer) { + boolean isMedra = isMedraServer(doiServer); + return isMedra ? + new DoiMedraClient(doiServer.getUrl(), doiServer.getUsername(), doiServer.getPassword(), doiServer.getPublicUrl()) : + new DoiDataciteClient(doiServer.getUrl(), doiServer.getUsername(), doiServer.getPassword(), doiServer.getPublicUrl()); } - /** - * Check parameters and build the client. - * - */ - public void loadConfig() { - initialised = false; - if (sm != null) { - - String serverUrl = sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_DOIURL); - String doiPublicUrl = StringUtils.defaultIfEmpty( - sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_DOIPUBLICURL), - DOI_DEFAULT_URL); - String username = sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_DOIUSERNAME); - String password = sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_DOIPASSWORD); - - doiPrefix = sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_DOIKEY); - doiPattern = StringUtils.defaultIfEmpty( - sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_DOIPATTERN), - DOI_DEFAULT_PATTERN - ); - - landingPageTemplate = sm.getValue(DoiSettings.SETTING_PUBLICATION_DOI_LANDING_PAGE_TEMPLATE); - - final boolean emptyUrl = StringUtils.isEmpty(serverUrl); - final boolean emptyUsername = StringUtils.isEmpty(username); - final boolean emptyPassword = StringUtils.isEmpty(password); - final boolean emptyPrefix = StringUtils.isEmpty(doiPrefix); - if (emptyUrl || - emptyUsername || - emptyPassword || - emptyPrefix) { - StringBuilder report = new StringBuilder("DOI configuration is not complete. Check in System Configuration to fill the DOI configuration."); - if (emptyUrl) { - report.append("\n* URL MUST be set"); - } - if (emptyUsername) { - report.append("\n* Username MUST be set"); - } - if (emptyPassword) { - report.append("\n* Password MUST be set"); - } - if (emptyPrefix) { - report.append("\n* Prefix MUST be set"); - } - Log.warning(DoiSettings.LOGGER_NAME, - report.toString()); - } else { - Log.debug(DoiSettings.LOGGER_NAME, - "DOI configuration looks perfect."); - isMedra = serverUrl.contains(MEDRA_SEARCH_KEY); - this.client = - isMedra ? - new DoiMedraClient(serverUrl, username, password, doiPublicUrl) : - new DoiDataciteClient(serverUrl, username, password, doiPublicUrl); - initialised = true; - } - } - } + public String checkDoiUrl(DoiServer doiServer, AbstractMetadata metadata) throws DoiClientException { + checkInitialised(doiServer); + checkCanHandleMetadata(doiServer, metadata); - public String checkDoiUrl(AbstractMetadata metadata) { - return doiBuilder.create(doiPattern, doiPrefix, metadata); + return doiBuilder.create(doiServer.getPattern(), doiServer.getPrefix(), metadata); } - public Map check(ServiceContext serviceContext, AbstractMetadata metadata, Element dataciteMetadata) throws Exception { + public Map check(ServiceContext serviceContext, DoiServer doiServer, AbstractMetadata metadata, Element dataciteMetadata) throws Exception { Map conditions = new HashMap<>(); - checkInitialised(); + checkInitialised(doiServer); + checkCanHandleMetadata(doiServer, metadata); conditions.put(DoiConditions.API_CONFIGURED, true); - String doi = doiBuilder.create(doiPattern, doiPrefix, metadata); - checkPreConditions(metadata, doi); + IDoiClient doiClient = createDoiClient(doiServer); + String doi = doiBuilder.create(doiServer.getPattern(), doiServer.getPrefix(), metadata); + checkPreConditions(doiClient, metadata, doi); conditions.put(DoiConditions.RECORD_IS_PUBLIC, true); conditions.put(DoiConditions.STANDARD_SUPPORT, true); @@ -188,26 +124,26 @@ public Map check(ServiceContext serviceContext, AbstractMetadat // ** Convert to DataCite format Element dataciteFormatMetadata = dataciteMetadata == null ? - convertXmlToDataCiteFormat(metadata.getDataInfo().getSchemaId(), - metadata.getXmlData(false), doi) : dataciteMetadata; - checkPreConditionsOnDataCite(metadata, doi, dataciteFormatMetadata, serviceContext.getLanguage()); + convertXmlToDataCiteFormat(doiServer, metadata.getDataInfo().getSchemaId(), + metadata.getXmlData(false), doi) : dataciteMetadata; + checkPreConditionsOnDataCite(doiClient, metadata, doi, dataciteFormatMetadata, serviceContext.getLanguage()); conditions.put(DoiConditions.DATACITE_FORMAT_IS_VALID, true); return conditions; } - public Map register(ServiceContext context, AbstractMetadata metadata) throws Exception { + public Map register(ServiceContext context, DoiServer doiServer, AbstractMetadata metadata) throws Exception { Map doiInfo = new HashMap<>(3); // The new DOI for this record - String doi = doiBuilder.create(doiPattern, doiPrefix, metadata); + String doi = doiBuilder.create(doiServer.getPattern(), doiServer.getPrefix(), metadata); doiInfo.put("doi", doi); // The record in datacite format Element dataciteFormatMetadata = - convertXmlToDataCiteFormat(metadata.getDataInfo().getSchemaId(), - metadata.getXmlData(false), doi); + convertXmlToDataCiteFormat(doiServer, metadata.getDataInfo().getSchemaId(), + metadata.getXmlData(false), doi); try { - check(context, metadata, dataciteFormatMetadata); + check(context, doiServer, metadata, dataciteFormatMetadata); } catch (ResourceAlreadyExistException ignore) { // Update DOI doiInfo.put("update", "true"); @@ -215,7 +151,8 @@ public Map register(ServiceContext context, AbstractMetadata met throw e; } - createDoi(context, metadata, doiInfo, dataciteFormatMetadata); + IDoiClient doiClient = createDoiClient(doiServer); + createDoi(context, doiClient, doiServer, metadata, doiInfo, dataciteFormatMetadata); checkDoiCreation(metadata, doiInfo); return doiInfo; @@ -230,7 +167,7 @@ public Map register(ServiceContext context, AbstractMetadata met * @throws IOException * @throws JDOMException */ - private void checkPreConditions(AbstractMetadata metadata, String doi) throws DoiClientException, IOException, JDOMException, ResourceAlreadyExistException { + private void checkPreConditions(IDoiClient doiClient, AbstractMetadata metadata, String doi) throws DoiClientException, IOException, JDOMException, ResourceAlreadyExistException { // Record MUST be public AccessManager am = ApplicationContextHolder.get().getBean(AccessManager.class); boolean visibleToAll = false; @@ -239,11 +176,11 @@ private void checkPreConditions(AbstractMetadata metadata, String doi) throws Do } catch (Exception e) { throw new DoiClientException(String.format( "Failed to check if record '%s' is visible to all for DOI creation." + - " Error is %s.", + " Error is %s.", metadata.getUuid(), e.getMessage())) .withMessageKey("exception.doi.failedVisibilityCheck") .withDescriptionKey("exception.doi.failedVisibilityCheck.description", - new String[]{ metadata.getUuid(), e.getMessage() }); + new String[]{metadata.getUuid(), e.getMessage()}); } if (!visibleToAll) { @@ -251,7 +188,7 @@ private void checkPreConditions(AbstractMetadata metadata, String doi) throws Do "Record '%s' is not public and we cannot request a DOI for such a record. Publish this record first.", metadata.getUuid())) .withMessageKey("exception.doi.recordNotPublic") - .withDescriptionKey("exception.doi.recordNotPublic.description", new String[]{ metadata.getUuid() }); + .withDescriptionKey("exception.doi.recordNotPublic.description", new String[]{metadata.getUuid()}); } // Record MUST not contains a DOI @@ -259,7 +196,7 @@ private void checkPreConditions(AbstractMetadata metadata, String doi) throws Do String currentDoi = metadataUtils.getDoi(metadata.getUuid()); if (StringUtils.isNotEmpty(currentDoi)) { // Current doi does not match the one going to be inserted. This is odd - String newDoi = client.createPublicUrl(doi); + String newDoi = doiClient.createPublicUrl(doi); if (!currentDoi.equals(newDoi)) { throw new DoiClientException(String.format( "Record '%s' already contains a DOI %s which is not equal " + @@ -269,7 +206,7 @@ private void checkPreConditions(AbstractMetadata metadata, String doi) throws Do "an existing DOI.", metadata.getUuid(), currentDoi, currentDoi, newDoi)) .withMessageKey("exception.doi.resourcesContainsDoiNotEqual") - .withDescriptionKey("exception.doi.resourcesContainsDoiNotEqual.description", new String[]{ metadata.getUuid(), currentDoi, currentDoi, newDoi }); + .withDescriptionKey("exception.doi.resourcesContainsDoiNotEqual.description", new String[]{metadata.getUuid(), currentDoi, currentDoi, newDoi}); } throw new ResourceAlreadyExistException(String.format( @@ -279,7 +216,7 @@ private void checkPreConditions(AbstractMetadata metadata, String doi) throws Do metadata.getUuid(), currentDoi, currentDoi)) .withMessageKey("exception.doi.resourceContainsDoi") .withDescriptionKey("exception.doi.resourceContainsDoi.description", - new String[]{ metadata.getUuid(), currentDoi, currentDoi }); + new String[]{metadata.getUuid(), currentDoi, currentDoi}); } } catch (ResourceNotFoundException e) { final MetadataSchema schema = schemaUtils.getSchema(metadata.getDataInfo().getSchemaId()); @@ -299,24 +236,23 @@ private void checkPreConditions(AbstractMetadata metadata, String doi) throws Do schema.getName())) .withMessageKey("exception.doi.missingSavedquery") .withDescriptionKey("exception.doi.missingSavedquery.description", - new String[]{ metadata.getUuid(), schema.getName(), - SavedQuery.DOI_GET, e.getMessage(), - schema.getName() }); + new String[]{metadata.getUuid(), schema.getName(), + SavedQuery.DOI_GET, e.getMessage(), + schema.getName()}); } } /** * Check conditions on DataCite side. + * * @param metadata * @param doi * @param dataciteMetadata * @param language */ - private void checkPreConditionsOnDataCite(AbstractMetadata metadata, String doi, Element dataciteMetadata, String language) throws DoiClientException, ResourceAlreadyExistException { + private void checkPreConditionsOnDataCite(IDoiClient doiClient, AbstractMetadata metadata, String doi, Element dataciteMetadata, String language) throws DoiClientException, ResourceAlreadyExistException { // * DataCite API is up an running ? - - try { List validations = new ArrayList<>(); List applicableSchematron = Lists.newArrayList(); @@ -341,7 +277,7 @@ private void checkPreConditionsOnDataCite(AbstractMetadata metadata, String doi, StringBuilder message = new StringBuilder(); if (!failures.isEmpty()) { message.append("

    "); - failures.forEach(f -> message.append("
  • ").append(((Element)f).getTextNormalize()).append("
  • ")); + failures.forEach(f -> message.append("
  • ").append(((Element) f).getTextNormalize()).append("
  • ")); message.append("
"); throw new DoiClientException(String.format( @@ -349,9 +285,9 @@ private void checkPreConditionsOnDataCite(AbstractMetadata metadata, String doi, metadata.getUuid(), failures.size(), message)) .withMessageKey("exception.doi.recordNotConformantMissingInfo") .withDescriptionKey("exception.doi.recordNotConformantMissingInfo.description", - new String[]{ metadata.getUuid(), String.valueOf(failures.size()), message.toString() }); + new String[]{metadata.getUuid(), String.valueOf(failures.size()), message.toString()}); } - } catch (IOException|JDOMException e) { + } catch (IOException | JDOMException e) { throw new DoiClientException(String.format( "Record '%s' is not conform with DataCite validation rules for mandatory fields. Error is: %s. " + "Required fields in DataCite are: identifier, creators, titles, publisher, publicationYear, resourceType. " + @@ -360,7 +296,7 @@ private void checkPreConditionsOnDataCite(AbstractMetadata metadata, String doi, metadata.getUuid(), e.getMessage(), sm.getNodeURL(), metadata.getUuid())) .withMessageKey("exception.doi.recordNotConformantMissingMandatory") .withDescriptionKey("exception.doi.recordNotConformantMissingMandatory.description", - new String[]{ metadata.getUuid(), e.getMessage(), sm.getNodeURL(), metadata.getUuid() }); + new String[]{metadata.getUuid(), e.getMessage(), sm.getNodeURL(), metadata.getUuid()}); } // XSD validation @@ -375,24 +311,24 @@ private void checkPreConditionsOnDataCite(AbstractMetadata metadata, String doi, metadata.getUuid(), e.getMessage(), sm.getNodeURL(), metadata.getUuid())) .withMessageKey("exception.doi.recordInvalid") .withDescriptionKey("exception.doi.recordInvalid.description", - new String[]{ metadata.getUuid(), e.getMessage(), sm.getNodeURL(), metadata.getUuid() }); + new String[]{metadata.getUuid(), e.getMessage(), sm.getNodeURL(), metadata.getUuid()}); } // * MDS / DOI does not exist already // curl -i --user username:password https://mds.test.datacite.org/doi/10.5072/GN // Return 404 - final String doiResponse = client.retrieveDoi(doi); + final String doiResponse = doiClient.retrieveDoi(doi); if (doiResponse != null) { throw new ResourceAlreadyExistException(String.format( "Record '%s' looks to be already published on DataCite with DOI '%s'. DOI on Datacite point to: %s. " + "If the DOI is not correct, remove it from the record and ask for a new one.", metadata.getUuid(), - client.createUrl("doi") + "/" + doi, + doiClient.createUrl("doi") + "/" + doi, doi, doi, doiResponse)) .withMessageKey("exception.doi.resourceAlreadyPublished") - .withDescriptionKey("exception.doi.resourceAlreadyPublished.description", new String[]{ metadata.getUuid(), - client.createUrl("doi") + "/" + doi, - doi, doi, doiResponse }); + .withDescriptionKey("exception.doi.resourceAlreadyPublished.description", new String[]{metadata.getUuid(), + doiClient.createUrl("doi") + "/" + doi, + doi, doi, doiResponse}); } // TODO: Could be relevant at some point to return states (draft/findable) @@ -404,10 +340,12 @@ private void checkPreConditionsOnDataCite(AbstractMetadata metadata, String doi, /** * Use the DataCite API to register the new DOI. + * * @param context * @param metadata */ - private void createDoi(ServiceContext context, AbstractMetadata metadata, Map doiInfo, Element dataciteMetadata) throws Exception { + private void createDoi(ServiceContext context, IDoiClient doiClient, DoiServer doiServer, + AbstractMetadata metadata, Map doiInfo, Element dataciteMetadata) throws Exception { // * Now, let's create the DOI // picking a DOI name, @@ -418,29 +356,30 @@ private void createDoi(ServiceContext context, AbstractMetadata metadata, Map doi } - public void unregisterDoi(AbstractMetadata metadata, ServiceContext context) throws DoiClientException, ResourceNotFoundException { - checkInitialised(); + public void unregisterDoi(DoiServer doiServer, AbstractMetadata metadata, ServiceContext context) throws DoiClientException, ResourceNotFoundException { + checkInitialised(doiServer); + checkCanHandleMetadata(doiServer, metadata); - final String doi = doiBuilder.create(doiPattern, doiPrefix, metadata); - final String doiResponse = client.retrieveDoi(doi); + IDoiClient doiClient = createDoiClient(doiServer); + final String doi = doiBuilder.create(doiServer.getPattern(), doiServer.getPrefix(), metadata); + final String doiResponse = doiClient.retrieveDoi(doi); if (doiResponse == null) { throw new ResourceNotFoundException(String.format( "Record '%s' is not available on DataCite. DOI '%s' does not exist.", @@ -467,12 +408,12 @@ public void unregisterDoi(AbstractMetadata metadata, ServiceContext context) thr Element md = metadata.getXmlData(false); String doiUrl = metadataUtils.getDoi(metadata.getUuid()); - client.deleteDoiMetadata(doi); - client.deleteDoi(doi); + doiClient.deleteDoiMetadata(doi); + doiClient.deleteDoi(doi); Element recordWithoutDoi = removeDOIValue(doiUrl, metadata.getDataInfo().getSchemaId(), md); - dm.updateMetadata(context, metadata.getId() + "", recordWithoutDoi, false, true, + metadataManager.updateMetadata(context, metadata.getId() + "", recordWithoutDoi, false, true, context.getLanguage(), new ISODate().toString(), true, IndexingMode.full); } catch (Exception ex) { throw new DoiClientException(String.format( @@ -485,10 +426,9 @@ public void unregisterDoi(AbstractMetadata metadata, ServiceContext context) thr /** * Sets the DOI URL value in the metadata record using the process DOI_ADD_XSL_PROCESS. - * */ - public Element setDOIValue(String doi, String schema, Element md) throws Exception { - Path styleSheet = dm.getSchemaDir(schema).resolve(DOI_ADD_XSL_PROCESS); + public Element setDOIValue(IDoiClient doiClient, String doi, String schema, Element md) throws Exception { + Path styleSheet = schemaUtils.getSchemaDir(schema).resolve(DOI_ADD_XSL_PROCESS); boolean exists = Files.exists(styleSheet); if (!exists) { String message = String.format("To create a DOI, the schema has to defined how to insert a DOI in the record. The schema_plugins/%s/process/%s was not found. Create the XSL transformation.", @@ -501,7 +441,7 @@ public Element setDOIValue(String doi, String schema, Element md) throws Excepti .withDescriptionKey("exception.doi.serverErrorCreate.description", new String[]{message}); } - String doiPublicUrl = client.createPublicUrl(""); + String doiPublicUrl = doiClient.createPublicUrl(""); Map params = new HashMap<>(1); params.put("doi", doi); @@ -511,10 +451,9 @@ public Element setDOIValue(String doi, String schema, Element md) throws Excepti /** * Sets the DOI URL value in the metadata record using the process DOI_ADD_XSL_PROCESS. - * */ public Element removeDOIValue(String doi, String schema, Element md) throws Exception { - Path styleSheet = dm.getSchemaDir(schema).resolve(DOI_REMOVE_XSL_PROCESS); + Path styleSheet = schemaUtils.getSchemaDir(schema).resolve(DOI_REMOVE_XSL_PROCESS); boolean exists = Files.exists(styleSheet); if (!exists) { String message = String.format("To remove a DOI, the schema has to defined how to remove a DOI in the record. The schema_plugins/%s/process/%s was not found. Create the XSL transformation.", @@ -540,9 +479,9 @@ public Element removeDOIValue(String doi, String schema, Element md) throws Exce * @return The record converted into the DataCite format. * @throws Exception if there is no conversion available. */ - private Element convertXmlToDataCiteFormat(String schema, Element md, String doi) throws Exception { - final Path styleSheet = dm.getSchemaDir(schema).resolve( - isMedra ? DATACITE_MEDRA_XSL_CONVERSION_FILE : DATACITE_XSL_CONVERSION_FILE); + private Element convertXmlToDataCiteFormat(DoiServer doiServer, String schema, Element md, String doi) throws Exception { + final Path styleSheet = schemaUtils.getSchemaDir(schema).resolve( + isMedraServer(doiServer) ? DATACITE_MEDRA_XSL_CONVERSION_FILE : DATACITE_XSL_CONVERSION_FILE); final boolean exists = Files.exists(styleSheet); if (!exists) { String message = String.format("To create a DOI, the record needs to be converted to the DataCite format (https://schema.datacite.org/). You need to create a formatter for this in schema_plugins/%s/%s. If the standard is a profile of ISO19139, you can simply point to the ISO19139 formatter.", @@ -555,17 +494,53 @@ private Element convertXmlToDataCiteFormat(String schema, Element md, String doi .withDescriptionKey("exception.doi.serverErrorCreate.description", new String[]{message}); } - Map params = new HashMap<>(); + Map params = new HashMap<>(); params.put(DOI_ID_PARAMETER, doi); return Xml.transform(md, styleSheet, params); } - private void checkInitialised() throws DoiClientException { - if (!initialised) { - throw new DoiClientException("DOI configuration is not complete. Check System Configuration and set the DOI configuration.") + private void checkInitialised(DoiServer doiServer) throws DoiClientException { + final boolean emptyUrl = StringUtils.isEmpty(doiServer.getUrl()); + final boolean emptyUsername = StringUtils.isEmpty(doiServer.getUsername()); + final boolean emptyPassword = StringUtils.isEmpty(doiServer.getPassword()); + final boolean emptyPrefix = StringUtils.isEmpty(doiServer.getPrefix()); + + if (emptyUrl || + emptyUsername || + emptyPassword || + emptyPrefix) { + throw new DoiClientException("DOI server configuration is not complete. Check the DOI server configuration to complete it.") .withMessageKey("exception.doi.configurationMissing") .withDescriptionKey("exception.doi.configurationMissing.description", new String[]{}); + + } + } + + /** + * Checks if the DOI server can handle the metadata: + * - The DOI server is not publishing metadata for certain metadata group(s) or + * - it publishes metadata from the metadata group owner. + * + * @param doiServer The DOI server. + * @param metadata The metadata to process. + * @throws DoiClientException + */ + private void checkCanHandleMetadata(DoiServer doiServer, AbstractMetadata metadata) throws DoiClientException { + if (!doiServer.getPublicationGroups().isEmpty()) { + Integer groupOwner = metadata.getSourceInfo().getGroupOwner(); + + if (doiServer.getPublicationGroups().stream().noneMatch(g -> g.getId() == groupOwner)) { + throw new DoiClientException( + String.format("DOI server '%s' can not handle the metadata with UUID '%s'.", + doiServer.getName(), metadata.getUuid())) + .withMessageKey("exception.doi.serverCanNotHandleRecord") + .withDescriptionKey("exception.doi.serverCanNotHandleRecord.description", new String[]{doiServer.getName(), metadata.getUuid()}); + } } + } + private boolean isMedraServer(DoiServer doiServer) { + return doiServer.getUrl().contains(MEDRA_SEARCH_KEY); + } } diff --git a/domain/src/main/java/org/fao/geonet/domain/DoiServer.java b/domain/src/main/java/org/fao/geonet/domain/DoiServer.java new file mode 100644 index 00000000000..90c93c31c6d --- /dev/null +++ b/domain/src/main/java/org/fao/geonet/domain/DoiServer.java @@ -0,0 +1,284 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.domain; + +import org.fao.geonet.entitylistener.DoiServerEntityListenerManager; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "Doiservers") +@Cacheable +@Access(AccessType.PROPERTY) +@EntityListeners(DoiServerEntityListenerManager.class) +@SequenceGenerator(name = DoiServer.ID_SEQ_NAME, initialValue = 100, allocationSize = 1) +public class DoiServer extends GeonetEntity { + static final String ID_SEQ_NAME = "doiserver_id_seq"; + + private int id; + private String name; + private String description; + private String url; + private String username; + private String password; + private String landingPageTemplate; + private String publicUrl; + private String pattern = "{{uuid}}"; + private String prefix; + private Set publicationGroups = new HashSet<>(); + + /** + * Get the id of the DOI server.

This is autogenerated and when a new DOI server is created + * the DOI server will be assigned a new value.

+ * + * @return the id of the DOI server. + */ + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = ID_SEQ_NAME) + @Column(nullable = false) + public int getId() { + return id; + } + + /** + * Set the id of the DOI server.

If you want to update an existing DOI server then you should + * set this id to the DOI server you want to update and set the other values to the desired + * values.

+ * + * @param id the id of the group. + * @return this DOI server object + */ + public DoiServer setId(int id) { + this.id = id; + return this; + } + + /** + * Get the basic/default name of the DOI server. This is non-translated and can be used to look + * up the DOI server like an id can.

This is a required property.

There is a max length + * to the name allowed. See the annotation for the length value.

+ * + * @return DOI server name + */ + @Column(nullable = false, length = 32) + public String getName() { + return name; + } + + /** + * Set the basic/default name of the DOI server. This is non-translated and can be used to look + * up the DOI server like an id can.

This is a required property.

There is a max length + * to the name allowed. See the annotation on {@link #getName()} for the length value.

+ */ + public DoiServer setName(String name) { + this.name = name; + return this; + } + + /** + * Get a description of the DOI server. + * + * @return the description. + */ + @Column(length = 255) + public String getDescription() { + return description; + } + + /** + * Set the DOI server description. + * + * @param description the description. + * @return this DOI server object. + */ + public DoiServer setDescription(String description) { + this.description = description; + return this; + } + + + /** + * Get the API URL for the DOI server. + * + * @return the DOI server API URL. + */ + @Column(nullable = false, length = 255) + public String getUrl() { + return url; + } + + /** + * Set the REST API configuration URL for the DOI server. + * + * @param url the server URL. + * @return this DOI server object. + */ + public DoiServer setUrl(String url) { + this.url = url; + return this; + } + + /** + * Get the username to use for connecting to the DOI server. + * + * @return the username. + */ + @Column(length = 128) + public String getUsername() { + return username; + } + + public DoiServer setUsername(String username) { + this.username = username; + return this; + } + + /** + * Get the password to use for connecting to the DOI server. + * + * @return the password. + */ + @Column(length = 128) + @Type(type="encryptedString") + public String getPassword() { + return password; + } + + public DoiServer setPassword(String password) { + this.password = password; + return this; + } + + /** + * Set the DOI landing page URL template. + * + * @param landingPageTemplate the landing page URL template. + * @return this DOI server object. + */ + public DoiServer setLandingPageTemplate(String landingPageTemplate) { + this.landingPageTemplate = landingPageTemplate; + return this; + } + + /** + * Get the DOI landing page URL template. + * + * @return the landing page URL template. + */ + @Column(nullable = false, length = 255) + public String getLandingPageTemplate() { + return landingPageTemplate; + } + + /** + * Set the DOI URL prefix. + * + * @param publicUrl the URL prefix. + * @return this DOI server object. + */ + public DoiServer setPublicUrl(String publicUrl) { + this.publicUrl = publicUrl; + return this; + } + + /** + * Get the DOI URL prefix. + * + * @return the URL prefix. + */ + @Column(nullable = false, length = 255) + public String getPublicUrl() { + return publicUrl; + } + + /** + * Set the DOI identifier pattern. + * + * @param pattern the identifier pattern. + * @return this DOI server object. + */ + public DoiServer setPattern(String pattern) { + this.pattern = pattern; + return this; + } + + /** + * Get the DOI identifier pattern. + * + * @return the identifier pattern. + */ + @Column(nullable = false, length = 255) + public String getPattern() { + return pattern; + } + + + /** + * Set the DOI prefix. + * + * @param prefix the DOI prefix. + * @return this DOI server object. + */ + public DoiServer setPrefix(String prefix) { + this.prefix = prefix; + return this; + } + + /** + * Get the DOI prefix. + * + * @return the DOI prefix. + */ + @Column(nullable = false, length = 15) + public String getPrefix() { + return prefix; + } + + /** + * Sets the groups which metadata should be published to the DOI server. + * + * @param publicationGroups Publication groups. + * @return + */ + public void setPublicationGroups(Set publicationGroups) { + this.publicationGroups = publicationGroups; + } + + /** + * Get the groups which metadata is published to the DOI server. + * + * @return Publication groups. + */ + @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST) + @JoinTable( + name = "doiservers_group", + joinColumns = @JoinColumn(name = "doiserver_id"), + inverseJoinColumns = @JoinColumn(name = "group_id")) + public Set getPublicationGroups() { + return publicationGroups; + } +} diff --git a/domain/src/main/java/org/fao/geonet/entitylistener/DoiServerEntityListenerManager.java b/domain/src/main/java/org/fao/geonet/entitylistener/DoiServerEntityListenerManager.java new file mode 100644 index 00000000000..8d4af1bdf92 --- /dev/null +++ b/domain/src/main/java/org/fao/geonet/entitylistener/DoiServerEntityListenerManager.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.entitylistener; + +import org.fao.geonet.domain.DoiServer; + +import javax.persistence.*; + +public class DoiServerEntityListenerManager extends AbstractEntityListenerManager { + @PrePersist + public void prePresist(final DoiServer entity) { + handleEvent(PersistentEventType.PrePersist, entity); + } + + @PreRemove + public void preRemove(final DoiServer entity) { + handleEvent(PersistentEventType.PreRemove, entity); + } + + @PostPersist + public void postPersist(final DoiServer entity) { + handleEvent(PersistentEventType.PostPersist, entity); + } + + @PostRemove + public void postRemove(final DoiServer entity) { + handleEvent(PersistentEventType.PostRemove, entity); + } + + @PreUpdate + public void preUpdate(final DoiServer entity) { + handleEvent(PersistentEventType.PreUpdate, entity); + } + + @PostUpdate + public void postUpdate(final DoiServer entity) { + handleEvent(PersistentEventType.PostUpdate, entity); + } + + @PostLoad + public void postLoad(final DoiServer entity) { + handleEvent(PersistentEventType.PostLoad, entity); + } +} diff --git a/domain/src/main/java/org/fao/geonet/repository/DoiServerRepository.java b/domain/src/main/java/org/fao/geonet/repository/DoiServerRepository.java new file mode 100644 index 00000000000..25ca32429ce --- /dev/null +++ b/domain/src/main/java/org/fao/geonet/repository/DoiServerRepository.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.repository; + +import org.fao.geonet.domain.DoiServer; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.Optional; + +public interface DoiServerRepository extends + GeonetRepository, + JpaSpecificationExecutor { + + Optional findOneById(int id); +} diff --git a/domain/src/test/java/org/fao/geonet/repository/DoiServerRepositoryTest.java b/domain/src/test/java/org/fao/geonet/repository/DoiServerRepositoryTest.java new file mode 100644 index 00000000000..bc8daaf4bb6 --- /dev/null +++ b/domain/src/test/java/org/fao/geonet/repository/DoiServerRepositoryTest.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.repository; + +import org.fao.geonet.domain.DoiServer; +import org.fao.geonet.domain.Group; +import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; +import org.jasypt.hibernate5.encryptor.HibernatePBEEncryptorRegistry; +import org.junit.BeforeClass; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.Assert.assertEquals; + +public class DoiServerRepositoryTest extends AbstractSpringDataTest { + + @Autowired + private DoiServerRepository doiServerRepository; + + @Autowired + private GroupRepository groupRepository; + + @PersistenceContext + EntityManager entityManager; + + @BeforeClass + public static void init() { + StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor(); + strongEncryptor.setPassword("testpassword"); + + HibernatePBEEncryptorRegistry registry = + HibernatePBEEncryptorRegistry.getInstance(); + registry.registerPBEStringEncryptor("STRING_ENCRYPTOR", strongEncryptor); + } + + public static DoiServer newDoiServer(AtomicInteger nextId) { + int id = nextId.incrementAndGet(); + return new DoiServer() + .setName("Name " + id) + .setDescription("Desc " + id) + .setUrl("http://server" + id) + .setUsername("username" + id) + .setPassword("password" + id) + .setLandingPageTemplate("http://landingpage" + id) + .setPublicUrl("http://publicurl" + id) + .setPattern("pattern" + id) + .setPrefix("prefix" + id); + } + + @Test + public void test_Save_Count_FindOnly_DeleteAll() throws Exception { + assertEquals(0, doiServerRepository.count()); + DoiServer doiServer = newDoiServer(); + DoiServer savedDoiServer = doiServerRepository.save(doiServer); + + doiServerRepository.flush(); + entityManager.flush(); + entityManager.clear(); + + doiServer.setId(savedDoiServer.getId()); + assertEquals(1, doiServerRepository.count()); + Optional retrievedDoiServerByIdOpt = doiServerRepository.findOneById(doiServer.getId()); + assertEquals(true, retrievedDoiServerByIdOpt.isPresent()); + assertSameContents(doiServer, retrievedDoiServerByIdOpt.get()); + + doiServerRepository.deleteAll(); + + doiServerRepository.flush(); + entityManager.flush(); + entityManager.clear(); + + assertEquals(0, doiServerRepository.count()); + } + + @Test + public void testUpdate() throws Exception { + Group group1 = groupRepository.save(GroupRepositoryTest.newGroup(_inc)); + Group group2 = groupRepository.save(GroupRepositoryTest.newGroup(_inc)); + + assertEquals(0, doiServerRepository.count()); + DoiServer doiServer = newDoiServer(); + doiServer.getPublicationGroups().add(group1); + + DoiServer savedDoiServer = doiServerRepository.save(doiServer); + + doiServerRepository.flush(); + entityManager.flush(); + entityManager.clear(); + + doiServer.setId(savedDoiServer.getId()); + + assertEquals(1, doiServerRepository.count()); + Optional retrievedDoiServerByIdOpt = doiServerRepository.findOneById(doiServer.getId()); + assertEquals(true, retrievedDoiServerByIdOpt.isPresent()); + assertSameContents(doiServer, retrievedDoiServerByIdOpt.get()); + + doiServer.setName("New Name"); + doiServer.getPublicationGroups().add(group2); + DoiServer savedDoiServer2 = doiServerRepository.save(doiServer); + + doiServerRepository.flush(); + entityManager.flush(); + entityManager.clear(); + + assertSameContents(savedDoiServer, savedDoiServer2); + + assertEquals(1, doiServerRepository.count()); + retrievedDoiServerByIdOpt = doiServerRepository.findOneById(doiServer.getId()); + assertSameContents(doiServer, retrievedDoiServerByIdOpt.get()); + } + + + private DoiServer newDoiServer() { + return newDoiServer(_inc); + } +} diff --git a/es/README.md b/es/README.md index c4b8cb15ac2..d46d0574d06 100644 --- a/es/README.md +++ b/es/README.md @@ -11,7 +11,7 @@ These configurations should not be used for a production deployment. 1. Use docker pull to download the image (you can check version in the :file:`pom.xml` file): ``` - docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.0 + docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.3 ``` 2. Use docker run, leaving 9200 available: @@ -21,7 +21,7 @@ These configurations should not be used for a production deployment. -e "discovery.type=single-node" \ -e "xpack.security.enabled=false" \ -e "xpack.security.enrollment.enabled=false" \ - docker.elastic.co/elasticsearch/elasticsearch:8.14.0 + docker.elastic.co/elasticsearch/elasticsearch:8.14.3 ``` 3. Check that elasticsearch is running by visiting http://localhost:9200 in a browser @@ -61,8 +61,8 @@ Maven installation ensure you always are using the ``es.version`` version specif ## Manual installation -1. Download Elasticsearch 8.14.0 from https://www.elastic.co/downloads/elasticsearch -and copy to the ES module, e.g., ``es/elasticsearch-8.14.0` +1. Download Elasticsearch 8.14.3 from https://www.elastic.co/downloads/elasticsearch +and copy to the ES module, e.g., ``es/elasticsearch-8.14.3` 2. Disable the security @@ -127,7 +127,7 @@ Don't hesitate to propose a Pull Request with the new language. 1. Configure ES to start on server startup. It is recommended to protect `gn-records` index from the Internet access. - * Note that for debian-based servers the current deb download (8.14.0) can be installed rather than installing manually and can be configured to run as a service using the instructions here: https://www.elastic.co/guide/en/elasticsearch/reference/current/starting-elasticsearch.html + * Note that for debian-based servers the current deb download (8.14.3) can be installed rather than installing manually and can be configured to run as a service using the instructions here: https://www.elastic.co/guide/en/elasticsearch/reference/current/starting-elasticsearch.html # Troubleshoot diff --git a/es/docker-compose.yml b/es/docker-compose.yml index 6d30f675bb1..994c6089a01 100644 --- a/es/docker-compose.yml +++ b/es/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0 + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3 container_name: elasticsearch8 environment: - cluster.name=docker-cluster @@ -20,7 +20,7 @@ services: ports: - "9200:9200" kibana: - image: docker.elastic.co/kibana/kibana:8.14.0 + image: docker.elastic.co/kibana/kibana:8.14.3 container_name: kibana8 ports: - "5601:5601" diff --git a/es/es-dashboards/README.md b/es/es-dashboards/README.md index 9a2b7527487..e5e87790e31 100644 --- a/es/es-dashboards/README.md +++ b/es/es-dashboards/README.md @@ -39,7 +39,7 @@ ## Manual installation -1. Download Kibana 8.14.0 from https://www.elastic.co/downloads/kibana +1. Download Kibana 8.14.3 from https://www.elastic.co/downloads/kibana 2. Set Kibana base path and index name in config/kibana.yml: @@ -81,7 +81,7 @@ Visit Kibana in a browser using one of the above links and go to 'Saved Objects' ### Production Use -Kibana can be installed from the debian files, and Kibana 8.14.0 is confirmed as working with Geonetwork 4.4.x. +Kibana can be installed from the debian files, and Kibana 8.14.3 is confirmed as working with Geonetwork 4.4.x. Set Kibana to start when the server starts up, using the instructions at https://www.elastic.co/guide/en/kibana/current/start-stop.html diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/HarvesterUtil.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/HarvesterUtil.java index cf30c71312c..ce411b33256 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/HarvesterUtil.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/HarvesterUtil.java @@ -23,18 +23,19 @@ package org.fao.geonet.kernel.harvest.harvester; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; +import org.fao.geonet.ApplicationContextHolder; import org.fao.geonet.constants.Geonet; import org.fao.geonet.domain.Pair; +import org.fao.geonet.kernel.GeonetworkDataDirectory; import org.fao.geonet.kernel.schema.MetadataSchema; import org.fao.geonet.utils.Xml; import org.jdom.Element; import org.slf4j.LoggerFactory; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; - /** * Created by francois on 3/7/14. */ @@ -74,8 +75,7 @@ public static Element processMetadata(MetadataSchema metadataSchema, Element md, String processName, Map processParams) { - - Path filePath = metadataSchema.getSchemaDir().resolve("process").resolve(processName + ".xsl"); + Path filePath = ApplicationContextHolder.get().getBean(GeonetworkDataDirectory.class).getXsltConversion(processName); if (!Files.exists(filePath)) { LOGGER.info(" processing instruction not found for {} schema. metadata not filtered.", metadataSchema.getName()); } else { diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java index 8ba9e1e31af..5097d9a600c 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java @@ -1,5 +1,5 @@ //============================================================================= -//=== Copyright (C) 2001-2007 Food and Agriculture Organization of the +//=== Copyright (C) 2001-2024 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) //=== and United Nations Environment Programme (UNEP) //=== @@ -232,7 +232,7 @@ private void insertOrUpdate(Collection records, Collection records, List err params.useChangeDateForUpdate(), localUuids.getChangeDate(ri.uuid), true); log.info("Overriding record with uuid " + ri.uuid); - result.updatedMetadata++; if (params.isIfRecordExistAppendPrivileges()) { addPrivileges(id, params.getPrivileges(), localGroups, context); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/simpleurl/Harvester.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/simpleurl/Harvester.java index 2cd1100dc6d..254fac91f84 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/simpleurl/Harvester.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/simpleurl/Harvester.java @@ -105,6 +105,7 @@ public HarvestResult harvest(Logger log) throws Exception { String[] urlList = params.url.split("\n"); boolean error = false; Aligner aligner = new Aligner(cancelMonitor, context, params, log); + Set listOfUuids = new HashSet<>(); for (String url : urlList) { log.debug("Loading URL: " + url); @@ -151,7 +152,6 @@ public HarvestResult harvest(Logger log) throws Exception { params.numberOfRecordPath, e.getMessage())); } } - Map allUuids = new HashMap<>(); try { List listOfUrlForPages = buildListOfUrl(params, numberOfRecordsToHarvest); for (int i = 0; i < listOfUrlForPages.size(); i++) { @@ -166,7 +166,6 @@ public HarvestResult harvest(Logger log) throws Exception { if (StringUtils.isNotEmpty(params.loopElement) || type == SimpleUrlResourceType.RDFXML) { Map uuids = new HashMap<>(); - try { if (type == SimpleUrlResourceType.XML) { collectRecordsFromXml(xmlObj, uuids, aligner); @@ -176,7 +175,7 @@ public HarvestResult harvest(Logger log) throws Exception { collectRecordsFromJson(jsonObj, uuids, aligner); } aligner.align(uuids, errors); - allUuids.putAll(uuids); + listOfUuids.addAll(uuids.keySet()); } catch (Exception e) { errors.add(new HarvestError(this.context, e)); log.error(String.format("Failed to collect record in response at path %s. Error is: %s", @@ -184,7 +183,6 @@ public HarvestResult harvest(Logger log) throws Exception { } } } - aligner.cleanupRemovedRecords(allUuids.keySet()); } catch (Exception t) { error = true; log.error("Unknown error trying to harvest"); @@ -198,11 +196,12 @@ public HarvestResult harvest(Logger log) throws Exception { errors.add(new HarvestError(context, t)); } - log.info("Total records processed in all searches :" + allUuids.size()); + log.info("Total records processed in all searches :" + listOfUuids.size()); if (error) { log.warning("Due to previous errors the align process has not been called"); } } + aligner.cleanupRemovedRecords(listOfUuids); return aligner.getResult(); } diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java index 81dad939cad..cf8717e5213 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java @@ -1,5 +1,5 @@ //============================================================================= -//=== Copyright (C) 2001-2007 Food and Agriculture Organization of the +//=== Copyright (C) 2001-2024 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) //=== and United Nations Environment Programme (UNEP) //=== @@ -22,32 +22,21 @@ //============================================================================== package org.fao.geonet.kernel.harvest.harvester.webdav; -import java.util.LinkedList; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.lang.StringUtils; import org.fao.geonet.GeonetContext; import org.fao.geonet.Logger; import org.fao.geonet.constants.Geonet; -import org.fao.geonet.domain.AbstractMetadata; -import org.fao.geonet.domain.ISODate; -import org.fao.geonet.domain.Metadata; -import org.fao.geonet.domain.MetadataType; +import org.fao.geonet.domain.*; import org.fao.geonet.exceptions.NoSchemaMatchesException; import org.fao.geonet.kernel.DataManager; import org.fao.geonet.kernel.SchemaManager; import org.fao.geonet.kernel.UpdateDatestamp; import org.fao.geonet.kernel.datamanager.IMetadataManager; import org.fao.geonet.kernel.harvest.BaseAligner; -import org.fao.geonet.kernel.harvest.harvester.CategoryMapper; -import org.fao.geonet.kernel.harvest.harvester.GroupMapper; -import org.fao.geonet.kernel.harvest.harvester.HarvestError; -import org.fao.geonet.kernel.harvest.harvester.HarvestResult; -import org.fao.geonet.kernel.harvest.harvester.IHarvester; -import org.fao.geonet.kernel.harvest.harvester.RecordInfo; -import org.fao.geonet.kernel.harvest.harvester.UriMapper; +import org.fao.geonet.kernel.harvest.harvester.*; import org.fao.geonet.kernel.search.IndexingMode; import org.fao.geonet.repository.MetadataRepository; import org.fao.geonet.repository.OperationAllowedRepository; @@ -94,7 +83,9 @@ class Harvester extends BaseAligner implements IHarvester errors = new LinkedList(); + private List errors = new LinkedList<>(); + private String processName; + private Map processParams = new HashMap<>(); public Harvester(AtomicBoolean cancelMonitor, Logger log, ServiceContext context, WebDavParams params) { super(cancelMonitor); @@ -154,6 +145,10 @@ private void align(final List files) throws Exception { localGroups = new GroupMapper(context); localUris = new UriMapper(context, params.getUuid()); + Pair> filter = HarvesterUtil.parseXSLFilter(params.xslfilter); + processName = filter.one(); + processParams = filter.two(); + //----------------------------------------------------------------------- //--- remove old metadata for (final String uri : localUris.getUris()) { @@ -259,6 +254,7 @@ private void addMetadata(RemoteFile rf) throws Exception { case SKIP: log.info("Skipping record with uuid " + uuid); result.uuidSkipped++; + return; default: return; } @@ -292,6 +288,13 @@ private void addMetadata(RemoteFile rf) throws Exception { md = translateMetadataContent(context, md, schema); } + if (StringUtils.isNotEmpty(params.xslfilter)) { + md = HarvesterUtil.processMetadata(dataMan.getSchema(schema), + md, processName, processParams); + + schema = dataMan.autodetectSchema(md); + } + // // insert metadata // @@ -310,6 +313,11 @@ private void addMetadata(RemoteFile rf) throws Exception { date = rf.getChangeDate(); } } + + if (date == null) { + date = new ISODate(); + } + AbstractMetadata metadata = new Metadata(); metadata.setUuid(uuid); metadata.getDataInfo(). @@ -385,11 +393,11 @@ private Element retrieveMetadata(RemoteFile rf) { * harvester are applied. Also, it changes the ownership of the record so it is assigned to the * new harvester that last updated it. * @param rf - * @param record + * @param recordInfo * @param force * @throws Exception */ - private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) throws Exception { + private void updateMetadata(RemoteFile rf, RecordInfo recordInfo, boolean force) throws Exception { Element md = null; // Get the change date from the metadata content. If not possible, get it from the file change date if available @@ -411,8 +419,8 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr //Update only if different String uuid = dataMan.extractUUID(schema, md); - if (!record.uuid.equals(uuid)) { - md = dataMan.setUUID(schema, record.uuid, md); + if (!recordInfo.uuid.equals(uuid)) { + md = dataMan.setUUID(schema, recordInfo.uuid, md); } } catch (Exception e) { log.error(" - Failed to set uuid for metadata with remote path : " + rf.getPath()); @@ -424,7 +432,7 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr date = dataMan.extractDateModified(schema, md); } catch (Exception ex) { log.error("WebDavHarvester - updateMetadata - Can't get metadata modified date for metadata id= " - + record.id + ", using current date for modified date"); + + recordInfo.id + ", using current date for modified date"); // WAF harvester, rf.getChangeDate() returns null if (rf.getChangeDate() != null) { date = rf.getChangeDate().getDateAndTime(); @@ -434,7 +442,7 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr } - if (!force && !rf.isMoreRecentThan(record.changeDate)) { + if (!force && !rf.isMoreRecentThan(recordInfo.changeDate)) { if (log.isDebugEnabled()) log.debug(" - Metadata XML not changed for path : " + rf.getPath()); result.unchangedMetadata++; @@ -454,8 +462,8 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr //Update only if different String uuid = dataMan.extractUUID(schema, md); - if (!record.uuid.equals(uuid)) { - md = dataMan.setUUID(schema, record.uuid, md); + if (!recordInfo.uuid.equals(uuid)) { + md = dataMan.setUUID(schema, recordInfo.uuid, md); } } catch (Exception e) { log.error(" - Failed to set uuid for metadata with remote path : " + rf.getPath()); @@ -467,7 +475,7 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr date = dataMan.extractDateModified(schema, md); } catch (Exception ex) { log.error("WebDavHarvester - updateMetadata - Can't get metadata modified date for metadata id= " - + record.id + ", using current date for modified date"); + + recordInfo.id + ", using current date for modified date"); // WAF harvester, rf.getChangeDate() returns null if (rf.getChangeDate() != null) { date = rf.getChangeDate().getDateAndTime(); @@ -475,12 +483,16 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr } } - // Translate metadata if (params.isTranslateContent()) { md = translateMetadataContent(context, md, schema); } + if (StringUtils.isNotEmpty(params.xslfilter)) { + md = HarvesterUtil.processMetadata(dataMan.getSchema(schema), + md, processName, processParams); + } + // // update metadata // @@ -488,7 +500,7 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr boolean ufo = false; String language = context.getLanguage(); - final AbstractMetadata metadata = metadataManager.updateMetadata(context, record.id, md, validate, ufo, language, + final AbstractMetadata metadata = metadataManager.updateMetadata(context, recordInfo.id, md, validate, ufo, language, date, false, IndexingMode.none); if(force) { @@ -502,15 +514,15 @@ private void updateMetadata(RemoteFile rf, RecordInfo record, Boolean force) thr //--- the administrator could change privileges and categories using the //--- web interface so we have to re-set both OperationAllowedRepository repository = context.getBean(OperationAllowedRepository.class); - repository.deleteAllByMetadataId(Integer.parseInt(record.id)); - addPrivileges(record.id, params.getPrivileges(), localGroups, context); + repository.deleteAllByMetadataId(Integer.parseInt(recordInfo.id)); + addPrivileges(recordInfo.id, params.getPrivileges(), localGroups, context); metadata.getCategories().clear(); addCategories(metadata, params.getCategories(), localCateg, context, null, true); dataMan.flush(); - dataMan.indexMetadata(record.id, true); + dataMan.indexMetadata(recordInfo.id, true); } } diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java index e6cc3af1a9d..e745a5b3311 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavHarvester.java @@ -1,5 +1,5 @@ //============================================================================= -//=== Copyright (C) 2001-2007 Food and Agriculture Organization of the +//=== Copyright (C) 2001-2024 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) //=== and United Nations Environment Programme (UNEP) //=== @@ -28,40 +28,23 @@ import java.sql.SQLException; -//============================================================================= - public class WebDavHarvester extends AbstractHarvester { - //--------------------------------------------------------------------------- - //--- - //--- Add - //--- - //--------------------------------------------------------------------------- - @Override protected WebDavParams createParams() { return new WebDavParams(dataMan); } //--------------------------------------------------------------------------- + @Override protected void storeNodeExtra(WebDavParams params, String path, String siteId, String optionsId) throws SQLException { harvesterSettingsManager.add("id:" + siteId, "url", params.url); harvesterSettingsManager.add("id:" + siteId, "icon", params.icon); harvesterSettingsManager.add("id:" + optionsId, "validate", params.getValidate()); harvesterSettingsManager.add("id:" + optionsId, "recurse", params.recurse); harvesterSettingsManager.add("id:" + optionsId, "subtype", params.subtype); + harvesterSettingsManager.add("id:" + siteId, "xslfilter", params.xslfilter); } - //--------------------------------------------------------------------------- - //--- - //--- Variables - //--- - //--------------------------------------------------------------------------- - - //--------------------------------------------------------------------------- - //--- - //--- Harvest - //--- - //--------------------------------------------------------------------------- public void doHarvest(Logger log) throws Exception { log.info("WebDav doHarvest start"); Harvester h = new Harvester(cancelMonitor, log, context, params); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java index d264bb908fb..c32bfd40cda 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/WebDavParams.java @@ -1,5 +1,5 @@ //============================================================================= -//=== Copyright (C) 2001-2007 Food and Agriculture Organization of the +//=== Copyright (C) 2001-2024 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) //=== and United Nations Environment Programme (UNEP) //=== @@ -29,61 +29,44 @@ import org.fao.geonet.kernel.harvest.harvester.AbstractParams; import org.jdom.Element; -//============================================================================= - public class WebDavParams extends AbstractParams { - //-------------------------------------------------------------------------- - //--- - //--- Constructor - //--- - //-------------------------------------------------------------------------- + /** * url of webdav folder to harvest */ public String url; - //--------------------------------------------------------------------------- - //--- - //--- Create : called when a new entry must be added. Reads values from the - //--- provided entry, providing default values - //--- - //--------------------------------------------------------------------------- /** * Icon to use for harvester */ public String icon; - //--------------------------------------------------------------------------- - //--- - //--- Update : called when an entry has changed and variables must be updated - //--- - //--------------------------------------------------------------------------- /** * If true recurse into directories. */ public boolean recurse; - //--------------------------------------------------------------------------- - //--- - //--- Other API methods - //--- - //--------------------------------------------------------------------------- /** * Flag indicating if WAFRetriever or WebDavRetriever should be used. */ public String subtype; - //--------------------------------------------------------------------------- - //--- - //--- Variables - //--- - //--------------------------------------------------------------------------- + /** + * The filter is a process (see schema/process folder) which depends on the schema. It could be + * composed of parameter which will be sent to XSL transformation using the following syntax : + *
+     * anonymizer?protocol=MYLOCALNETWORK:FILEPATH&email=gis@organisation.org&thesaurus=MYORGONLYTHEASURUS
+     * 
+ */ + public String xslfilter; + public WebDavParams(DataManager dm) { super(dm); } + @Override public void create(Element node) throws BadInputEx { super.create(node); @@ -92,12 +75,14 @@ public void create(Element node) throws BadInputEx { url = Util.getParam(site, "url", ""); icon = Util.getParam(site, "icon", ""); + xslfilter = Util.getParam(site, "xslfilter", ""); recurse = Util.getParam(opt, "recurse", false); subtype = Util.getParam(opt, "subtype", ""); } + @Override public void update(Element node) throws BadInputEx { super.update(node); @@ -106,6 +91,7 @@ public void update(Element node) throws BadInputEx { url = Util.getParam(site, "url", url); icon = Util.getParam(site, "icon", icon); + xslfilter = Util.getParam(site, "xslfilter", ""); recurse = Util.getParam(opt, "recurse", recurse); subtype = Util.getParam(opt, "subtype", subtype); @@ -117,6 +103,7 @@ public WebDavParams copy() { copy.url = url; copy.icon = icon; + copy.xslfilter = xslfilter; copy.setValidate(getValidate()); copy.recurse = recurse; @@ -131,7 +118,3 @@ public String getIcon() { return icon; } } - -//============================================================================= - - diff --git a/inspire-atom/src/main/java/org/fao/geonet/inspireatom/util/InspireAtomUtil.java b/inspire-atom/src/main/java/org/fao/geonet/inspireatom/util/InspireAtomUtil.java index a452d0733d0..622f8fe4ca3 100644 --- a/inspire-atom/src/main/java/org/fao/geonet/inspireatom/util/InspireAtomUtil.java +++ b/inspire-atom/src/main/java/org/fao/geonet/inspireatom/util/InspireAtomUtil.java @@ -1,5 +1,5 @@ //============================================================================= -//=== Copyright (C) 2001-2023 Food and Agriculture Organization of the +//=== Copyright (C) 2001-2024 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) //=== and United Nations Environment Programme (UNEP) //=== @@ -63,7 +63,7 @@ * @author Jose García */ public class InspireAtomUtil { - private final static String EXTRACT_DATASETS_FROM_SERVICE_XSLT = "extract-datasetinfo-from-service-feed.xsl"; + private static final String EXTRACT_DATASETS_FROM_SERVICE_XSLT = "extract-datasetinfo-from-service-feed.xsl"; /** * Xslt process to get the related datasets in service metadata. @@ -395,7 +395,15 @@ public static String retrieveDatasetUuidFromIdentifier(EsSearchManager searchMan " \"value\": \"%s\"" + " }" + " }" + + " }," + + " {" + + " \"term\": {" + + " \"isPublishedToAll\": {" + + " \"value\": \"true\"" + + " }" + + " }" + " }" + + " ]" + " }" + "}"; diff --git a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomDescribe.java b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomDescribe.java index 97091e008e1..95871555b1d 100644 --- a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomDescribe.java +++ b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomDescribe.java @@ -24,6 +24,8 @@ import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -107,7 +109,7 @@ public class AtomDescribe { ) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Feeds."), - @ApiResponse(responseCode = "204", description = "Not authenticated.") + @ApiResponse(responseCode = "204", description = "Not authenticated.", content = {@Content(schema = @Schema(hidden = true))}) }) @ResponseStatus(OK) @ResponseBody diff --git a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomGetData.java b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomGetData.java index a9133fe38a7..33d0ace6128 100644 --- a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomGetData.java +++ b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomGetData.java @@ -23,6 +23,8 @@ package org.fao.geonet.services.inspireatom; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -84,7 +86,7 @@ public class AtomGetData { ) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Get a data file related to dataset"), - @ApiResponse(responseCode = "204", description = "Not authenticated.") + @ApiResponse(responseCode = "204", description = "Not authenticated.", content = {@Content(schema = @Schema(hidden = true))}) }) @ResponseStatus(OK) @ResponseBody diff --git a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomHarvester.java b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomHarvester.java index 94eeb33e4ce..a30dcbb0331 100644 --- a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomHarvester.java +++ b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomHarvester.java @@ -23,6 +23,8 @@ package org.fao.geonet.services.inspireatom; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -61,7 +63,7 @@ public class AtomHarvester { @PreAuthorize("hasAuthority('Administrator')") @ApiResponses(value = { @ApiResponse(responseCode = "201", description = "Scan completed."), - @ApiResponse(responseCode = "204", description = "Not authenticated.") + @ApiResponse(responseCode = "204", description = "Not authenticated.", content = {@Content(schema = @Schema(hidden = true))}) }) @ResponseStatus(CREATED) @ResponseBody diff --git a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomSearch.java b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomSearch.java index 0e27e9c8763..5253d3146ac 100644 --- a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomSearch.java +++ b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomSearch.java @@ -27,6 +27,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -114,7 +115,7 @@ public class AtomSearch { ) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Get a list of feeds."), - @ApiResponse(responseCode = "204", description = "Not authenticated.") + @ApiResponse(responseCode = "204", description = "Not authenticated.", content = {@io.swagger.v3.oas.annotations.media.Content(schema = @Schema(hidden = true))}) }) @ResponseStatus(OK) public Object feeds( diff --git a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomServiceDescription.java b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomServiceDescription.java index 87a255411b2..6c7b99ffbc2 100644 --- a/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomServiceDescription.java +++ b/inspire-atom/src/main/java/org/fao/geonet/services/inspireatom/AtomServiceDescription.java @@ -23,6 +23,8 @@ package org.fao.geonet.services.inspireatom; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -91,7 +93,7 @@ public class AtomServiceDescription { produces = MediaType.APPLICATION_XML_VALUE) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Feeds."), - @ApiResponse(responseCode = "204", description = "Not authenticated.") + @ApiResponse(responseCode = "204", description = "Not authenticated.", content = {@Content(schema = @Schema(hidden = true))}) }) @ResponseStatus(OK) @ResponseBody diff --git a/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/ApprovePublishedRecord.java b/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/ApprovePublishedRecord.java index b335fc9cdec..546571cec96 100644 --- a/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/ApprovePublishedRecord.java +++ b/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/ApprovePublishedRecord.java @@ -121,7 +121,7 @@ private void changeToApproved(AbstractMetadata md, MetadataStatus previousStatus status.setChangeDate(new ISODate()); status.setUserId(ServiceContext.get().getUserSession().getUserIdAsInt()); - metadataStatus.setStatusExt(status, false); + metadataStatus.setStatusExt(status, true); Log.trace(Geonet.DATA_MANAGER, "Metadata with id " + md.getId() + " automatically approved due to publishing."); } diff --git a/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/DraftUtilities.java b/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/DraftUtilities.java index c3f6cf7704c..ce418b4062f 100644 --- a/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/DraftUtilities.java +++ b/listeners/src/main/java/org/fao/geonet/listener/metadata/draft/DraftUtilities.java @@ -87,6 +87,7 @@ public AbstractMetadata replaceMetadataWithDraft(AbstractMetadata md) { * @return */ public AbstractMetadata replaceMetadataWithDraft(AbstractMetadata md, AbstractMetadata draft) { + Log.info(Geonet.DATA_MANAGER, String.format("Replacing metadata approved record (%d) with draft record (%d)", md.getId(), draft.getId())); Log.trace(Geonet.DATA_MANAGER, "Found approved record with id " + md.getId()); Log.trace(Geonet.DATA_MANAGER, "Found draft with id " + draft.getId()); // Reassign metadata validations @@ -131,6 +132,7 @@ public AbstractMetadata replaceMetadataWithDraft(AbstractMetadata md, AbstractMe } // Reassign file uploads + Log.info(Geonet.DATA_MANAGER, String.format("Copying draft record '%d' resources to approved record '%d'", draft.getId(), md.getId())); draftMetadataUtils.replaceFiles(draft, md); metadataFileUploadRepository.deleteAll(MetadataFileUploadSpecs.hasMetadataId(md.getId())); diff --git a/pom.xml b/pom.xml index 5793dc0eb99..bedef6217a0 100644 --- a/pom.xml +++ b/pom.xml @@ -469,7 +469,7 @@ org.apache.jena apache-jena-libs pom - 3.17.0 + 4.10.0 @@ -554,6 +554,11 @@ commons-email 1.5 + + commons-codec + commons-codec + 1.15 + org.apache.xmlgraphics xmlgraphics-commons @@ -1280,7 +1285,7 @@ org.apache.jclouds jclouds-all - 2.3.0 + 2.5.0 @@ -1451,6 +1456,21 @@ darwin-x86 tar.gz + + + macOS_aarch64 + + + mac + aarch64 + + + + darwin-aarch64 + kibana.sh + darwin-aarch64 + tar.gz + windows @@ -1550,7 +1570,7 @@ 8080 8090 - 8.14.0 + 8.14.3 linux-x86_64 tar.gz http diff --git a/schemas/config-editor.xsd b/schemas/config-editor.xsd index ac697476f41..31455f489a3 100644 --- a/schemas/config-editor.xsd +++ b/schemas/config-editor.xsd @@ -906,7 +906,7 @@ Define if this tab is the default one for the view. Only one tab should be the d @@ -1128,9 +1128,11 @@ Note: Only sections with forEach support del attribute.

Distribution

-
- - +
+ +

@@ -2111,9 +2113,9 @@ An autocompletion list based on a thesaurus. This field facilitates users in selecting a `subtemplate` (also known as xml-snippet) from the catalogue. Subtemplates are mostly used to store contact details, but can also be used to store snippets of xml having Quality reports, Access constraints, CRS definitions, etc. - -`data-insert-modes` can be `text` and/or `xlink` depending on how the subtemplate is encoded. -Contact can be forced to be `xlink` but some other type of subtemplates (eg. DQ report) are usually just simple default values + +`data-insert-modes` can be `text` and/or `xlink` depending on how the subtemplate is encoded. +Contact can be forced to be `xlink` but some other type of subtemplates (eg. DQ report) are usually just simple default values that need to be detailed by editors and in that case `text` mode is recommended. For `xlink`, the XLink resolver needs to be enabled in the admin settings. diff --git a/schemas/iso19110/src/main/resources/config-spring-geonetwork.xml b/schemas/iso19110/src/main/resources/config-spring-geonetwork.xml index 34d34f70574..f4356efcb55 100644 --- a/schemas/iso19110/src/main/resources/config-spring-geonetwork.xml +++ b/schemas/iso19110/src/main/resources/config-spring-geonetwork.xml @@ -31,6 +31,12 @@ + + + + + + gmx:name/gco:CharacterString diff --git a/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018Namespaces.java b/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018Namespaces.java index e495952af4d..6d47aeb24e7 100644 --- a/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018Namespaces.java +++ b/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018Namespaces.java @@ -1,3 +1,25 @@ +/* + * Copyright (C) 2001-2024 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 + */ package org.fao.geonet.schema.iso19115_3_2018; import org.jdom.Namespace; diff --git a/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018SchemaPlugin.java b/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018SchemaPlugin.java index 9673820efdd..aa73fd0d2fd 100644 --- a/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018SchemaPlugin.java +++ b/schemas/iso19115-3.2018/src/main/java/org/fao/geonet/schema/iso19115_3_2018/ISO19115_3_2018SchemaPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2023 Food and Agriculture Organization of the + * Copyright (C) 2001-2024 Food and Agriculture Organization of the * United Nations (FAO-UN), United Nations World Food Programme (WFP) * and United Nations Environment Programme (UNEP) * @@ -181,7 +181,7 @@ public Set getAssociatedFeatureCatalogueUUIDs(Element metadata) { @Override public Set getAssociatedFeatureCatalogues(Element metadata) { - return collectAssociatedResources(metadata, "*//mrc:featureCatalogueCitation[@uuidref]"); + return collectAssociatedResources(metadata, "*//mrc:featureCatalogueCitation[@uuidref != '']"); } public Set getAssociatedSourceUUIDs(Element metadata) { @@ -193,7 +193,7 @@ public Set getAssociatedSourceUUIDs(Element metadata) { @Override public Set getAssociatedSources(Element metadata) { - return collectAssociatedResources(metadata, "*//mrl:source"); + return collectAssociatedResources(metadata, "*//mrl:source[@uuidref != '']"); } private Set collectAssociatedResources(Element metadata, String xpath) { diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/config/associated-panel/default.json b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/config/associated-panel/default.json index b37adf61088..8b05cb3f205 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/config/associated-panel/default.json +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/config/associated-panel/default.json @@ -799,6 +799,59 @@ } } }, + { + "group": "onlineUseMap", + "label": "map-interactive", + "copyLabel": "name", + "sources": { + "filestore": true + }, + "fileStoreFilter": "*.{xml,XML}", + "icon": "fa fa-map", + "process": "onlinesrc-add", + "fields": { + "url": { + "isMultilingual": false + }, + "name": {}, + "function": { + "value": "browsing", + "hidden": true, + "isMultilingual": false + }, + "protocol": { + "value": "OGC:OWS-C", + "hidden": true, + "isMultilingual": false + } + } + }, + { + "group": "onlineUseMap", + "label": "map-static", + "copyLabel": "name", + "sources": { + "filestore": true + }, + "fileStoreFilter": "*.{pdf,PDF}", + "icon": "fa fa-map", + "process": "onlinesrc-add", + "fields": { + "url": { + "isMultilingual": false + }, + "name": {}, + "function": { + "value": "browsing", + "hidden": true, + "isMultilingual": false + }, + "protocol": { + "value": "PDF:MAP", + "isMultilingual": false + } + } + }, { "group": "onlineUseLegend", "label": "onlineUseLegendLYR", diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/fromISO19139.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/fromISO19139.xsl index e13c6942e8c..3d69ae90e8d 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/fromISO19139.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/fromISO19139.xsl @@ -98,7 +98,7 @@ - + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/toISO19139.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/toISO19139.xsl index 66500e82d1f..764011f4819 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/toISO19139.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/ISO19139/toISO19139.xsl @@ -553,24 +553,30 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - @@ -1109,5 +1115,6 @@ mcc:MD_Identifier/mcc:description| mrl:LI_Source/mrl:scope| mrl:sourceSpatialResolution| - mdq:derivedElement" priority="2"/> + mdq:derivedElement| + mri:graphicOverview/mcc:MD_BrowseGraphic/mcc:linkage" priority="2"/> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromJsonOpenDataSoft.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromJsonOpenDataSoft.xsl index a14cd81ca4a..8c7b9b76bf2 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromJsonOpenDataSoft.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromJsonOpenDataSoft.xsl @@ -1,219 +1,169 @@ - + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ISO 19115-3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - publisher - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + ISO 19115-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + publisher + + + + + + + + + + @@ -227,384 +177,683 @@ - - - - - - - - - - originator - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + originator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + - - + + - + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + - + + + + + 1 + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + csv + + + json + + - csv + geojson - - json - - + - geojson + shapefile - - - shapefile - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - csv - - - json - - - - geojson - - - - shp - - - - - - - - - + + + - + - WWW:LINK:LANDING_PAGE + - Landing Page + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + csv + + + json + + + + geojson + + + + shp + + + + + + + + + + + + + + + + + + + WWW:LINK:LANDING_PAGE + + + + + Landing Page + + + + + + + + + + + + + + + + + + + + WWW:LINK + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + '/exports/', $format, '?use_labels=true')"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromOGCWMC-OR-OWSC.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromOGCWMC-OR-OWSC.xsl new file mode 100644 index 00000000000..d3ccc7c62b1 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/fromOGCWMC-OR-OWSC.xsl @@ -0,0 +1,633 @@ + + + + + eng + + + + + + + + + + + + + + + + [Y0001]-[M01]-[D01]T[H01]:[m01]:[s01] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + map + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ISO 19115-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OGC:OWS-C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WWW:LINK + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/odstheme-mapping.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/odstheme-mapping.xsl new file mode 100644 index 00000000000..3b99ba96c35 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/odstheme-mapping.xsl @@ -0,0 +1,44 @@ + + + + + Santé + Health + Qualité de Vie + + + Environnement + Environment + + + Transports, Déplacements + Transport, Movements + + + Aménagement du territoire, Urbanisme, Bâtiments, Equipements, Habitat + Spatial planning, Town planning, Buildings, Equipment, Housing + + + Economie, Entreprise, PME, Développement économique, Emploi + Economy, Business, SME, Economic development, Employment + + + Patrimoine culturel + Culture, Heritage + Education, Formation, Recherche, Enseignement + Education, Training, Research, Teaching + Administration, Gouvernement, Finances publiques, Citoyenneté + Administration, Government, Public finances, Citizenship + Justice, Sécurité, Police, Criminalité + Justice, Safety, Police, Crime + Sports, Loisirs + Sports, Leisure + Hébergement, industrie hôtelière + Accommodation, Hospitality Industry + Services sociaux + Services, Social + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/protocol-mapping.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/protocol-mapping.xsl index 81062b32791..a3429faa6dd 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/protocol-mapping.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/protocol-mapping.xsl @@ -1,71 +1,64 @@ - - - - - - csv - WWW:DOWNLOAD:text/csv - - - geojson - WWW:DOWNLOAD:application/vnd.geo+json - - - kml - WWW:DOWNLOAD:application/vnd.google-earth.kml+xml - - - zip - WWW:DOWNLOAD:application/zip - - - shapefile - shp - WWW:DOWNLOAD:x-gis/x-shapefile - - - json - WWW:DOWNLOAD:application/json - - - pdf - WWW:DOWNLOAD:application/pdf - - - xls - WWW:DOWNLOAD:application/vnd.ms-excel - - - xlsx - excel - WWW:DOWNLOAD:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - rtf - WWW:DOWNLOAD:application/rtf - - - web page - html - arcgis - WWW:LINK-1.0-http--link - - - wms - OGC:WMS - - - wfs - OGC:WFS - - + + + csv + WWW:DOWNLOAD:text/csv + + + geojson + WWW:DOWNLOAD:application/vnd.geo+json + + + kml + WWW:DOWNLOAD:application/vnd.google-earth.kml+xml + + + zip + WWW:DOWNLOAD:application/zip + + + shapefile + shp + WWW:DOWNLOAD:x-gis/x-shapefile + + + json + WWW:DOWNLOAD:application/json + + + pdf + WWW:DOWNLOAD:application/pdf + + + xls + WWW:DOWNLOAD:application/vnd.ms-excel + + + xlsx + excel + WWW:DOWNLOAD:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + rtf + WWW:DOWNLOAD:application/rtf + + + web page + html + arcgis + WWW:LINK-1.0-http--link + + + wms + OGC:WMS + + + wfs + OGC:WFS + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/thesaurus-transformation.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/thesaurus-transformation.xsl index 40e13cd3e65..59a02c55f4d 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/thesaurus-transformation.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/convert/thesaurus-transformation.xsl @@ -82,6 +82,12 @@ + + + + + + + + + else $thesaurus/title"/> - + @@ -282,121 +290,30 @@ - - - - + + + + + + - + + - - - - - - - - - - - - + + + + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="{name(current-group()[1])}"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/extract-date-modified.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/extract-date-modified.xsl index a6546241b0a..73d8bf5ff4b 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/extract-date-modified.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/extract-date-modified.xsl @@ -3,27 +3,21 @@ version="2.0" xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema"> + + - - - - - - - - - - + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/datacite/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/datacite/view.xsl index 82ddac2f0c7..e53c47302fb 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/datacite/view.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/datacite/view.xsl @@ -133,7 +133,7 @@ + xsi:schemaLocation="http://datacite.org/schema/kernel-4 https://schema.datacite.org/meta/kernel-4.1/metadata.xsd"> @@ -349,6 +349,7 @@ Dataset Service Software + Software @@ -356,7 +357,7 @@ select="."/> - + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-commons.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-commons.xsl new file mode 100644 index 00000000000..5c3ea377e0e --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-commons.xsl @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-access-and-use.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-access-and-use.xsl new file mode 100644 index 00000000000..d86da928861 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-access-and-use.xsl @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-associated.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-associated.xsl new file mode 100644 index 00000000000..ea2a5d1f2a0 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-associated.xsl @@ -0,0 +1,111 @@ + + + + + + + dct:isPartOf + dct:isPartOf + dct:isPartOf + + dct:references + dct:hasPart + + pav:previousVersion + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-catalog.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-catalog.xsl new file mode 100644 index 00000000000..230a1f7947f --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-catalog.xsl @@ -0,0 +1,30 @@ + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-catalogrecord.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-catalogrecord.xsl new file mode 100644 index 00000000000..eb750e6c665 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-catalogrecord.xsl @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-contact.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-contact.xsl new file mode 100644 index 00000000000..f39ad713e69 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-contact.xsl @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-dataservice.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-dataservice.xsl new file mode 100644 index 00000000000..c1daa81c24a --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-dataservice.xsl @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-dataset.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-dataset.xsl new file mode 100644 index 00000000000..501b4bc4a1e --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-dataset.xsl @@ -0,0 +1,409 @@ + + + + + + + 1 + 1000 + .01 + 0.3048 + + + + meter + EPSG::9001 + urn:ogc:def:uom:EPSG::9001 + urn:ogc:def:uom:UCUM::m + urn:ogc:def:uom:OGC::m + feet + EPSG::9002 + urn:ogc:def:uom:EPSG::9002 + urn:ogc:def:uom:UCUM::[ft_i] + urn:ogc:def:uom:OGC::[ft_i] + kilometer + centimeter + + + + + + + + + + + + + + + + + + + + + WARNING: Spatial resolution only supported in meters. + is ignored (can be related to unknown unit or no + conversion factor or not a decimal value). + + + + + + + + + + + + CONT + DAILY + WEEKLY + BIWEEKLY + MONTHLY + QUARTERLY + ANNUAL_2 + ANNUAL + IRREG + UNKNOWN + + + + + + + http://publications.europa.eu/resource/authority/frequency/BIDECENNIAL + http://publications.europa.eu/resource/authority/frequency/TRIDECENNIAL + http://publications.europa.eu/resource/authority/frequency/BIHOURLY + http://publications.europa.eu/resource/authority/frequency/TRIHOURLY + http://publications.europa.eu/resource/authority/frequency/OTHER + http://publications.europa.eu/resource/authority/frequency/WEEKLY + http://publications.europa.eu/resource/authority/frequency/NOT_PLANNED + http://publications.europa.eu/resource/authority/frequency/AS_NEEDED + http://publications.europa.eu/resource/authority/frequency/HOURLY + http://publications.europa.eu/resource/authority/frequency/QUADRENNIAL + http://publications.europa.eu/resource/authority/frequency/QUINQUENNIAL + http://publications.europa.eu/resource/authority/frequency/DECENNIAL + http://publications.europa.eu/resource/authority/frequency/WEEKLY_2 + http://publications.europa.eu/resource/authority/frequency/WEEKLY_3 + http://publications.europa.eu/resource/authority/frequency/UNKNOWN + http://publications.europa.eu/resource/authority/frequency/UPDATE_CONT + http://publications.europa.eu/resource/authority/frequency/QUARTERLY + http://publications.europa.eu/resource/authority/frequency/TRIENNIAL + http://publications.europa.eu/resource/authority/frequency/NEVER + http://publications.europa.eu/resource/authority/frequency/OP_DATPRO + http://publications.europa.eu/resource/authority/frequency/MONTHLY_2 + http://publications.europa.eu/resource/authority/frequency/MONTHLY_3 + http://publications.europa.eu/resource/authority/frequency/IRREG + http://publications.europa.eu/resource/authority/frequency/MONTHLY + http://publications.europa.eu/resource/authority/frequency/DAILY + http://publications.europa.eu/resource/authority/frequency/DAILY_2 + http://publications.europa.eu/resource/authority/frequency/BIWEEKLY + http://publications.europa.eu/resource/authority/frequency/CONT + http://publications.europa.eu/resource/authority/frequency/BIENNIAL + http://publications.europa.eu/resource/authority/frequency/BIMONTHLY + http://publications.europa.eu/resource/authority/frequency/ANNUAL_2 + http://publications.europa.eu/resource/authority/frequency/ANNUAL_3 + http://publications.europa.eu/resource/authority/frequency/ANNUAL + + + + + https://w3id.org/mobilitydcat-ap/update-frequency/1h + https://w3id.org/mobilitydcat-ap/update-frequency/1min + https://w3id.org/mobilitydcat-ap/update-frequency/10min + https://w3id.org/mobilitydcat-ap/update-frequency/12h + https://w3id.org/mobilitydcat-ap/update-frequency/15min + https://w3id.org/mobilitydcat-ap/update-frequency/2h + https://w3id.org/mobilitydcat-ap/update-frequency/24h + https://w3id.org/mobilitydcat-ap/update-frequency/3h + https://w3id.org/mobilitydcat-ap/update-frequency/3-months + https://w3id.org/mobilitydcat-ap/update-frequency/30min + https://w3id.org/mobilitydcat-ap/update-frequency/5min + https://w3id.org/mobilitydcat-ap/update-frequency/6-months + + + + + https://w3id.org/mobilitydcat-ap/update-frequency/1h + https://w3id.org/mobilitydcat-ap/update-frequency/1min + https://w3id.org/mobilitydcat-ap/update-frequency/10min + https://w3id.org/mobilitydcat-ap/update-frequency/12h + https://w3id.org/mobilitydcat-ap/update-frequency/15min + https://w3id.org/mobilitydcat-ap/update-frequency/2h + https://w3id.org/mobilitydcat-ap/update-frequency/24h + https://w3id.org/mobilitydcat-ap/update-frequency/3h + https://w3id.org/mobilitydcat-ap/update-frequency/3-months + https://w3id.org/mobilitydcat-ap/update-frequency/30min + https://w3id.org/mobilitydcat-ap/update-frequency/5min + https://w3id.org/mobilitydcat-ap/update-frequency/6-months + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-distribution.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-distribution.xsl new file mode 100644 index 00000000000..9a54addef6f --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-distribution.xsl @@ -0,0 +1,443 @@ + + + + + + + + + + csw + ogc:csw + + + sos + ogc:sos + + + sps + ogc:sps + + + wcs + ogc:wcs + + + wfs + ogc:wfs + + + wms + ogc:wms + + + wmts + ogc:wmts + + + wps + ogc:wps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-keywords.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-keywords.xsl new file mode 100644 index 00000000000..25f14d568ec --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-keywords.xsl @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-lineage.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-lineage.xsl new file mode 100644 index 00000000000..e4eb39fd565 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-lineage.xsl @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-resource.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-resource.xsl new file mode 100644 index 00000000000..314ac56989b --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core-resource.xsl @@ -0,0 +1,47 @@ + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core.xsl new file mode 100644 index 00000000000..ed6a811ecf9 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-core.xsl @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WARNING: Unmatched XPath . Check dcat-variables.xsl and add the element to isoToDcatCommonNames. + + + + + + + + + + + + + + + + + WARNING: Unmatched date type . If needed, add this type in dcat-variables.xsl and add the element to map to in isoDateTypeToDcatCommonNames. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-utils.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-utils.xsl new file mode 100644 index 00000000000..05576cd746b --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-utils.xsl @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-variables.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-variables.xsl new file mode 100644 index 00000000000..037b7f530e8 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/dcat-variables.xsl @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:title + mdb:MD_Metadata/mdb:identificationInfo/srv:SV_ServiceIdentification/mri:citation/cit:CI_Citation/cit:title + mdb:MD_Metadata/mdb:metadataStandard/cit:CI_Citation/cit:title + mdb:MD_Metadata/mdb:distributionInfo/mrd:MD_Distribution/mrd:transferOptions/mrd:MD_DigitalTransferOptions/mrd:onLine/cit:CI_OnlineResource/cit:name + mdb:MD_Metadata/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor/mrd:MD_Distributor/mrd:distributorTransferOptions/mrd:MD_DigitalTransferOptions/mrd:onLine/cit:CI_OnlineResource/cit:name + mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:edition + mdb:MD_Metadata/mdb:identificationInfo/srv:SV_ServiceIdentification/mri:citation/cit:CI_Citation/cit:edition + mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:abstract + mdb:MD_Metadata/mdb:identificationInfo/srv:SV_ServiceIdentification/mri:abstract + mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:graphicOverview/mcc:MD_BrowseGraphic/mcc:fileDescription + mdb:MD_Metadata/mdb:identificationInfo/srv:SV_ServiceIdentification/mri:graphicOverview/mcc:MD_BrowseGraphic/mcc:fileDescription + mdb:MD_Metadata/mdb:distributionInfo/mrd:MD_Distribution/mrd:transferOptions/mrd:MD_DigitalTransferOptions/mrd:onLine/cit:CI_OnlineResource/cit:description + mdb:MD_Metadata/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor/mrd:MD_Distributor/mrd:distributorTransferOptions/mrd:MD_DigitalTransferOptions/mrd:onLine/cit:CI_OnlineResource/cit:description + mdb:MD_Metadata/mdb:metadataStandard/cit:CI_Citation/cit:edition + mdb:MD_Metadata/mdb:resourceLineage/mrl:LI_Lineage/mrl:statement + + + + creation + publication + revision + + + + author + publisher + pointOfContact + owner + + + + + + series + dataset + nonGeographicDataset + + service + ? + + + + + series + dataset + nonGeographicDataset + + + + + + service + software + + + + + + + + aaigrid + aig + atom + csv + csw + dbf + dgn + djvu + doc + docx + dxf + dwg + ecw + ecwp + elp + epub + fgeo + gdb + geojson + geopackage + georss + geotiff + gif + gml + gmz + gpkg + gpx + grid + grid_ascii + gtfs + gtiff + gzip + html + jpeg + jpg + json + json-ld + json_ld + jsonld + kml + kmz + las + laz + marc + mdb + mxd + n-triples + n3 + netcdf + ods + odt + ogc:csw + ogc:sos + ogc:wcs + ogc:wfs + ogc:wfs-g + ogc:wmc + ogc:wms + ogc:wmts + ogc:wps + pc-axis + pdf + pgeo + png + rar + xml + rdf-n3 + rdf-turtle + rdf-xml + rdf_n_triples + rdf_n3 + rdf_turtle + rdf_xml + rss + rtf + scorm + shp + ESRI Shapefile + sos + spatialite + sqlite + sqlite3 + svg + text + tiff + tmx + tsv + ttl + turtle + txt + vcard-json + vcard-xml + xbrl + xhtml + xls + xlsx + xml + wcs + wfs + wfs-g + wmc + wms + wmts + wps + zip + + + + + nld + ces + deu + ell + fra + ron + slk + isl + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/view.xsl new file mode 100644 index 00000000000..1b5dc69b565 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/view.xsl @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/vocabularies/licences-skos.rdf b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/vocabularies/licences-skos.rdf new file mode 100644 index 00000000000..3bf8547e4a5 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/dcat/vocabularies/licences-skos.rdf @@ -0,0 +1,7070 @@ + + + + Licence + Licence + 20230927-0 + Licence + + + Zero-Clause BSD / Free Public License 1.0.0 (0BSD) + 0BSD + 0BSD + 2006-07-01 + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + 0BSD + The source of the start-use date: https://spdx.org/licenses/0BSD.html + The BSD 0-clause licence, 0BSD, goes further than the 2-clause licence by dropping the requirements to include the copyright notice, licence text or disclaimer in either source or binary forms. Doing so forms a public-domain-equivalent licence. It is approved by the Open Source Initiative. + + + + + + GNU Affero General Public License version 3 + AGPL_3_0 + AGPL_3_0 + 2007-11-19 + AGPL_3_0 + AGPL_3_0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + AGPL-3.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Affero_General_Public_License + AGPL-3.0 is a modified GPL-3.0 extended to network or Web services distribution (SaaS). Strong copyleft: copies and derivatives may be distributed under the same AGPL only. Need to document derivatives’ changes and dates. Incompatible with other licences except linking with code covered by the original GPL-3.0. + + + + + + Apache Software License, version 1.1 (Apache-1.1) + Apache tarkvara litsents, versioon 1.1 (Apache-1.1) + APACHE_1_1 + APACHE_1_1 + 2000-01-01 + APACHE_1_1 + APACHE_1_1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + Apache 1.1 + The source of the start-use date: https://opensource.org/licenses/Apache-1.1 + Apache-1.1 is a permissive free software licence approved by the Open Source Initiative. It is superseded by Apache-2.0. + + + + 2004-01-01 + + + Apache License, Version 2.0 + Apache litsents, versioon 2.0 + APACHE_2_0 + APACHE_2_0 + 2004-01-02 + APACHE_2_0 + APACHE_2_0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + Apache 2.0 + The source of the start-use date: https://opensource.org/licenses/Apache-2.0 + Apache-2.0 is a permissive free software licence approved by the Open Source Initiative. It gives complete freedom to use the given works, as long as the required notices are included. Compared with the MIT, recipients receive a patent licence from the contributors of the code. + + + + + + Adaptive Public License 1.0 + APL_1_0 + APL_1_0 + 2003-07-01 + APL_1_0 + APL_1_0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + APL-1.0 + The source of the start-use date: http://www.worldlii.org/int/other/PubRL/2009/1.html + APL-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. It allows combining the covered code with other components not governed by the APL licence provided the APL requirements are fulfilled for the covered portion of the larger work. + + + + + + Apple Public Source License 2.0 + APSL_2_0 + APSL_2_0 + 2003-08-06 + APSL_2_0 + APSL_2_0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + APSL-2.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Apple_Public_Source_License + APSL-2.0 is a copyleft-style, free software licence approved by the Open Source Initiative. Under this licence, it is possible to create a larger work by combining covered code with other code not governed by the terms of this licence and distribute the larger work as a single product. In each such instance, it must be ensured that requirements of this licence are fulfilled for the covered code or any portion thereof. + + + + + + Artistic License 1.0 (Artistic-1.0) + ARTISTIC_1_0 + ARTISTIC_1_0 + 1997-08-15 + ARTISTIC_1_0 + ARTISTIC_1_0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + Artistic 1.0 + The source of the start-use date: https://wiki.vvlibri.org/index.php?title=Artistic_License_Version_2.0 + Artistic-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. It is superseded by Artistic 2.0. + + + + 2000-06-30 + + + Artistic License 2.0 + ARTISTIC_2_0 + ARTISTIC_2_0 + 2000-07-01 + ARTISTIC_2_0 + ARTISTIC_2_0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + Artistic 2.0 + The source of the start-use date: https://www.appropedia.org/Open_software_licenses; http://www.linfo.org/artistic.html + Artistic-2.0 is a copyleft-style, free software licence approved by the Open Source Initiative. It preserves control of the original copyright holder: recipient can use, modify and distribute the original versions but other modified versions must document how far they are different and be reported to the original author, or be distributed under a different name, or otherwise be available under the Artistic licence or any other licence granting similar rights. + + + + + + 2-Clause BSD License + BSD_2_CLAUSE + BSD_2_CLAUSE + 1999-04-01 + BSD_2_CLAUSE + BSD_2_CLAUSE + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + BSD-2-Clause + The source of the start-use date: https://en.wikipedia.org/wiki/BSD_licenses + BSD-2-Clause permits redistribution and use in source and binary forms, with or without modification, provided that the certain conditions are met: redistributions of source code must retain the copyright notice, the specific list of conditions and the disclaimer. + + + + + + 3-Clause BSD License + BSD_3_CLAUSE + BSD_3_CLAUSE + 1999-07-22 + BSD_3_CLAUSE + BSD_3_CLAUSE + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + BSD-3-Clause + The source of the start-use date: https://en.wikipedia.org/wiki/BSD_licenses + BSD-3-Clause permits redistribution and use in source and binary forms, with or without modification, provided that the certain conditions are met: redistributions of source code and in binary forms must retain the copyright notice, the specific list of conditions and the disclaimer. Neither the name of the copyright holder nor of its contributors may be used to promote derived products without prior written permission. + + + + + + Lawrence Berkeley National Labs BSD Variant License (BSD-3-Clause-LBNL) + BSD_3_CLAUSE_LBNL + BSD_3_CLAUSE_LBNL + 2002-07-01 + BSD_3_CLAUSE_LBNL + BSD_3_CLAUSE_LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + BSD-3-Clause-LBNL + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/lbnl-bsd/?_list_filters=q%3Dbsd#essentials + BSD-3-Clause-LBNL is a BSD-style, permissive free software licence approved by the Open Source Initiative. + + + + + + BSD+Patent + BSD_PLUS_PATENT + BSD_PLUS_PATENT + 2017-07-01 + BSD_PLUS_PATENT + BSD_PLUS_PATENT + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + BSD+Patent + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/bsd-plus-patent/?_list_filters=q%3Dbsd#essentials + BSD+Patent is a free software licence approved by the Open Source Initiative. It is a 2-clause license in which nothing restricts redistribution under any other license, but it requests to retain copyright notices and restrict the use of the BSD licensor name to promote derivative products. + + + + + + Boost Software License 1.0 + BSL_1_0 + BSL_1_0 + 2003-08-17 + BSL_1_0 + BSL_1_0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + BSL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Boost_(C%2B%2B_libraries)#License + BSL-1.0 is a simple permissive licence only requiring preservation of copyright and licence notices for source (and not binary) distribution. Licenced works, modifications, and larger works may be distributed under different terms and without source code. + + + + + + Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1) + CATOSL_1_1 + CATOSL_1_1 + 2004-07-31 + CATOSL_1_1 + CATOSL_1_1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + CATOSL-1.1 + The source of the start-use date: https://webcache.googleusercontent.com/search?q=cache:7pbd65y1OUYJ:https://www.theinquirer.net/inquirer/news/1022762/computer-associates-open-source-guru-speaks-out+&cd=1&hl=en&ct=clnk&gl=lu + CATOSL-1.1 is a copyleft-style, free software licence approved by the Open Source Initiative. Under this licence, it is possible to create a larger work by combining the program with other software code not governed by the terms of this licence, and distribute the larger work as a single product. + + + + + + Creative Commons CC0 1.0 Универсален + Creative Commons CC0 1.0 Univerzální + Creative Commons CC0 1.0 Universel + Creative Commons CC0 1.0 Universell + Creative Commons CC0 1.0 Παγκόσμια + Creative Commons CC0 1.0 Universal + Creative Commons CC0 1.0 Universal + Creative Commons CC0 1.0 Üldine + Creative Commons CC0 1.0 Yleismaailmallinen + Creative Commons CC0 1.0 Universel + Creative Commons CC0 1.0 Univerzalno + Creative Commons CC0 1.0 Univerzális + Creative Commons CC0 1.0 Universal + Creative Commons CC0 1.0 Universali + Creative Commons CC0 1.0 Universāls + Creative Commons CC0 1.0 Universali + Creative Commons CC0 1.0 Universeel + Creative Commons CC0 1.0 Universal + Creative Commons CC0 1.0 Universal + Creative Commons CC0 1.0 Universal + Creative Commons CC0 1.0 Univerzálne + Creative Commons CC0 1.0 Univerzalna + Creative Commons CC0 1.0 universell + CC0 + CC0 + 2009-03-11 + CC0 + CC0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + CC0 1.0 + Personen, der har tilknyttet et værk disse betingelser, har dedikeret værket til offentligheden ved at give afkald på alle sine rettigheder til værket verden over, indenfor lovgivning om ophavsret, herunder alle relaterede og beslægtede rettigheder i det omfang, loven tillader. Du må kopiere, ændre, distribuere og fremføre værket, selv til kommercielle formål, alt sammen uden at spørge om tilladelse. + The person who associated a work with CC0 1.0 has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. One can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. + La personne qui a associé une œuvre à CC0 1.0 a dédié l’œuvre au domaine public en renonçant dans le monde entier à ses droits sur l’œuvre selon les lois sur le droit d’auteur, droit voisin et connexes, dans la mesure permise par la loi. On peut copier, modifier, distribuer et représenter l’œuvre, même à des fins commerciales, sans avoir besoin de demander l’autorisation. + + + + + + Creative Commons Uveďte původ 4.0 Mezinárodní + Creative Commons Navngivelse 4.0 International + Creative Commons Namensnennung 4.0 International + Creative Commons Αναφορά Δημιουργού 4.0 Διεθνές + Creative Commons Attribution 4.0 International + Creative Commons Atribución 4.0 Internacional + Creative Commons Nimeä 4.0 Kansainvälinen + Creative Commons Attribution 4.0 International + Creative Commons Imenovanje 4.0 međunarodna + Creative Commons Nevezd meg! 4.0 Nemzetközi + Creative Commons Attribuzione 4.0 Internazionale + Creative Commons Priskyrimas 4.0 Tarptautinė + Creative Commons Atsaucoties 4.0 Internacionāls + Creative Commons Naamsvermelding 4.0 Internationaal + Creative Commons Uznanie autorstwa 4.0 Międzynarodowe + Creative Commons Atribuição 4.0 Internacional + Creative Commons Atribuire 4.0 Internațional + Creative Commons Erkännande 4.0 Internationell + CC_BY + CC_BY + 2013-11-25 + CC_BY + CC_BY + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + This licence lets others distribute, remix, tweak, and build upon the author's work, even commercially, as long as they credit the author for the original creation. This is the most accommodating of licences offered. Recommended for maximum dissemination and use of licenced materials. + Cette licence permet aux autres de distribuer, remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/l’autrice en citant son nom. C’est le contrat le plus souple proposé. Recommandé pour la diffusion et l’utilisation maximales d’œuvres licenciées sous CC. + + + 2013-11-26 + + + Creative Commons Uveďte původ–Neužívejte komerčně 4.0 Mezinárodní + Creative Commons Navngivelse–IkkeKommerciel 4.0 International + Creative Commons Namensnennung – Nicht kommerziell 4.0 International + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση 4.0 Διεθνές + Creative Commons Attribution–NonCommercial 4.0 International + Creative Commons Atribución–NoComercial 4.0 Internacional + Creative Commons Nimeä–EiKaupallinen 4.0 Kansainvälinen + Creative Commons Attribution – Pas d’Utilisation Commerciale 4.0 International + Creative Commons Imenovanje–Nekomercijalno 4.0 međunarodna + Creative Commons Nevezd meg! – Ne add el! 4.0 Nemzetközi + Creative Commons Attribuzione – Non commerciale 4.0 Internazionale + Creative Commons Priskyrimas – Nekomercinis platinimas 4.0 Tarptautinė + Creative Commons Atsaucoties–Nekomerciāli 4.0 Internacionāls + Creative Commons Naamsvermelding–NietCommercieel 4.0 Internationaal + Creative Commons Uznanie autorstwa–Użycie niekomercyjne 4.0 Międzynarodowe + Creative Commons Atribuição–NãoComercial 4.0 Internacional + Creative Commons Atribuire–Necomercial 4.0 Internațional + Creative Commons Erkännande–IckeKommersiell 4.0 Internationell + CC_BYNC + CC_BYNC + 2013-11-25 + CC_BYNC + CC_BYNC + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + This licence lets others remix, tweak, and build upon the author's work non-commercially, and although their new works must also acknowledge the author and be non-commercial, they don’t have to licence their derivative works on the same terms. + Cette licence permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales et, bien que les nouvelles œuvres doivent créditer l’auteur/autrice en citant son nom et ne pas constituer une utilisation commerciale, elles n’ont pas à être diffusées selon les mêmes conditions. + + + 2013-11-26 + + + Creative Commons Uveďte původ–Neužívejte komerčně–Nezpracovávejte 4.0 Mezinárodní + Creative Commons Navngivelse–IkkeKommerciel–IngenBearbejdelse 4.0 International + Creative Commons Namensnennung – Nicht kommerziell – Keine Bearbeitungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Όχι Παράγωγα Έργα 4.0 Διεθνές + Creative Commons Attribution–NonCommercial–NoDerivatives 4.0 International + Creative Commons Atribución–NoComercial–SinDerivar 4.0 Internacional + Creative Commons Nimeä–EiKaupallinen–EiMuutoksia 4.0 Kansainvälinen + Creative Commons Attribution – Pas d'Utilisation Commerciale – Pas de Modification 4.0 International + Creative Commons Imenovanje–Nekomercijalno–Bez prerada 4.0 međunarodna + Creative Commons Nevezd meg! – Ne add el! – Ne változtasd! 4.0 Nemzetközi + Creative Commons Attribuzione – Non commerciale – Non opere derivate 4.0 Internazionale + Creative Commons Priskyrimas – Nekomercinis platinimas – Jokių išvestinių darbų 4.0 Tarptautinė + Creative Commons Atsaucoties, nekomerciāli, nepārveidojot 4.0 Internacionāls + Creative Commons Naamsvermelding–NietCommercieel–GeenAfgeleideWerken 4.0 Internationaal + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Bez utworów zależnych 4.0 Międzynarodowe + Creative Commons Atribuição–NãoComercial–SemDerivações 4.0 Internacional + Creative Commons Atribuire–Necomercial–FărăDerivate 4.0 Internațional + Creative Commons Erkännande–Ickekommersiell–IngaBearbetningar 4.0 Internationell + CC_BYNCND + CC_BYNCND + 2013-11-25 + CC_BYNCND + CC_BYNCND + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + This licence is the most restrictive of the six main licences of Creative Commons, only allowing others to download the works and share them with others as long as they credit the author, but they can’t change them in any way or use them commercially. + Cette licence est la plus restrictive des six licences principales de Creative Commons, n’autorisant les autres qu’à télécharger les œuvres de l’auteur/autrice et à les partager qu’on le/la crédite en citant son nom, mais on ne peut les modifier de quelque façon que ce soit ni les utiliser à des fins commerciales. + + + 2013-11-26 + + + Creative Commons Признание-Без производни-Некомерсиално 1.0 Неадаптиран + Creative Commons Uveďte původ–Nezpracovávejte–Neužívejte komerčně 1.0 Generic + Creative Commons Kreditering-Ingen afledninger-Ikkekommerciel 1.0 Generisk + Creative Commons Namensnennung – Keine Bearbeitungen – Nicht-kommerziell 1.0 Generic + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα – Μη Εμπορική Χρήση 1.0 Γενικό + Creative Commons Attribution–NoDerivs–NonCommercial 1.0 Generic + Creative Commons Atribución–SinDerivadas–NoComercial 1.0 Genérica + Creative Commons Autorile viitamine–Tuletatud teoste keeld–Mitteäriline eesmärk 1.0 Üldine + Creative Commons Nimeä–EiMuutoksia–EiKaupallinen 1.0 Yleinen + Creative Commons Attribution – Pas de Modification – Pas d’Utilisation Commerciale 1.0 Générique + Creative Commons Imenovanje–Bez prerada–Nekomercijalno 1.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne változtasd! – Ne add el! 1.0 Általános + Creative Commons Attribuzione – Non opere derivate – Non commerciale 1.0 Generico + Creative Commons Priskyrimas – Jokių išvestinių darbų – Nekomercinis platinimas 1.0 Bendrasis + Creative Commons Atsaucoties–Nepārveidojot–Nekomerciāli 1.0 Vispārīgs + Creative Commons Attribuzzjoni-EbdaDerivattivi-MhuxKummerċjali 1.0 Generic + Creative Commons Naamsvermelding–GeenAfgeleideWerken–NietCommercieel 1.0 Unported + Creative Commons Uznanie autorstwa–Bez utworów zależnych–Użycie Niekomercyjne 1.0 Ogólny + Creative Commons Atribuição–SemDerivações–NãoComercial 1.0 Genérica + Creative Commons Atribuire–FărăModificări–Necomercial 1.0 Generică + Creative Commons Uvedenie Autora-Bez Odvodeného Obsahu-Nekomerčné Použitie 1.0 Generic + Creative Commons Priznanje avtorstva-Brez predelav-Nekomercialno 1.0 Generična + Creative Commons Erkännande–IngaBearbetningar–IckeKommersiell 1.0 Generisk + CC_BYNCND_1_0 + CC_BYNCND_1_0 + 2002-12-15 + CC_BYNCND_1_0 + CC_BYNCND_1_0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 + CC BY-ND-NC 1.0 is the most restrictive of the six main licences of Creative Commons, only allowing others to download the works and share them with others as long as they credit the author, but they can’t change them in any way or use them commercially. + CC BY-ND-NC 1.0 est la plus restrictive des six licences principales de Creative Commons, n’autorisant les autres qu’à télécharger les œuvres de l’auteur/autrice et à les partager tant qu’on le/la crédite en citant son nom, mais on ne peut les modifier de quelque façon que ce soit ni les utiliser à des fins commerciales. + + + + 2004-05-24 + + + Creative Commons Признание-Без производни-Некомерсиално 2.0 Неадаптиран + Creative Commons Uveďte původ–Neužívejte komerčně–Nezpracovávejte 2.0 Generic + Creative Commons Kreditering-Ikkekommerciel-Ingen afledninger 2.0 Generisk + Creative Commons Namensnennung – Nicht-kommerziell – Keine Bearbeitung 2.0 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Όχι Παράγωγα Έργα 2.0 Γενικό + Creative Commons Attribution–NonCommercial–NoDerivs 2.0 Generic + Creative Commons Atribución–NoComercial–SinDerivadas 2.0 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Tuletatud teoste keeld 2.0 Üldine + Creative Commons Nimeä–EiKaupallinen–EiMuutoksia 2.0 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 2.0 Générique + Creative Commons Imenovanje–Nekomercijalno–Bez prerada 2.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Ne változtasd! 2.0 Általános + Creative Commons Attribuzione – Non commerciale – Non opere derivate 2.0 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas – Jokių išvestinių darbų 2.0 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli–Nepārveidojot 2.0 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali-EbdaDerivattivi 2.0 Generic + Creative Commons Naamsvermelding–NietCommercieel–GeenAfgeleideWerken 2.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Bez utworów zależnych 2.0 Ogólny + Creative Commons Atribuição–NãoComercial–SemDerivações 2.0 Genérica + Creative Commons Atribuire–Necomercial–FărăModificări 2.0 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Bez Odvodeného Obsahu 2.0 Generic + Creative Commons Priznanje avtorstva-Nekomercialno-Brez predelav 2.0 Generična + Creative Commons Erkännande–Ickekommersiell–IngaBearbetningar 2.0 Generisk + CC_BYNCND_2_0 + CC_BYNCND_2_0 + 2004-05-25 + CC_BYNCND_2_0 + CC_BYNCND_2_0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-NC-ND 2.0 + CC BY-ND-NC 2.0 is the most restrictive of the six main licences of Creative Commons, only allowing others to download the works and share them with others as long as they credit the author, but they can’t change them in any way or use them commercially. + CC BY-ND-NC 2.0 est la plus restrictive des six licences principales de Creative Commons, n’autorisant les autres qu’à télécharger les œuvres de l’auteur/autrice et à les partager tant qu’on le/la crédite en citant son nom, mais on ne peut les modifier de quelque façon que ce soit ni les utiliser à des fins commerciales. + + + + + + Creative Commons Признание-Без производни-Некомерсиално 2.5 Неадаптиран + Creative Commons Uveďte původ–Neužívejte komerčně–Nezpracovávejte 2.5 Generic + Creative Commons Kreditering-Ikkekommerciel-Ingen afledninger 2.5 Generisk + Creative Commons Namensnennung – Nicht-kommerziell – Keine Bearbeitung 2.5 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Όχι Παράγωγα Έργα 2.5 Γενικό + Creative Commons Attribution–NonCommercial–NoDerivs 2.5 Generic + Creative Commons Atribución–NoComercial–SinDerivadas 2.5 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Tuletatud teoste keeld 2.5 Üldine + Creative Commons Nimeä–EiKaupallinen–EiMuutoksia 2.5 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 2.5 Générique + Creative Commons Imenovanje–Nekomercijalno–Bez prerada 2.5 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Ne változtasd! 2.5 Általános + Creative Commons Attribuzione – Non commerciale – Non opere derivate 2.5 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas – Jokių išvestinių darbų 2.5 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli–Nepārveidojot 2.5 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali-EbdaDerivattivi 2.5 Generic + Creative Commons Naamsvermelding–NietCommercieel–GeenAfgeleideWerken 2.5 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Bez utworów zależnych 2.5 Ogólny + Creative Commons Atribuição–NãoComercial–SemDerivações 2.5 Genérica + Creative Commons Atribuire–Necomercial–FărăModificări 2.5 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Bez Odvodeného Obsahu 2.5 Generic + Creative Commons Priznanje avtorstva-Nekomercialno-Brez predelav 2.5 Generična + Creative Commons Erkännande–Ickekommersiell–IngaBearbetningar 2.5 Generisk + CC_BYNCND_2_5 + CC_BYNCND_2_5 + 2005-06-01 + CC_BYNCND_2_5 + CC_BYNCND_2_5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-NC-ND 2.5 + CC BY-ND-NC 2.5 is the most restrictive of the six main licences of Creative Commons, only allowing others to download the works and share them with others as long as they credit the author, but they can’t change them in any way or use them commercially. + CC BY-ND-NC 2.5 est la plus restrictive des six licences principales de Creative Commons, n’autorisant les autres qu’à télécharger les œuvres de l’auteur/autrice et à les partager tant qu’on le/la crédite en citant son nom, mais on ne peut les modifier de quelque façon que ce soit ni les utiliser à des fins commerciales. + + + + + + Creative Commons Признание-Некомерсиално-Без производни 3.0 Нелокализиран + Creative Commons Uveďte původ–Neužívejte komerčně–Nezpracovávejte 3.0 Unported + Creative Commons Kreditering-Ikkekommerciel-Ingen afledninger 3.0 Ikke porteret + Creative Commons Namensnennung – Nicht-kommerziell – Keine Bearbeitung 3.0 Unported + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Όχι Παράγωγα Έργα 3.0 Μη εισαγόμενο + Creative Commons Attribution–NonCommercial–NoDerivs 3.0 Unported + Creative Commons Atribución–NoComercial–SinDerivadas 3.0 Unported + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Tuletatud teoste keeld 3.0 Jurisdiktsiooniga sidumata + Creative Commons Nimeä–EiKaupallinen–EiMuutoksia 3.0 Ei sovitettu + Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 3.0 non transposé + Creative Commons Imenovanje–Nekomercijalno–Bez prerada 3.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Ne változtasd! 3.0 Unported + Creative Commons Attribuzione – Non commerciale – Non opere derivate 3.0 Unported + Creative Commons Priskyrimas – Nekomercinis platinimas – Jokių išvestinių darbų 3.0 Nepritaikyta jurisdikcijai + Creative Commons Atsaucoties–Nekomerciāli–Nepārveidojot 3.0 Nepārnesta + Creative Commons Attribuzzjoni-MhuxKummerċjali-EbdaDerivattivi 3.0 Unported + Creative Commons Naamsvermelding–NietCommercieel–GeenAfgeleideWerken 3.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Bez utworów zależnych 3.0 Unported + Creative Commons Atribuição–NãoComercial–SemDerivações 3.0 Não Adaptada + Creative Commons Atribuire–Necomercial–FărăModificări 3.0 Ne-adaptată + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Bez Odvodeného Obsahu 3.0 Unported + Creative Commons Priznanje avtorstva-Nekomercialno-Brez predelav 3.0 Nedoločena + Creative Commons Erkännande–Ickekommersiell–IngaBearbetningar 3.0 Unported + CC_BYNCND_3_0 + CC_BYNCND_3_0 + 2007-02-23 + CC_BYNCND_3_0 + CC_BYNCND_3_0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-NC-ND 3.0 + CC BY-ND-NC 3.0 is the most restrictive of the six main licences of Creative Commons, only allowing others to download the works and share them with others as long as they credit the author, but they can’t change them in any way or use them commercially. + CC BY-ND-NC 3.0 est la plus restrictive des six licences principales de Creative Commons, n’autorisant les autres qu’à télécharger les œuvres de l’auteur/autrice et à les partager tant qu’on le/la crédite en citant son nom, mais on ne peut les modifier de quelque façon que ce soit ni les utiliser à des fins commerciales. + + + + Unported licences are licences that are not associated with any specific jurisdiction, e.g. country. + + + Creative Commons Uveďte původ–Neužívejte komerčně–Nezpracovávejte 4.0 Mezinárodní + Creative Commons Namensnennung – Nicht kommerziell – Keine Bearbeitungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Όχι Παράγωγα Έργα 4.0 Διεθνές + Creative Commons Attribution–NonCommercial–NoDerivatives 4.0 International + Creative Commons Atribución–NoComercial–SinDerivar 4.0 Internacional + Creative Commons Nimeä–EiKaupallinen–EiMuutoksia 4.0 Kansainvälinen + Creative Commons Attribution – Pas d'Utilisation Commerciale – Pas de Modification 4.0 International + Creative Commons Imenovanje–Nekomercijalno–Bez prerada 4.0 međunarodna + Creative Commons Nevezd meg! – Ne add el! – Ne változtasd! 4.0 Nemzetközi + Creative Commons Attribuzione – Non commerciale – Non opere derivate 4.0 Internazionale + Creative Commons Priskyrimas – Nekomercinis platinimas – Jokių išvestinių darbų 4.0 Tarptautinė + Creative Commons Atsaucoties, nekomerciāli, nepārveidojot 4.0 Internacionāls + Creative Commons Naamsvermelding–NietCommercieel–GeenAfgeleideWerken 4.0 Internationaal + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Bez utworów zależnych 4.0 Międzynarodowe + Creative Commons Atribuição–NãoComercial–SemDerivações 4.0 Internacional + Creative Commons Atribuire–Necomercial–FărăDerivate 4.0 Internațional + Creative Commons Erkännande–Ickekommersiell–IngaBearbetningar 4.0 Internationell + Creative Commons Признание-Некомерсиално-Без производни 4.0 Международен + Creative Commons Kreditering-Ikkekommerciel-Ingen afledninger 4.0 International + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Tuletatud teoste keeld 4.0 Rahvusvaheline + Creative Commons Attribuzzjoni-MhuxKummerċjali-EbdaDerivattivi 4.0 Unported + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Žiadne Odvodené Diela 4.0 Medzinárodný + Creative Commons Priznanje avtorstva-Nekomercialno-Brez predelav 4.0 Mednarodna + CC_BYNCND_4_0 + CC_BYNCND_4_0 + 2013-11-26 + CC_BYNCND_4_0 + CC_BYNCND_4_0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-NC-ND 4.0 + CC BY-ND-NC 4.0 is the most restrictive of the six main licences of Creative Commons, only allowing others to download the works and share them with others as long as they credit the author, but they can’t change them in any way or use them commercially. + CC BY-ND-NC 4.0 est la plus restrictive des six licences principales de Creative Commons, n’autorisant les autres qu’à télécharger les œuvres de l’auteur/autrice et à les partager tant qu’on le/la crédite en citant son nom, mais on ne peut les modifier de quelque façon que ce soit ni les utiliser à des fins commerciales. + + + + + + Creative Commons Uveďte původ–Neužívejte dílo komerčně–Zachovejte licenci 4.0 Mezinárodní + Creative Commons Navngivelse–IkkeKommerciel–DelPåSammeVilkår 4.0 International + Creative Commons Namensnennung – Nicht-kommerziell – Weitergabe unter gleichen Bedingungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Παρόμοια Διανομή 4.0 Διεθνές + Creative Commons Attribution–NonCommercial–ShareAlike 4.0 International + Creative Commons Atribución–NoComercial–CompartirIgual 4.0 Internacional + Creative Commons Nimeä–EiKaupallinen–JaaSamoin 4.0 Kansainvälinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 4.0 International + Creative Commons Imenovanje–Nekomercijalno–Dijeli pod istim uvjetima 4.0 međunarodna + Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 4.0 Nemzetközi + Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 4.0 Internazionale + Creative Commons Priskyrimas – Nekomercinis platinimas – Analogiškas platinimas 4.0 Tarptautinė + Creative Commons Atsaucoties–Nekomerciāli–Nemainot licenci 4.0 Internacionāls + Creative Commons Naamsvermelding–NietCommercieel–GelijkDelen 4.0 Internationaal + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach 4.0 Międzynarodowe + Creative Commons Atribuição–NãoComercial–CompartilhaIgual 4.0 Internacional + Creative Commons Atribuire–Necomercial–Distribuire în Condiţii Identice 4.0 Internațional + Creative Commons Erkännande–IckeKommersiell–DelaLika 4.0 Internationell + CC_BYNCSA + CC_BYNCSA + 2013-11-25 + CC_BYNCSA + CC_BYNCSA + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + This licence lets others remix, tweak, and build upon the author’s work non-commercially, as long as they credit the author and licence their new creations under the identical terms. + Cette licence permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales tant qu’on le/la crédite en citant son nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. + + + 2013-11-26 + + + Creative Commons Признание-Некомерсиално-Споделяне на споделеното 1.0 Неадаптиран + Creative Commons Uveďte původ–Neužívejte dílo komerčně–Zachovejte licenci 1.0 Generic + Creative Commons Kreditering-Ikkekommerciel-Deling på samme vilkår 1.0 Generisk + Creative Commons Namensnennung – Nicht-kommerziell – Weitergabe unter gleichen Bedingungen 1.0 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Παρόμοια Διανομή 1.0 Γενικό + Creative Commons Attribution–NonCommercial–ShareAlike 1.0 Generic + Creative Commons Atribución–NoComercial–CompartirIgual 1.0 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Jagamine samadel tingimustel 1.0 Üldine + Creative Commons Nimeä–EiKaupallinen–JaaSamoin 1.0 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 1.0 Générique + Creative Commons Imenovanje–Nekomercijalno–Dijeli pod istim uvjetima 1.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 1.0 Általános + Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 1.0 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas – Analogiškas platinimas 1.0 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli–Nemainot licenci 1.0 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali-KondiviżjoniUgwali 1.0 Generic + Creative Commons Naamsvermelding–NietCommercieel–GelijkDelen 1.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach 1.0 Ogólny + Creative Commons Atribuição–NãoComercial–CompartilhaIgual 1.0 Genérica + Creative Commons Atribuire–Necomercial–Distribuire în Condiţii Identice 1.0 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Rovnaké Šírenie 1.0 Generic + Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji 1.0 Generična + Creative Commons Erkännande–IckeKommersiell–DelaLika 1.0 Generisk + CC_BYNCSA_1_0 + CC_BYNCSA_1_0 + 2002-12-15 + CC_BYNCSA_1_0 + CC_BYNCSA_1_0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 + CC BY-NC-SA 1.0 lets others remix, tweak, and build upon the author’s work non-commercially, as long as they credit the author and licence their new creations under the identical terms. + CC BY-NC-SA 1.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales tant qu’on le/la crédite en citant son nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. + + + + 2004-05-24 + + + Creative Commons Признание-Некомерсиално-Споделяне на споделеното 2.0 Неадаптиран + Creative Commons Uveďte původ–Neužívejte dílo komerčně–Zachovejte licenci 2.0 Generic + Creative Commons Kreditering-Ikkekommerciel-Deling på samme vilkår 2.0 Generisk + Creative Commons Namensnennung – Nicht-kommerziell – Weitergabe unter gleichen Bedingungen 2.0 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Παρόμοια Διανομή 2.0 Γενικό + Creative Commons Attribution–NonCommercial–ShareAlike 2.0 Generic + Creative Commons Atribución–NoComercial–CompartirIgual 2.0 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Jagamine samadel tingimustel 2.0 Üldine + Creative Commons Nimeä–EiKaupallinen–JaaSamoin 2.0 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 2.0 Générique + Creative Commons Imenovanje–Nekomercijalno–Dijeli pod istim uvjetima 2.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 2.0 Általános + Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 2.0 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas – Analogiškas platinimas 2.0 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli–Nemainot licenci 2.0 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali-KondiviżjoniUgwali 2.0 Generic + Creative Commons Naamsvermelding–NietCommercieel–GelijkDelen 2.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach 2.0 Ogólny + Creative Commons Atribuição–NãoComercial–CompartilhaIgual 2.0 Genérica + Creative Commons Atribuire–Necomercial–Distribuire în Condiţii Identice 2.0 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Rovnaké Šírenie 2.0 Generic + Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji 2.0 Generična + Creative Commons Erkännande–IckeKommersiell–DelaLika 2.0 Generisk + CC_BYNCSA_2_0 + CC_BYNCSA_2_0 + 2004-05-25 + CC_BYNCSA_2_0 + CC_BYNCSA_2_0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 + CC BY-NC-SA 2.0 lets others remix, tweak, and build upon the author’s work non-commercially, as long as they credit the author and licence their new creations under the identical terms. + CC BY-NC-SA 2.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales tant qu’on le/la crédite en citant son nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. + + + + + + Creative Commons Признание-Некомерсиално-Споделяне на споделеното 2.5 Неадаптиран + Creative Commons Uveďte původ–Neužívejte dílo komerčně–Zachovejte licenci 2.5 Generic + Creative Commons Kreditering-Ikkekommerciel-Deling på samme vilkår 2.5 Generisk + Creative Commons Namensnennung – Nicht-kommerziell – Weitergabe unter gleichen Bedingungen 2.5 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Παρόμοια Διανομή 2.5 Γενικό + Creative Commons Attribution–NonCommercial–ShareAlike 2.5 Generic + Creative Commons Atribución–NoComercial–CompartirIgual 2.5 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Jagamine samadel tingimustel 2.5 Üldine + Creative Commons Nimeä–EiKaupallinen–JaaSamoin 2.5 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 2.5 Générique + Creative Commons Imenovanje–Nekomercijalno–Dijeli pod istim uvjetima 2.5 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 2.5 Általános + Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 2.5 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas – Analogiškas platinimas 2.5 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli–Nemainot licenci 2.5 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali-KondiviżjoniUgwali 2.5 Generic + Creative Commons Naamsvermelding–NietCommercieel–GelijkDelen 2.5 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach 2.5 Ogólny + Creative Commons Atribuição–NãoComercial–CompartilhaIgual 2.5 Genérica + Creative Commons Atribuire–Necomercial–Distribuire în Condiţii Identice 2.5 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Rovnaké Šírenie 2.5 Generic + Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji 2.5 Generična + Creative Commons Erkännande–IckeKommersiell–DelaLika 2.5 Generisk + CC_BYNCSA_2_5 + CC_BYNCSA_2_5 + 2005-06-01 + CC_BYNCSA_2_5 + CC_BYNCSA_2_5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 + CC BY-NC-SA 2.5 lets others remix, tweak, and build upon the author’s work non-commercially, as long as they credit the author and licence their new creations under the identical terms. + CC BY-NC-SA 2.5 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales tant qu’on le/la crédite en citant son nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. + + + + + + Creative Commons Признание-Некомерсиално-Споделяне на споделеното 3.0 Нелокализиран + Creative Commons Uveďte původ–Neužívejte dílo komerčně–Zachovejte licenci 3.0 Unported + Creative Commons Kreditering-Ikkekommerciel-Deling på samme vilkår 3.0 Ikke porteret + Creative Commons Namensnennung – Nicht-kommerziell – Weitergabe unter gleichen Bedingungen 3.0 Unported + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Παρόμοια Διανομή 3.0 Μη εισαγόμενο + Creative Commons Attribution–NonCommercial–ShareAlike 3.0 Unported + Creative Commons Atribución–NoComercial–CompartirIgual 3.0 Unported + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Jagamine samadel tingimustel 3.0 Jurisdiktsiooniga sidumata + Creative Commons Nimeä–EiKaupallinen–JaaSamoin 3.0 Ei sovitettu + Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 3.0 non transposé + Creative Commons Imenovanje–Nekomercijalno–Dijeli pod istim uvjetima 3.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 3.0 Unported + Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 3.0 Unported + Creative Commons Priskyrimas – Nekomercinis platinimas – Analogiškas platinimas 3.0 Nepritaikyta jurisdikcijai + Creative Commons Atsaucoties–Nekomerciāli–Nemainot licenci 3.0 Nepārnesta + Creative Commons Attribuzzjoni-MhuxKummerċjali-KondiviżjoniUgwali 3.0 Unported + Creative Commons Naamsvermelding–NietCommercieel–GelijkDelen 3.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach 3.0 Unported + Creative Commons Atribuição–NãoComercial–CompartilhaIgual 3.0 Não Adaptada + Creative Commons Atribuire–Necomercial–Distribuire în Condiţii Identice 3.0 Ne-adaptată + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Rovnaké Šírenie 3.0 Unported + Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji 3.0 Nedoločena + Creative Commons Erkännande–IckeKommersiell–DelaLika 3.0 Unported + CC_BYNCSA_3_0 + CC_BYNCSA_3_0 + 2007-02-23 + CC_BYNCSA_3_0 + CC_BYNCSA_3_0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 + CC BY-NC-SA 3.0 lets others remix, tweak, and build upon the author’s work non-commercially, as long as they credit the author and licence their new creations under the identical terms. + CC BY-NC-SA 3.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales tant qu’on le/la crédite en citant son nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. + + + + Unported licences are licences that are not associated with any specific jurisdiction, e.g. country. + + + Creative Commons Uveďte původ–Neužívejte dílo komerčně–Zachovejte licenci 4.0 Mezinárodní + Creative Commons Namensnennung – Nicht-kommerziell – Weitergabe unter gleichen Bedingungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση – Παρόμοια Διανομή 4.0 Διεθνές + Creative Commons Attribution–NonCommercial–ShareAlike 4.0 International + Creative Commons Atribución–NoComercial–CompartirIgual 4.0 Internacional + Creative Commons Nimeä–EiKaupallinen–JaaSamoin 4.0 Kansainvälinen + Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 4.0 International + Creative Commons Imenovanje–Nekomercijalno–Dijeli pod istim uvjetima 4.0 međunarodna + Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 4.0 Nemzetközi + Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 4.0 Internazionale + Creative Commons Priskyrimas – Nekomercinis platinimas – Analogiškas platinimas 4.0 Tarptautinė + Creative Commons Atsaucoties–Nekomerciāli–Nemainot licenci 4.0 Internacionāls + Creative Commons Naamsvermelding–NietCommercieel–GelijkDelen 4.0 Internationaal + Creative Commons Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach 4.0 Międzynarodowe + Creative Commons Atribuição–NãoComercial–CompartilhaIgual 4.0 Internacional + Creative Commons Atribuire–Necomercial–Distribuire în Condiţii Identice 4.0 Internațional + Creative Commons Erkännande–IckeKommersiell–DelaLika 4.0 Internationell + Creative Commons Признание-Некомерсиално-Споделяне на споделеното 4.0 Международен + Creative Commons Kreditering-Ikkekommerciel-Deling på samme vilkår 4.0 International + Creative Commons Autorile viitamine–Mitteäriline eesmärk–Jagamine samadel tingimustel 4.0 Rahvusvaheline + Creative Commons Attribuzzjoni-MhuxKummerċjali-KondiviżjoniUgwali 4.0 Internazzjonali + Creative Commons Uvedenie Autora-Nekomerčné Použitie-Rovnaké Šírenie 4.0 Medzinárodný + Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji 4.0 Mednarodna + CC_BYNCSA_4_0 + CC_BYNCSA_4_0 + 2013-11-26 + CC_BYNCSA_4_0 + CC_BYNCSA_4_0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 + CC BY-NC-SA 4.0 lets others remix, tweak, and build upon the author’s work non-commercially, as long as they credit the author and licence their new creations under the identical terms. + CC BY-NC-SA 4.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales tant qu’on le/la crédite en citant son nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. + + + + + + Creative Commons Признание-Некомерсиално 1.0 Неадаптиран + Creative Commons Uveďte původ–Neužívejte komerčně 1.0 Generic + Creative Commons Kreditering-Ikkekommerciel 1.0 Generisk + Creative Commons Namensnennung – Nicht kommerziell 1.0 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση 1.0 Γενικό + Creative Commons Attribution–NonCommercial 1.0 Generic + Creative Commons Atribución–NoComercial 1.0 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk 1.0 Üldine + Creative Commons Nimeä–EiKaupallinen 1.0 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale 1.0 Générique + Creative Commons Imenovanje–Nekomercijalno 1.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! 1.0 Általános + Creative Commons Attribuzione – Non commerciale 1.0 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas 1.0 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli 1.0 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali 1.0 Generic + Creative Commons Naamsvermelding–NietCommercieel 1.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne 1.0 Ogólny + Creative Commons Atribuição–NãoComercial 1.0 Genérica + Creative Commons Atribuire–Necomercial 1.0 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie 1.0 Generic + Creative Commons Priznanje avtorstva-Nekomercialno 1.0 Generična + Creative Commons Erkännande–IckeKommersiell 1.0 Generisk + CC_BYNC_1_0 + CC_BYNC_1_0 + 2002-12-15 + CC_BYNC_1_0 + CC_BYNC_1_0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 + CC BY-NC 1.0 lets others remix, tweak, and build upon the author’s work non-commercially, and although their new works must also acknowledge the author and be non-commercial, they don’t have to licence their derivative works on the same terms. + CC BY-NC 1.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales et, bien que les nouvelles œuvres doivent créditer l’auteur/autrice en citant son nom et ne pas constituer une utilisation commerciale, elles n’ont pas à être diffusées selon les mêmes conditions. + + + + 2004-05-24 + + + Creative Commons Признание-Некомерсиално 2.0 Неадаптиран + Creative Commons Uveďte původ–Neužívejte komerčně 2.0 Generic + Creative Commons Kreditering-Ikkekommerciel 2.0 Generisk + Creative Commons Namensnennung – Nicht kommerziell 2.0 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση 2.0 Γενικό + Creative Commons Attribution–NonCommercial 2.0 Generic + Creative Commons Atribución–NoComercial 2.0 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk 2.0 Üldine + Creative Commons Nimeä–EiKaupallinen 2.0 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale 2.0 Générique + Creative Commons Imenovanje–Nekomercijalno 2.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! 2.0 Általános + Creative Commons Attribuzione – Non commerciale 2.0 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas 2.0 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli 2.0 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali 2.0 Generic + Creative Commons Naamsvermelding–NietCommercieel 2.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne 2.0 Ogólny + Creative Commons Atribuição–NãoComercial 2.0 Genérica + Creative Commons Atribuire–Necomercial 2.0 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie 2.0 Generic + Creative Commons Priznanje avtorstva-Nekomercialno 2.0 Generična + Creative Commons Erkännande–IckeKommersiell 2.0 Generisk + CC_BYNC_2_0 + CC_BYNC_2_0 + 2004-05-25 + CC_BYNC_2_0 + CC_BYNC_2_0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 + CC BY-NC 2.0 lets others remix, tweak, and build upon the author’s work non-commercially, and although their new works must also acknowledge the author and be non-commercial, they don’t have to licence their derivative works on the same terms. + CC BY-NC 2.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales et, bien que les nouvelles œuvres doivent créditer l’auteur/autrice en citant son nom et ne pas constituer une utilisation commerciale, elles n’ont pas à être diffusées selon les mêmes conditions. + + + + + + Creative Commons Признание-Некомерсиално 2.5 Неадаптиран + Creative Commons Uveďte původ–Neužívejte komerčně 2.5 Generic + Creative Commons Kreditering-Ikkekommerciel 2.5 Generisk + Creative Commons Namensnennung – Nicht kommerziell 2.5 Generic + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση 2.5 Γενικό + Creative Commons Attribution–NonCommercial 2.5 Generic + Creative Commons Atribución–NoComercial 2.5 Genérica + Creative Commons Autorile viitamine–Mitteäriline eesmärk 2.5 Üldine + Creative Commons Nimeä–EiKaupallinen 2.5 Yleinen + Creative Commons Attribution – Pas d’Utilisation Commerciale 2.5 Générique + Creative Commons Imenovanje–Nekomercijalno 2.5 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! 2.5 Általános + Creative Commons Attribuzione – Non commerciale 2.5 Generico + Creative Commons Priskyrimas – Nekomercinis platinimas 2.5 Bendrasis + Creative Commons Atsaucoties–Nekomerciāli 2.5 Vispārīgs + Creative Commons Attribuzzjoni-MhuxKummerċjali 2.5 Generic + Creative Commons Naamsvermelding–NietCommercieel 2.5 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne 2.5 Ogólny + Creative Commons Atribuição–NãoComercial 2.5 Genérica + Creative Commons Atribuire–Necomercial 2.5 Generică + Creative Commons Uvedenie Autora-Nekomerčné Použitie 2.5 Generic + Creative Commons Priznanje avtorstva-Nekomercialno 2.5 Generična + Creative Commons Erkännande–IckeKommersiell 2.5 Generisk + CC_BYNC_2_5 + CC_BYNC_2_5 + 2005-06-01 + CC_BYNC_2_5 + CC_BYNC_2_5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 + CC BY-NC 2.5 lets others remix, tweak, and build upon the author’s work non-commercially, and although their new works must also acknowledge the author and be non-commercial, they don’t have to licence their derivative works on the same terms. + CC BY-NC 2.5 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales et, bien que les nouvelles œuvres doivent créditer l’auteur/autrice en citant son nom et ne pas constituer une utilisation commerciale, elles n’ont pas à être diffusées selon les mêmes conditions. + + + + + + Creative Commons Признание-Некомерсиално 3.0 Нелокализиран + Creative Commons Uveďte původ–Neužívejte komerčně 3.0 Unported + Creative Commons Kreditering-Ikkekommerciel 3.0 Ikke porteret + Creative Commons Namensnennung – Nicht kommerziell 3.0 Unported + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση 3.0 Μη εισαγόμενο + Creative Commons Attribution–NonCommercial 3.0 Unported + Creative Commons Atribución–NoComercial 3.0 Unported + Creative Commons Autorile viitamine–Mitteäriline eesmärk 3.0 Jurisdiktsiooniga sidumata + Creative Commons Nimeä–EiKaupallinen 3.0 Ei sovitettu + Creative Commons Attribution – Pas d’Utilisation Commerciale 3.0 non transposé + Creative Commons Imenovanje–Nekomercijalno 3.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne add el! 3.0 Unported + Creative Commons Attribuzione – Non commerciale 3.0 Unported + Creative Commons Priskyrimas – Nekomercinis platinimas 3.0 Nepritaikyta jurisdikcijai + Creative Commons Atsaucoties–Nekomerciāli 3.0 Nepārnesta + Creative Commons Attribuzzjoni-MhuxKummerċjali 3.0 Unported + Creative Commons Naamsvermelding–NietCommercieel 3.0 Unported + Creative Commons Uznanie autorstwa–Użycie niekomercyjne 3.0 Unported + Creative Commons Atribuição–NãoComercial 3.0 Não Adaptada + Creative Commons Atribuire–Necomercial 3.0 Ne-adaptată + Creative Commons Uvedenie Autora-Nekomerčné Použitie 3.0 Unported + Creative Commons Priznanje avtorstva-Nekomercialno 3.0 Nedoločena + Creative Commons Erkännande–IckeKommersiell 3.0 Unported + CC_BYNC_3_0 + CC_BYNC_3_0 + 2007-02-23 + CC_BYNC_3_0 + CC_BYNC_3_0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 + CC BY-NC 3.0 lets others remix, tweak, and build upon the author’s work non-commercially, and although their new works must also acknowledge the author and be non-commercial, they don’t have to licence their derivative works on the same terms. + CC BY-NC 3.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales et, bien que les nouvelles œuvres doivent créditer l’auteur/autrice en citant son nom et ne pas constituer une utilisation commerciale, elles n’ont pas à être diffusées selon les mêmes conditions. + + + + Unported licences are licences that are not associated with any specific jurisdiction, e.g. country. + + + Creative Commons Uveďte původ–Neužívejte komerčně 4.0 Mezinárodní + Creative Commons Namensnennung – Nicht kommerziell 4.0 International + Creative Commons Αναφορά Δημιουργού – Μη Εμπορική Χρήση 4.0 Διεθνές + Creative Commons Attribution–NonCommercial 4.0 International + Creative Commons Atribución–NoComercial 4.0 Internacional + Creative Commons Nimeä–EiKaupallinen 4.0 Kansainvälinen + Creative Commons Attribution – Pas d’Utilisation Commerciale 4.0 International + Creative Commons Imenovanje–Nekomercijalno 4.0 međunarodna + Creative Commons Nevezd meg! – Ne add el! 4.0 Nemzetközi + Creative Commons Attribuzione – Non commerciale 4.0 Internazionale + Creative Commons Priskyrimas – Nekomercinis platinimas 4.0 Tarptautinė + Creative Commons Atsaucoties–Nekomerciāli 4.0 Internacionāls + Creative Commons Naamsvermelding–NietCommercieel 4.0 Internationaal + Creative Commons Uznanie autorstwa–Użycie niekomercyjne 4.0 Międzynarodowe + Creative Commons Atribuição–NãoComercial 4.0 Internacional + Creative Commons Atribuire–Necomercial 4.0 Internațional + Creative Commons Erkännande–IckeKommersiell 4.0 Internationell + Creative Commons Признание-Некомерсиално 4.0 Международен + Creative Commons Kreditering-Ikkekommerciel 4.0 International + Creative Commons Autorile viitamine–Mitteäriline eesmärk 4.0 Rahvusvaheline + Creative Commons Attribuzzjoni-MhuxKummerċjali 4.0 Internazzjonali + Creative Commons Uvedenie Autora-Nekomerčné Použitie 4.0 Medzinárodný + Creative Commons Priznanje avtorstva-Nekomercialno 4.0 Mednarodna + CC_BYNC_4_0 + CC_BYNC_4_0 + 2013-11-26 + CC_BYNC_4_0 + CC_BYNC_4_0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 + CC BY-NC 4.0 lets others remix, tweak, and build upon the author’s work non-commercially, and although their new works must also acknowledge the author and be non-commercial, they don’t have to licence their derivative works on the same terms. + CC BY-NC 4.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice à des fins non commerciales et, bien que les nouvelles œuvres doivent créditer l’auteur/autrice en citant son nom et ne pas constituer une utilisation commerciale, elles n’ont pas à être diffusées selon les mêmes conditions. + + + + + + Creative Commons Uveďte původ–Nezpracovávejte 4.0 Mezinárodní + Creative Commons Navngivelse–IngenBearbejdelse 4.0 International + Creative Commons Namensnennung – Keine Bearbeitungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα 4.0 Διεθνές + Creative Commons Attribution–NoDerivatives 4.0 International + Creative Commons Atribución–SinDerivar 4.0 Internacional + Creative Commons Nimeä–EiMuutoksia 4.0 Kansainvälinen + Creative Commons Attribution – Pas de Modification 4.0 International + Creative Commons Imenovanje–Bez prerada 4.0 međunarodna + Creative Commons Nevezd meg! – Ne változtasd! 4.0 Nemzetközi + Creative Commons Attribuzione – Non opere derivate 4.0 Internazionale + Creative Commons Priskyrimas – Jokių išvestinių darbų 4.0 Tarptautinė + Creative Commons Atsaucoties, nepārveidojot 4.0 Internacionāls + Creative Commons Naamsvermelding–GeenAfgeleideWerken 4.0 Internationaal + Creative Commons Uznanie autorstwa – Bez utworów zależnych 4.0 Międzynarodowe + Creative Commons Atribuição–SemDerivações 4.0 Internacional + Creative Commons Atribuire–FărăDerivate 4.0 Internațional + Creative Commons Erkännande–IngaBearbetningar 4.0 Internationell + CC_BYND + CC_BYND + 2013-11-25 + CC_BYND + CC_BYND + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + This licence allows for redistribution, commercial and non-commercial, as long as it is passed along unchanged and in whole, with credit to the author. + Cette licence autorise la redistribution, à des fins commerciales ou non, tant que l’œuvre est diffusée sans modification et dans son intégralité, avec attribution et citation du nom de l’auteur/autrice. + + + 2013-11-26 + + + Creative Commons Признание-Без производни 1.0 Неадаптиран + Creative Commons Uveďte původ–Nezpracovávejte 1.0 Generic + Creative Commons Kreditering-Ingen afledninger 1.0 Generisk + Creative Commons Namensnennung – Keine Bearbeitung 1.0 Generic + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα 1.0 Γενικό + Creative Commons Attribution–NoDerivs 1.0 Generic + Creative Commons Atribución–SinDerivadas 1.0 Genérica + Creative Commons Autorile viitamine–Tuletatud teoste keeld 1.0 Üldine + Creative Commons Nimeä–EiMuutoksia 1.0 Yleinen + Creative Commons Attribution – Pas de Modification 1.0 Générique + Creative Commons Imenovanje–Bez prerada 1.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne változtasd! 1.0 Általános + Creative Commons Attribuzione – Non opere derivate 1.0 Generico + Creative Commons Priskyrimas – Jokių išvestinių darbų 1.0 Bendrasis + Creative Commons Atsaucoties–Nepārveidojot 1.0 Vispārīgs + Creative Commons Attribuzzjoni-EbdaDerivattivi 1.0 Generic + Creative Commons Naamsvermelding–GeenAfgeleideWerken 1.0 Unported + Creative Commons Uznanie autorstwa–Bez utworów zależnych 1.0 Ogólny + Creative Commons Atribuição–SemDerivações 1.0 Genérica + Creative Commons Atribuire–FărăModificări 1.0 Generică + Creative Commons Uvedenie Autora-Bez Odvodeného Obsahu 1.0 Generic + Creative Commons Priznanje avtorstva-Brez predelav 1.0 Generična + Creative Commons Erkännande–IngaBearbetningar 1.0 Generisk + CC_BYND_1_0 + CC_BYND_1_0 + 2002-12-15 + CC_BYND_1_0 + CC_BYND_1_0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 + CC BY-ND 1.0 allows for redistribution, commercial and non-commercial, as long as it is passed along unchanged and in whole, with credit to the author. + CC BY-ND 1.0 autorise la redistribution, à des fins commerciales ou non, tant que l’œuvre est diffusée sans modification et dans son intégralité, avec attribution et citation du nom de l’auteur/autrice. + + + + 2004-05-24 + + + Creative Commons Признание-Без производни 2.0 Неадаптиран + Creative Commons Uveďte původ–Nezpracovávejte 2.0 Generic + Creative Commons Kreditering-Ingen afledninger 2.0 Generisk + Creative Commons Namensnennung – Keine Bearbeitung 2.0 Generic + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα 2.0 Γενικό + Creative Commons Attribution–NoDerivs 2.0 Generic + Creative Commons Atribución–SinDerivadas 2.0 Genérica + Creative Commons Autorile viitamine–Tuletatud teoste keeld 2.0 Üldine + Creative Commons Nimeä–EiMuutoksia 2.0 Yleinen + Creative Commons Attribution – Pas de Modification 2.0 Générique + Creative Commons Imenovanje–Bez prerada 2.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne változtasd! 2.0 Általános + Creative Commons Attribuzione – Non opere derivate 2.0 Generico + Creative Commons Priskyrimas – Jokių išvestinių darbų 2.0 Bendrasis + Creative Commons Atsaucoties–Nepārveidojot 2.0 Vispārīgs + Creative Commons Attribuzzjoni-EbdaDerivattivi 2.0 Generic + Creative Commons Naamsvermelding–GeenAfgeleideWerken 2.0 Unported + Creative Commons Uznanie autorstwa–Bez utworów zależnych 2.0 Ogólny + Creative Commons Atribuição–SemDerivações 2.0 Genérica + Creative Commons Atribuire–FărăModificări 2.0 Generică + Creative Commons Uvedenie Autora-Bez Odvodeného Obsahu 2.0 Generic + Creative Commons Priznanje avtorstva-Brez predelav 2.0 Generična + Creative Commons Erkännande–IngaBearbetningar 2.0 Generisk + CC_BYND_2_0 + CC_BYND_2_0 + 2004-05-25 + CC_BYND_2_0 + CC_BYND_2_0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 + CC BY-ND 2.0 allows for redistribution, commercial and non-commercial, as long as it is passed along unchanged and in whole, with credit to the author. + CC BY-ND 2.0 autorise la redistribution, à des fins commerciales ou non, tant que l’œuvre est diffusée sans modification et dans son intégralité, avec attribution et citation du nom de l’auteur. + + + + + + Creative Commons Признание-Без производни 2.5 Неадаптиран + Creative Commons Uveďte původ–Nezpracovávejte 2.5 Generic + Creative Commons Kreditering-Ingen afledninger 2.5 Generisk + Creative Commons Namensnennung – Keine Bearbeitung 2.5 Generic + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα 2.5 Γενικό + Creative Commons Attribution–NoDerivs 2.5 Generic + Creative Commons Atribución–SinDerivadas 2.5 Genérica + Creative Commons Autorile viitamine–Tuletatud teoste keeld 2.5 Üldine + Creative Commons Nimeä–EiMuutoksia 2.5 Yleinen + Creative Commons Attribution – Pas de Modification 2.5 Générique + Creative Commons Imenovanje–Bez prerada 2.5 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne változtasd! 2.5 Általános + Creative Commons Attribuzione – Non opere derivate 2.5 Generico + Creative Commons Priskyrimas – Jokių išvestinių darbų 2.5 Bendrasis + Creative Commons Atsaucoties–Nepārveidojot 2.5 Vispārīgs + Creative Commons Attribuzzjoni-EbdaDerivattivi 2.5 Generic + Creative Commons Naamsvermelding–GeenAfgeleideWerken 2.5 Unported + Creative Commons Uznanie autorstwa–Bez utworów zależnych 2.5 Ogólny + Creative Commons Atribuição–SemDerivações 2.5 Genérica + Creative Commons Atribuire–FărăModificări 2.5 Generică + Creative Commons Uvedenie Autora-Bez Odvodeného Obsahu 2.5 Generic + Creative Commons Priznanje avtorstva-Brez predelav 2.5 Generična + Creative Commons Erkännande–IngaBearbetningar 2.5 Generisk + CC_BYND_2_5 + CC_BYND_2_5 + 2005-06-01 + CC_BYND_2_5 + CC_BYND_2_5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 + CC BY-ND 2.5 allows for redistribution, commercial and non-commercial, as long as it is passed along unchanged and in whole, with credit to the author. + CC BY-ND 2.5 autorise la redistribution, à des fins commerciales ou non, tant que l’œuvre est diffusée sans modification et dans son intégralité, avec attribution et citation du nom de l’auteur/autrice. + + + + + + Creative Commons Признание-Без производни 3.0 Нелокализиран + Creative Commons Uveďte původ–Nezpracovávejte 3.0 Unported + Creative Commons Kreditering-Ingen afledninger 3.0 Ikke porteret + Creative Commons Namensnennung – Keine Bearbeitung 3.0 Unported + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα 3.0 Μη εισαγόμενο + Creative Commons Attribution–NoDerivs 3.0 Unported + Creative Commons Atribución–SinDerivadas 3.0 Unported + Creative Commons Autorile viitamine–Tuletatud teoste keeld 3.0 Jurisdiktsiooniga sidumata + Creative Commons Nimeä–EiMuutoksia 3.0 Ei sovitettu + Creative Commons Attribution – Pas de Modification 3.0 non transposé + Creative Commons Imenovanje–Bez prerada 3.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Ne változtasd! 3.0 Unported + Creative Commons Attribuzione – Non opere derivate 3.0 Unported + Creative Commons Priskyrimas – Jokių išvestinių darbų 3.0 Nepritaikyta jurisdikcijai + Creative Commons Atsaucoties–Nepārveidojot 3.0 Nepārnesta + Creative Commons Attribuzzjoni-EbdaDerivattivi 3.0 Unported + Creative Commons Naamsvermelding–GeenAfgeleideWerken 3.0 Unported + Creative Commons Uznanie autorstwa–Bez utworów zależnych 3.0 Unported + Creative Commons Atribuição–SemDerivações 3.0 Não Adaptada + Creative Commons Atribuire-FărăModificări 3.0 Ne-adaptată + Creative Commons Uvedenie Autora-Bez Odvodeného Obsahu 3.0 Unported + Creative Commons Priznanje avtorstva-Brez predelav 3.0 Nedoločena + Creative Commons Erkännande–IngaBearbetningar 3.0 Unported + CC_BYND_3_0 + CC_BYND_3_0 + 2007-02-23 + CC_BYND_3_0 + CC_BYND_3_0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 + CC BY-ND 3.0 allows for redistribution, commercial and non-commercial, as long as it is passed along unchanged and in whole, with credit to the author. + CC BY-ND 3.0 autorise la redistribution, à des fins commerciales ou non, tant que l’œuvre est diffusée sans modification et dans son intégralité, avec attribution et citation du nom de l’auteur/autrice. + + + + Unported licences are licences that are not associated with any specific jurisdiction, e.g. country. + + + Creative Commons Uveďte původ–Nezpracovávejte 4.0 Mezinárodní + Creative Commons Namensnennung – Keine Bearbeitungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Όχι Παράγωγα Έργα 4.0 Διεθνές + Creative Commons Attribution–NoDerivatives 4.0 International + Creative Commons Atribución–SinDerivar 4.0 Internacional + Creative Commons Nimeä–EiMuutoksia 4.0 Kansainvälinen + Creative Commons Attribution – Pas de Modification 4.0 International + Creative Commons Imenovanje–Bez prerada 4.0 međunarodna + Creative Commons Nevezd meg! – Ne változtasd! 4.0 Nemzetközi + Creative Commons Attribuzione – Non opere derivate 4.0 Internazionale + Creative Commons Priskyrimas – Jokių išvestinių darbų 4.0 Tarptautinė + Creative Commons Atsaucoties, nepārveidojot 4.0 Internacionāls + Creative Commons Naamsvermelding–GeenAfgeleideWerken 4.0 Internationaal + Creative Commons Uznanie autorstwa – Bez utworów zależnych 4.0 Międzynarodowe + Creative Commons Atribuição–SemDerivações 4.0 Internacional + Creative Commons Atribuire–FărăDerivate 4.0 Internațional + Creative Commons Erkännande–IngaBearbetningar 4.0 Internationell + Creative Commons Признание-Без производни 4.0 Международен + Creative Commons Kreditering-Ingen afledninger 4.0 International + Creative Commons Autorile viitamine–Tuletatud teoste keeld 4.0 Rahvusvaheline + Creative Commons Attribuzzjoni-EbdaDerivattivi 4.0 Internazzjonali + Creative Commons Uvedenie Autora-Žiadne Odvodené Diela 4.0 Medzinárodný + Creative Commons Priznanje avtorstva-Brez predelav 4.0 Mednarodna + CC_BYND_4_0 + CC_BYND_4_0 + 2013-11-26 + CC_BYND_4_0 + CC_BYND_4_0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 + CC BY-ND 4.0 allows for redistribution, commercial and non-commercial, as long as it is passed along unchanged and in whole, with credit to the author. + CC BY-ND 4.0 autorise la redistribution, à des fins commerciales ou non, tant que l’œuvre est diffusée sans modification et dans son intégralité, avec attribution et citation du nom de l’auteur/autrice. + + + + + + Creative Commons Uveďte původ–Zachovejte licenci 4.0 Mezinárodní + Creative Commons Navngivelse–DelPåSammeVilkår 4.0 International + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Παρόμοια Διανομή 4.0 Διεθνές + Creative Commons Attribution–ShareAlike 4.0 International + Creative Commons Atribución–CompartirIgual 4.0 Internacional + Creative Commons Nimeä–JaaSamoin 4.0 Kansainvälinen + Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International + Creative Commons Imenovanje–Dijeli pod istim uvjetima 4.0 međunarodna + Creative Commons Nevezd meg! – Így add tovább! 4.0 Nemzetközi + Creative Commons Attribuzione – Condividi allo stesso modo 4.0 Internazionale + Creative Commons Priskyrimas – Analogiškas platinimas 4.0 Tarptautinė + Creative Commons Atsaucoties–Nemainot licenci 4.0 Internacionāls + Creative Commons Naamsvermelding–GelijkDelen 4.0 Internationaal + Creative Commons Uznanie autorstwa–Na tych samych warunkach 4.0 Międzynarodowe + Creative Commons Atribuição–CompartilhaIgual 4.0 Internacional + Creative Commons Atribuire–Distribuire în condiţii identice 4.0 Internațional + Creative Commons Erkännande–DelaLika 4.0 Internationell + CC_BYSA + CC_BYSA + 2013-11-25 + CC_BYSA + CC_BYSA + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + This licence lets others remix, tweak, and build upon the author's work even for commercial purposes, as long as they credit the author and licence their new creations under the identical terms. This licence is often compared to “copyleft” free and open source software licences. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. This is the licence used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licenced projects. + Cette licence permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/l’autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/l’autrice en citant son nom et qu’on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparée aux licences de logiciels libres, «open source» ou «copyleft». Toutes les nouvelles œuvres basées sur celles de l’auteur/autrice auront la même licence, et toute œuvre dérivée pourra être utilisée même à des fins commerciales. C’est la licence utilisée par Wikipédia; elle est recommandée pour des œuvres qui pourraient bénéficier de l’incorporation de contenu depuis Wikipédia et d’autres projets sous licence similaire. + + + 2013-11-26 + + + Creative Commons Признание-Споделяне на споделеното 1.0 Неадаптира + Creative Commons Uveďte původ–Zachovejte licenci 1.0 Generic + Creative Commons Kreditering-Deling på samme vilkår 1.0 Generisk + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 1.0 Generic + Creative Commons Αναφορά Δημιουργού – Παρόμοια Διανομή 1.0 Μη εισαγόμενο + Creative Commons Attribution–ShareAlike 1.0 Generic + Creative Commons Atribución–CompartirIgual 1.0 Genérica + Creative Commons Autorile viitamine–Jagamine samadel tingimustel 1.0 Üldine + Creative Commons Nimeä–JaaSamoin 1.0 Yleinen + Creative Commons Attribution – Partage dans les Mêmes Conditions 1.0 Générique + Creative Commons Imenovanje–Dijeli pod istim uvjetima 1.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Így add tovább! 1.0 Általános + Creative Commons Attribuzione – Condividi allo stesso modo 1.0 Generico + Creative Commons Priskyrimas – Analogiškas platinimas 1.0 Bendrasis + Creative Commons Atsaucoties–Nemainot licenci 1.0 Vispārīgs + Creative Commons Attribuzzjoni-KondiviżjoniUgwali 1.0 Generic + Creative Commons Naamsvermelding–GelijkDelen 1.0 Unported + Creative Commons Uznanie autorstwa–Na tych samych warunkach 1.0 Ogólny + Creative Commons Atribuição–CompartilhaIgual 1.0 Genérica + Creative Commons Atribuire–Distribuire în condiţii identice 1.0 Generică + Creative Commons Uvedenie Autora-Rovnaké Šírenie 1.0 Generic + Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 1.0 Generična + Creative Commons Erkännande–DelaLika 1.0 Generisk + CC_BYSA_1_0 + CC_BYSA_1_0 + 2002-12-15 + CC_BYSA_1_0 + CC_BYSA_1_0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 + CC BY-SA 1.0 lets others remix, tweak, and build upon the author’s work even for commercial purposes, as long as they credit the author and licence their new creations under the identical terms. This licence is often compared to “copyleft” free and open source software licences. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. This is the licence used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licenced projects. + CC BY-SA 1.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom et qu’on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparée aux licences de logiciels libres, «open source» ou «copyleft». Toutes les nouvelles œuvres basées sur celles de l’auteur/autrice auront la même licence, et toute œuvre dérivée pourra être utilisée même à des fins commerciales. C’est la licence utilisée par Wikipédia; elle est recommandée pour des œuvres qui pourraient bénéficier de l’incorporation de contenu depuis Wikipédia et d’autres projets sous licence similaire. + + + + 2004-05-24 + + + Creative Commons Признание-Споделяне на споделеното 2.0 Неадаптиран + Creative Commons Uveďte původ–Zachovejte licenci 2.0 Generic + Creative Commons Kreditering-Deling på samme vilkår 2.0 Generisk + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 2.0 Generic + Creative Commons Αναφορά Δημιουργού – Παρόμοια Διανομή 2.0 Μη εισαγόμενο + Creative Commons Attribution–ShareAlike 2.0 Generic + Creative Commons Atribución–CompartirIgual 2.0 Genérica + Creative Commons Autorile viitamine–Jagamine samadel tingimustel 2.0 Üldine + Creative Commons Nimeä–JaaSamoin 2.0 Yleinen + Creative Commons Attribution – Partage dans les Mêmes Conditions 2.0 Générique + Creative Commons Imenovanje–Dijeli pod istim uvjetima 2.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Így add tovább! 2.0 Általános + Creative Commons Attribuzione – Condividi allo stesso modo 2.0 Generico + Creative Commons Priskyrimas – Analogiškas platinimas 2.0 Bendrasis + Creative Commons Atsaucoties–Nemainot licenci 2.0 Vispārīgs + Creative Commons Attribuzzjoni-KondiviżjoniUgwali 2.0 Generic + Creative Commons Naamsvermelding–GelijkDelen 2.0 Unported + Creative Commons Uznanie autorstwa–Na tych samych warunkach 2.0 Ogólny + Creative Commons Atribuição–CompartilhaIgual 2.0 Genérica + Creative Commons Atribuire–Distribuire în condiţii identice 2.0 Generică + Creative Commons Uvedenie Autora-Rovnaké Šírenie 2.0 Generic + Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 2.0 Generična + Creative Commons Erkännande–DelaLika 2.0 Generisk + CC_BYSA_2_0 + CC_BYSA_2_0 + 2004-05-25 + CC_BYSA_2_0 + CC_BYSA_2_0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 + CC BY-SA 2.0 lets others remix, tweak, and build upon the author’s work even for commercial purposes, as long as they credit the author and licence their new creations under the identical terms. This licence is often compared to “copyleft” free and open source software licences. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. This is the licence used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licenced projects. + CC BY-SA 2.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom et qu’on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparée aux licences de logiciels libres, «open source» ou «copyleft». Toutes les nouvelles œuvres basées sur celles de l’auteur/autrice auront la même licence, et toute œuvre dérivée pourra être utilisée même à des fins commerciales. C’est la licence utilisée par Wikipédia; elle est recommandée pour des œuvres qui pourraient bénéficier de l’incorporation de contenu depuis Wikipédia et d’autres projets sous licence similaire. + + + + + + Creative Commons Признание-Споделяне на споделеното 2.5 Неадаптиран + Creative Commons Uveďte původ–Zachovejte licenci 2.5 Generic + Creative Commons Kreditering-Deling på samme vilkår 2.5 Generisk + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 2.5 Generic + Creative Commons Αναφορά Δημιουργού – Παρόμοια Διανομή 2.5 Μη εισαγόμενο + Creative Commons Attribution–ShareAlike 2.5 Generic + Creative Commons Atribución–CompartirIgual 2.5 Genérica + Creative Commons Autorile viitamine–Jagamine samadel tingimustel 2.5 Üldine + Creative Commons Nimeä–JaaSamoin 2.5 Yleinen + Creative Commons Attribution – Partage dans les Mêmes Conditions 2.5 Générique + Creative Commons Imenovanje–Dijeli pod istim uvjetima 2.5 nelokalizirana licenca + Creative Commons Nevezd meg! – Így add tovább! 2.5 Általános + Creative Commons Attribuzione – Condividi allo stesso modo 2.5 Generico + Creative Commons Priskyrimas – Analogiškas platinimas 2.5 Bendrasis + Creative Commons Atsaucoties–Nemainot licenci 2.5 Vispārīgs + Creative Commons Attribuzzjoni-KondiviżjoniUgwali 2.5 Generic + Creative Commons Naamsvermelding–GelijkDelen 2.5 Unported + Creative Commons Uznanie autorstwa–Na tych samych warunkach 2.5 Ogólny + Creative Commons Atribuição–CompartilhaIgual 2.5 Genérica + Creative Commons Atribuire–Distribuire în condiţii identice 2.5 Generică + Creative Commons Uvedenie Autora-Rovnaké Šírenie 2.5 Generic + Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 2.5 Generična + Creative Commons Erkännande–DelaLika 2.5 Generisk + CC_BYSA_2_5 + CC_BYSA_2_5 + 2005-06-01 + CC_BYSA_2_5 + CC_BYSA_2_5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 + CC BY-SA 2.5 lets others remix, tweak, and build upon the author’s work even for commercial purposes, as long as they credit the author and licence their new creations under the identical terms. This licence is often compared to “copyleft” free and open source software licences. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. This is the licence used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licenced projects. + CC BY-SA 2.5 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom et qu’on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparée aux licences de logiciels libres, «open source» ou «copyleft». Toutes les nouvelles œuvres basées sur celles de l’auteur/autrice auront la même licence, et toute œuvre dérivée pourra être utilisée même à des fins commerciales. C’est la licence utilisée par Wikipédia; elle est recommandée pour des œuvres qui pourraient bénéficier de l’incorporation de contenu depuis Wikipédia et d’autres projets sous licence similaire. + + + + + + Creative Commons Признание-Споделяне на споделеното 3.0 Нелокализиран + Creative Commons Uveďte původ–Zachovejte licenci 3.0 Unported + Creative Commons Kreditering-Deling på samme vilkår 3.0 Ikke porteret + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 3.0 Unported + Creative Commons Αναφορά Δημιουργού – Παρόμοια Διανομή 3.0 Μη εισαγόμενο + Creative Commons Attribution–ShareAlike 3.0 Unported + Creative Commons Atribución–CompartirIgual 3.0 Unported + Creative Commons Autorile viitamine–Jagamine samadel tingimustel 3.0 Jurisdiktsiooniga sidumata + Creative Commons Nimeä–JaaSamoin 3.0 Ei sovitettu + Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 non transposé + Creative Commons Imenovanje–Dijeli pod istim uvjetima 3.0 nelokalizirana licenca + Creative Commons Nevezd meg! – Így add tovább! 3.0 Unported + Creative Commons Attribuzione – Condividi allo stesso modo 3.0 Unported + Creative Commons Priskyrimas – Analogiškas platinimas 3.0 Nepritaikyta jurisdikcijai + Creative Commons Atsaucoties–Nemainot licenci 3.0 Nepārnesta + Creative Commons Attribuzzjoni-KondiviżjoniUgwali 3.0 Unported + Creative Commons Naamsvermelding–GelijkDelen 3.0 Unported + Creative Commons Uznanie autorstwa–Na tych samych warunkach 3.0 Unported + Creative Commons Atribuição–CompartilhaIgual 3.0 Não Adaptada + Creative Commons Atribuire–Distribuire în condiţii identice 3.0 Ne-adaptată + Creative Commons Uvedenie Autora-Rovnaké Šírenie 3.0 Unported + Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 3.0 Nedoločena + Creative Commons Erkännande–DelaLika 3.0 Unported + CC_BYSA_3_0 + CC_BYSA_3_0 + 2007-02-23 + CC_BYSA_3_0 + CC_BYSA_3_0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 + CC BY-SA 3.0 lets others remix, tweak, and build upon the author’s work even for commercial purposes, as long as they credit the author and licence their new creations under the identical terms. This licence is often compared to “copyleft” free and open source software licences. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. This is the licence used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licenced projects. + CC BY-SA 3.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom et qu’on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparée aux licences de logiciels libres, «open source» ou «copyleft». Toutes les nouvelles œuvres basées sur les œuvres de l’auteur/autrice auront la même licence, et toute œuvre dérivée pourra être utilisée même à des fins commerciales. C’est la licence utilisée par Wikipédia; elle est recommandée pour des œuvres qui pourraient bénéficier de l’incorporation de contenu depuis Wikipédia et d’autres projets sous licence similaire. + + + + Unported licences are licences that are not associated with any specific jurisdiction, e.g. country. + + + Признание-Споделяне на споделеното 3.0 Холандия + Uveďte původ–Zachovejte licenci 3.0 Nizozemí + Kreditering-Deling på samme vilkår 3.0 Holland + Namensnennung – Weitergabe unter gleichen Bedingungen 3.0 Niederlande + Αναφορά Δημιουργού – Παρόμοια Διανομή 3.0 Ολλανδία + Attribution-ShareAlike 3.0 Netherlands + Reconocimiento–CompartirIgual 3.0 Países Bajos + Autorile viitamine–Jagamine samadel tingimustel 3.0 Holland + Nimeä–JaaSamoin 3.0 Hollanti + Attribution – Partage dans les Mêmes Conditions 3.0 Pays-Bas + Imenovanje–Dijeli pod istim uvjetima 3.0 Nizozemska + Nevezd meg! – Így add tovább! 3.0 Hollandia + Attribuzione – Condividi allo stesso modo 3.0 Olanda + Priskyrimas – Analogiškas platinimas 3.0 Nyderlandai + Attiecinājums–Dalīties līdzīgi 3.0 Nīderlande + Attribuzzjoni-KondiviżjoniUgwali 3.0 Pajjiżi l-Baxxi + Naamsvermelding–GelijkDelen 3.0 Nederland + Uznanie autorstwa–Na tych samych warunkach 3.0 Holandia + Atribuição–CompartilhaIgual 3.0 Holanda + Atribuire – Distribuire în condiţii identice 3.0 Olanda + Uvedenie Autora-Rovnaké Šírenie 3.0 Holandsko + Priznanje avtorstva-Deljenje pod enakimi pogoji 3.0 Nizozemska + Erkännande–DelaLika 3.0 Nederländerna + CC_BYSA_3_0_NL + CC_BYSA_3_0_NL + 2007-02-23 + CC_BYSA_3_0_NL + CC_BYSA_3_0_NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + CC BY-SA 3.0 NL + Published by Creative Commons for Netherlands, Naamsvermelding-GelijkDelen 3.0 Nederland (CC BY-SA 3.0 NL) is a licence permitting any commercial and non-commercial use, as long as credit is given to the author for the original creation and new creations are licenced under the identical terms. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. + + + + + + Creative Commons Uveďte původ–Zachovejte licenci 4.0 Mezinárodní + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International + Creative Commons Αναφορά Δημιουργού – Παρόμοια Διανομή 4.0 Διεθνές + Creative Commons Attribution–ShareAlike 4.0 International + Creative Commons Atribución–CompartirIgual 4.0 Internacional + Creative Commons Nimeä–JaaSamoin 4.0 Kansainvälinen + Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International + Creative Commons Imenovanje–Dijeli pod istim uvjetima 4.0 međunarodna + Creative Commons Nevezd meg! – Így add tovább! 4.0 Nemzetközi + Creative Commons Attribuzione – Condividi allo stesso modo 4.0 Internazionale + Creative Commons Priskyrimas – Analogiškas platinimas 4.0 Tarptautinė + Creative Commons Atsaucoties–Nemainot licenci 4.0 Internacionāls + Creative Commons Naamsvermelding–GelijkDelen 4.0 Internationaal + Creative Commons Uznanie autorstwa–Na tych samych warunkach 4.0 Międzynarodowe + Creative Commons Atribuição–CompartilhaIgual 4.0 Internacional + Creative Commons Atribuire–Distribuire în condiţii identice 4.0 Internațional + Creative Commons Erkännande–DelaLika 4.0 Internationell + Creative Commons Признание-Споделяне на споделеното 4.0 Международен + Creative Commons Kreditering-Deling på samme vilkår 4.0 International + Creative Commons Autorile viitamine–Jagamine samadel tingimustel 4.0 Rahvusvaheline + Creative Commons Attribuzzjoni-KondiviżjoniUgwali 4.0 Internazzjonali + Creative Commons Uvedenie Autora-Rovnaké Šírenie 4.0 Medzinárodný + Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 4.0 Mednarodna + CC_BYSA_4_0 + CC_BYSA_4_0 + 2013-11-26 + CC_BYSA_4_0 + CC_BYSA_4_0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 + CC BY-SA 4.0 lets others remix, tweak, and build upon the author’s work even for commercial purposes, as long as they credit the author and licence their new creations under the identical terms. This licence is often compared to “copyleft” free and open source software licences. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. This is the licence used by Wikipedia, and is recommended for materials that would benefit from incorporating content from Wikipedia and similarly licenced projects. + CC BY-SA 4.0 permet aux autres de remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom et qu’on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparée aux licences de logiciels libres, «open source» ou «copyleft». Toutes les nouvelles œuvres basées sur celles de l’auteur/autrice auront la même licence, et toute œuvre dérivée pourra être utilisée même à des fins commerciales. C’est la licence utilisée par Wikipédia; elle est recommandée pour des œuvres qui pourraient bénéficier de l’incorporation de contenu depuis Wikipédia et d’autres projets sous licence similaire. + + + + + + Creative Commons Признание 1.0 Неадаптиран + Creative Commons Uveďte původ 1.0 Generic + Creative Commons Kreditering 1.0 Generisk + Creative Commons Namensnennung 1.0 Generic + Creative Commons Αναφορά Δημιουργού 1.0 Γενικό + Creative Commons Attribution 1.0 Generic + Creative Commons Atribución 1.0 Genérica + Creative Commons Autorile viitamine 1.0 Üldine + Creative Commons Nimeä 1.0 Yleinen + Creative Commons Attribution 1.0 Générique + Creative Commons Imenovanje 1.0 nelokalizirana licenca + Creative Commons Nevezd meg! 1.0 Általános + Creative Commons Attribuzione 1.0 Generico + Creative Commons Priskyrimas 1.0 Bendrasis + Creative Commons Atsaucoties 1.0 Vispārīgs + Creative Commons Attribuzzjoni 1.0 Generic + Creative Commons Naamsvermelding 1.0 Unported + Creative Commons Uznanie autorstwa 1.0 Ogólny + Creative Commons Atribuição 1.0 Genérica + Creative Commons Atribuire 1.0 Generică + Creative Commons Uvedenie Autora 1.0 Generic + Creative Commons Priznanje avtorstva 1.0 Generična + Creative Commons Erkännande 1.0 Generisk + CC_BY_1_0 + CC_BY_1_0 + 2002-12-15 + CC_BY_1_0 + CC_BY_1_0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 + CC BY 1.0 lets others distribute, remix, tweak, and build upon the author’s work, even commercially, as long as they credit the author for the original creation. This is the most accommodating of licences offered. Recommended for maximum dissemination and use of licenced materials. + CC BY 1.0 permet aux autres de distribuer, remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom. C’est le contrat le plus souple proposé. Recommandé pour la diffusion et l’utilisation maximales d’œuvres licenciées sous CC. + + + + 2004-05-24 + + + Creative Commons Признание 2.0 Неадаптиран + Creative Commons Uveďte původ 2.0 Generic + Creative Commons Kreditering 2.0 Generisk + Creative Commons Namensnennung 2.0 Generic + Creative Commons Αναφορά Δημιουργού 2.0 Γενικό + Creative Commons Attribution 2.0 Generic + Creative Commons Atribución 2.0 Genérica + Creative Commons Autorile viitamine 2.0 Üldine + Creative Commons Nimeä 2.0 Yleinen + Creative Commons Attribution 2.0 Générique + Creative Commons Imenovanje 2.0 nelokalizirana licenca + Creative Commons Nevezd meg! 2.0 Általános + Creative Commons Attribuzione 2.0 Generico + Creative Commons Priskyrimas 2.0 Bendrasis + Creative Commons Atsaucoties 2.0 Vispārīgs + Creative Commons Attribuzzjoni 2.0 Generic + Creative Commons Naamsvermelding 2.0 Unported + Creative Commons Uznanie autorstwa 2.0 Ogólny + Creative Commons Atribuição 2.0 Genérica + Creative Commons Atribuire 2.0 Generică + Creative Commons Uvedenie Autora 2.0 Generic + Creative Commons Priznanje avtorstva 2.0 Generična + Creative Commons Erkännande 2.0 Generisk + CC_BY_2_0 + CC_BY_2_0 + 2004-05-25 + CC_BY_2_0 + CC_BY_2_0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 + CC BY 2.0 lets others distribute, remix, tweak, and build upon the author’s work, even commercially, as long as they credit the author for the original creation. This is the most accommodating of licences offered. Recommended for maximum dissemination and use of licenced materials. + CC BY 2.0 permet aux autres de distribuer, remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom. C’est le contrat le plus souple proposé. Recommandé pour la diffusion et l’utilisation maximales d’œuvres licenciées sous CC. + + + + + + Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 2.5 Generic + Creative Commons Признание 2.5 Неадаптиран + Creative Commons Uveďte původ 2.5 Generic + Creative Commons Kreditering 2.5 Generisk + Creative Commons Αναφορά Δημιουργού 2.5 Γενικό + Creative Commons Attribution 2.5 Generic + Creative Commons Atribución 2.5 Genérica + Creative Commons Autorile viitamine 2.5 Üldine + Creative Commons Nimeä 2.5 Yleinen + Creative Commons Attribution 2.5 Générique + Creative Commons Imenovanje 2.5 nelokalizirana licenca + Creative Commons Nevezd meg! 2.5 Általános + Creative Commons Attribuzione 2.5 Generico + Creative Commons Priskyrimas 2.5 Bendrasis + Creative Commons Atsaucoties 2.5 Vispārīgs + Creative Commons Attribuzzjoni 2.5 Generic + Creative Commons Naamsvermelding 2.5 Unported + Creative Commons Uznanie autorstwa 2.5 Ogólny + Creative Commons Atribuição 2.5 Genérica + Creative Commons Atribuire 2.5 Generică + Creative Commons Uvedenie Autora 2.5 Generic + Creative Commons Priznanje avtorstva 2.5 Generična + Creative Commons Erkännande 2.5 Generisk + CC_BY_2_5 + CC_BY_2_5 + 2005-06-01 + CC_BY_2_5 + CC_BY_2_5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 + CC BY 2.5 lets others distribute, remix, tweak, and build upon the author’s work, even commercially, as long as they credit the author for the original creation. This is the most accommodating of licences offered. Recommended for maximum dissemination and use of licenced materials. + CC BY 2.5 permet aux autres de distribuer, remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom. C’est le contrat le plus souple proposé. Recommandé pour la diffusion et l’utilisation maximales d’œuvres licenciées sous CC. + + + + + + Creative Commons Признание 3.0 Нелокализиран + Creative Commons Uveďte původ 3.0 Unported + Creative Commons Kreditering 3.0 Ikke porteret + Creative Commons Namensnennung 3.0 Unported + Creative Commons Αναφορά Δημιουργού 3.0 Μη εισαγόμενο + Creative Commons Attribution 3.0 Unported + Creative Commons Atribución 3.0 Unported + Creative Commons Autorile viitamine 3.0 Jurisdiktsiooniga sidumata + Creative Commons Nimeä 3.0 Ei sovitettu + Creative Commons Attribution 3.0 non transposé + Creative Commons Imenovanje 3.0 nelokalizirana licenca + Creative Commons Nevezd meg! 3.0 Unported + Creative Commons Attribuzione 3.0 Unported + Creative Commons Priskyrimas 3.0 Nepritaikyta jurisdikcijai + Creative Commons Atsaucoties 3.0 Nepārnesta + Creative Commons Attribuzzjoni 3.0 Unported + Creative Commons Naamsvermelding 3.0 Unported + Creative Commons Uznanie autorstwa 3.0 Unported + Creative Commons Atribuição 3.0 Não Adaptada + Creative Commons Atribuire 3.0 Ne-adaptată + Creative Commons Uvedenie Autora 3.0 Unported + Creative Commons Priznanje avtorstva 3.0 Nedoločena + Creative Commons Erkännande 3.0 Unported + CC_BY_3_0 + CC_BY_3_0 + 2007-02-23 + CC_BY_3_0 + CC_BY_3_0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 + CC BY 3.0 lets others distribute, remix, tweak, and build upon the author’s work, even commercially, as long as they credit the author for the original creation. This is the most accommodating of licences offered. Recommended for maximum dissemination and use of licenced materials. + CC BY 3.0 permet aux autres de distribuer, remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom. C’est le contrat le plus souple proposé. Recommandé pour la diffusion et l’utilisation maximales d’œuvres licenciées sous CC. + + + + Unported licences are licences that are not associated with any specific jurisdiction, e.g. country. + + + Признание 3.0 Австрия + Uveďte původ 3.0 Rakousko + Kreditering 3.0 Østrig + Namensnennung 3.0 Österreich + Αναφορά Δημιουργού 3.0 + Attribution 3.0 Austria + Atribución 3.0 Austria + Autorile viitamine 3.0 Austria + Nimeä 3.0 Itävalta + Attribution 3.0 Autriche + Imenovanje 3.0 Austrija + Nevezd meg! 3.0 Ausztria + Attribuzione 3.0 Austria + Priskyrimas 3.0 Austrija + Attiecinājums 3.0 Austrija + Attribuzzjoni 3.0 Awstrija + Naamsvermelding 3.0 Oostenrijk + Uznanie autorstwa 3.0 Austria + Atribuição 3.0 Áustria + Atribuire 3.0 Austria + Uvedenie Autora 3.0 Rakúsko + Priznanje avtorstva 3.0 Avstrija + Erkännande 3.0 Österrike + CC_BY_3_0_AT + CC_BY_3_0_AT + 2007-02-23 + CC_BY_3_0_AT + CC_BY_3_0_AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 NL + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + CC BY 3.0 AT + Published by Creative Commons for Austria, Namensnennung 3.0 Österreich (CC BY 3.0 AT) is a licence permitting any commercial and non-commercial use as long as credit is given to the author for the original creation. + + + + + + Признание 3.0 Холандия + Uveďte původ 3.0 Nizozemí + Kreditering 3.0 Holland + Namensnennung 3.0 Niederlande + Αναφορά Δημιουργού 3.0 Ολλανδία + Attribution 3.0 Netherlands + Atribución 3.0 Países Bajos + Autorile viitamine 3.0 Holland + Nimeä 3.0 Hollanti + Attribution 3.0 Pays-Bas + Imenovanje 3.0 Nizozemska + Nevezd meg! 3.0 Hollandia + Attribuzione 3.0 Olanda + Priskyrimas 3.0 Nyderlandai + Attiecinājums 3.0 Nīderlande + Attribuzzjoni 3.0 Pajjiżi l-Baxxi + Naamsvermelding 3.0 Nederland + Uznanie autorstwa 3.0 Holandia + Atribuição 3.0 Holanda + Atribuire 3.0 Olanda + Uvedenie Autora 3.0 Holandsko + Priznanje avtorstva 3.0 Nizozemska + Erkännande 3.0 Nederländerna + CC_BY_3_0_NL + CC_BY_3_0_NL + 2007-02-23 + CC_BY_3_0_NL + CC_BY_3_0_NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + CC BY 3.0 NL + Published by Creative Commons for Netherlands, Naamsvermelding 3.0 Nederland (CC BY 3.0 NL) is a licence permitting any commercial and non-commercial use as long as credit is given to the author for the original creation. + + + + + + Creative Commons Uveďte původ 4.0 Mezinárodní + Creative Commons Namensnennung 4.0 International + Creative Commons Αναφορά Δημιουργού 4.0 Διεθνές + Creative Commons Attribution 4.0 International + Creative Commons Atribución 4.0 Internacional + Creative Commons Nimeä 4.0 Kansainvälinen + Creative Commons Attribution 4.0 International + Creative Commons Imenovanje 4.0 međunarodna + Creative Commons Nevezd meg! 4.0 Nemzetközi + Creative Commons Attribuzione 4.0 Internazionale + Creative Commons Priskyrimas 4.0 Tarptautinė + Creative Commons Atsaucoties 4.0 Internacionāls + Creative Commons Naamsvermelding 4.0 Internationaal + Creative Commons Uznanie autorstwa 4.0 Międzynarodowe + Creative Commons Atribuição 4.0 Internacional + Creative Commons Atribuire 4.0 Internațional + Creative Commons Erkännande 4.0 Internationell + Creative Commons Признание 4.0 Международен + Creative Commons Kreditering 4.0 International + Creative Commons Autorile viitamine 4.0 Rahvusvaheline + Creative Commons Attribuzzjoni 4.0 Internazzjonali + Creative Commons Uvedenie Autora 4.0 Medzinárodný + Creative Commons Priznanje avtorstva 4.0 Mednarodna + CC_BY_4_0 + CC_BY_4_0 + 2013-11-26 + CC_BY_4_0 + CC_BY_4_0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + CC BY 4.0 + Denne licens tillader andre at videredistribuere, omarbejde, tilpasse og bygge videre på materialet, også kommercielt, så længe de krediterer skaberen af det oprindelige materiale. Dette er den mindst restriktive licens, creative commons udbyder. Anbefalet hvis man ønsker mest mulig videreformidling og brug af det licenserede materiale. + CC BY 4.0 lets others distribute, remix, tweak, and build upon the author’s work, even commercially, as long as they credit the author for the original creation. This is the most accommodating of licences offered. Recommended for maximum dissemination and use of licenced materials. + CC BY 4.0 permet aux autres de distribuer, remixer, arranger, et adapter l’œuvre de l’auteur/autrice, même à des fins commerciales, tant qu’on accorde le mérite de la création originale à l’auteur/autrice en citant son nom. C’est le contrat le plus souple proposé. Recommandé pour la diffusion et l’utilisation maximales d’œuvres licenciées sous CC. + + + + + + Public Domain Mark 1.0 + Označení volného díla 1.0 + Public domain-mærke 1.0 + Public Domain Mark 1.0 + Σήμα Δημόσιου Τομέα 1.0 + Public Domain Mark 1.0 + Etiqueta de Dominio Público 1.0 + Avaliku omandi märge 1.0 + Public Domain -merkintä 1.0 + Marque du Domaine Public 1.0 + Oznaka javnog dobra 1.0 + Közkincs megjelölés 1.0 + Marchio di pubblico dominio 1.0 + Viešosios srities žymuo 1.0 + Sabiedrības īpašuma iezīme 1.0 + Public Domain Mark 1.0 + Public Domain Mark 1.0 + Znak domeny publicznej 1.0 + Marca de Domínio Público 1.0 + Marca Domeniului Public 1.0 + Public Domain Mark 1.0 + Oznaka javne domene 1.0 + Public domain-märke 1.0 + CC_PDM_1_0 + CC_PDM_1_0 + 2010-10-01 + CC_PDM_1_0 + CC_PDM_1_0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + CC PDM 1.0 + The source of the start-use date: https://wiki.openmod-initiative.org/images/6/63/Jens-opendata_govdata.de_FraunhoferFokus.pdf + Published by Creative Commons, Public Domain Mark (CC PDM 1.0) identifies a work as being free of known restrictions under copyright law, including all related and neighboring rights. The user can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. + + + + + + Common Development and Distribution License 1.0 + CDDL_1_0 + CDDL_1_0 + 2004-01-24 + CDDL_1_0 + CDDL_1_0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + CDDL-1.0 + The source of the start-use date: https://spdx.org/licenses/CDDL-1.0.html + CDDL-1.0 is a free software licence approved by the Open Source Initiative. A moderated (or weak) copyleft licence used by SUN, including explicit patent grants, it is similar to MPL and EPL. Compiled object code can be distributed under any licence, but the original source code (and modified derivatives) must be made available, under the CDDL. + + + + + + CEA CNRS Inria Free Software License Agreement, v2.1 (CECILL-2.1) + CEA CNRS Inria Logiciel Libre License, version 2.1 (CECILL-2.1) + CECILL_2_1 + CECILL_2_1 + 2013-06-21 + CECILL_2_1 + CECILL_2_1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + CECILL-2.1 + The source of the start-use date: https://en.wikipedia.org/wiki/CeCILL + CECILL-2.1 is a moderate copyleft licence initiated in France by CEA, CNRS and Inria and approved by the Open Source Initiative. It has a working value in English/French. It is widely compatible, since only the specific files source code must stay covered, and not the other files or components of a solution. It is therefore designed for components or libraries. Governed by French law. + + + + + + Clarin Academic End-User Licence (ACA) 1.0 + Clarin akadeemiline lõppkasutaja litsents (ACA) 1.0 + CLARIN_ACA_1_0 + CLARIN_ACA_1_0 + 2014-12-12 + CLARIN_ACA_1_0 + CLARIN_ACA_1_0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + CLARIN-EULA-ACA-v1.0 + The copyright holder grants the end-user a free, non-exclusive and perpetual (for the duration of the copyright) right to use and make copies of the resource for educational, teaching or research purposes as such, as modified, or as part of a compilation or derived work. + + + + + + The CNRI portion of the multi-part Python License (CNRI-Python) + CNRI_PYTHON + CNRI_PYTHON + 2001-03-06 + CNRI_PYTHON + CNRI_PYTHON + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + CNRI-Python + The source of the start-use date: https://en.wikipedia.org/wiki/Python_Software_Foundation + CNRI-Python is a permissive free software licence approved by the Open Source Initiative. + + + + + + European Commission reuse notice + COM_REUSE + COM_REUSE + 2011-12-14 + COM_REUSE + COM_REUSE + According to the European Commission reuse notice, reuse is authorised, provided the source is acknowledged. The reuse policy of the European Commission is implemented by the Decision of 12 December 2011. The general principle of reuse can be subject to conditions which may be specified in individual copyright notices. Therefore users are advised to refer to the copyright notices of the individual websites maintained under Europa and of the individual documents. Reuse is not applicable to documents subject to intellectual property rights of third parties. + + + + + + Common Public Attribution License Version 1.0 (CPAL-1.0) + CPAL_1_0 + CPAL_1_0 + 2007-07-26 + CPAL_1_0 + CPAL_1_0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + CPAL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Common_Public_Attribution_License; https://www.socialtext.net/open/cpal + CPAL-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. Under this licence, it is possible to create a larger work by combining the program with other software code not governed by the terms of this licence, and distribute the larger work as a single product. + + + + + + Common Public License, version 1.0 (CPL-1.0) + CPL_1_0 + CPL_1_0 + 2001-05-01 + CPL_1_0 + CPL_1_0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + CPL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Common_Public_License + CPL-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. It is superseded by EPL-1.0. + + + + 2005-06-27 + + + Datenlizenz Deutschland – Namensnennung – Version 1.0 + Data licence Germany – attribution – non-commercial – Version 1.0 + DLDE_BYNC_1_0 + DLDE_BYNC_1_0 + 2012-01-01 + DLDE_BYNC_1_0 + DLDE_BYNC_1_0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + DL-DE BY-NC 1.0 + The source of the start-use date: https://wiki.openmod-initiative.org/images/6/63/Jens-opendata_govdata.de_FraunhoferFokus.pdf + Published by Germany, DL-DE BY-NC 1.0 is a data licence permitting any non-commercial use, as long as credit is given to the author for the original creation. Changes must be marked as such in the source note. The provider mus make available the data, contents and services with the diligence necessary for the discharge of its public tasks. + + + + + + Datenlizenz Deutschland – Namensnennung – Version 1.0 + Data licence Germany – attribution – Version 1.0 + DLDE_BY_1_0 + DLDE_BY_1_0 + 2013-01-31 + DLDE_BY_1_0 + DLDE_BY_1_0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + DL-DE BY 1.0 + The source of the start-use date: https://wiki.openmod-initiative.org/images/6/63/Jens-opendata_govdata.de_FraunhoferFokus.pdf + Published by Germany, DL-DE BY 1.0 is a data licence permitting any use commercially and non-commercially, as long as credit is given to the author for the original creation. Changes must be marked as such in the source note. The provider mus make available the data, contents and services with the diligence necessary for the discharge of its public tasks. + + + + + + Datenlizenz Deutschland – Namensnennung – Version 2.0 + Data licence Germany – attribution – Version 2.0 + DLDE_BY_2_0 + DLDE_BY_2_0 + 2014-07-01 + DLDE_BY_2_0 + DLDE_BY_2_0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + DL-DE BY 2.0 + The source of the start-use date: https://wiki.openmod-initiative.org/images/6/63/Jens-opendata_govdata.de_FraunhoferFokus.pdf + Published by Germany, DL-DE BY 2.0 is a data licence permitting any use commercially and non-commercially, as long as credit is given to the author for the original creation. Changes must be marked as such in the source note. + + + + + + Datenlizenz Deutschland – Zero – Version 2.0 + Data licence Germany – Zero – Version 2.0 + DLDE_ZERO_2_0 + DLDE_ZERO_2_0 + 2014-07-01 + DLDE_ZERO_2_0 + DLDE_ZERO_2_0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + DL-DE ZERO 2.0 + The source of the start-use date: https://wiki.openmod-initiative.org/images/6/63/Jens-opendata_govdata.de_FraunhoferFokus.pdf + Published by Germany, DL-DE ZERO 2.0 is a data licence permitting any use without restrictions or conditions. The data and meta-data provided may be for commercial and non-commercial use. + + + + + + Educational Community License version 1.0 (ECL-1.0) + ECL_1_0 + ECL_1_0 + 2005-03-15 + ECL_1_0 + ECL_1_0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + ECL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Sakai_(software + ECL-1.0 is a permissive free software licence approved by the Open Source Initiative. It is similar to the Apache 1.2. It is superseded by ECL-2.0. + + + + 2007-04-14 + + + Educational Community License version 2.0 (ECL-2.0) + ECL_2_0 + ECL_2_0 + 2007-04-15 + ECL_2_0 + ECL_2_0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + ECL-2.0 + The source of the start-use date: https://tldrlegal.com/license/educational-community-license,-version-2.0-(ecl-2.0)#fulltext + ECL-2.0 is a permissive free software licence approved by the Open Source Initiative. It is similar to the Apache 1.2. Nothing in the licence prohibits re-licencing of a larger work under the EUPL. + + + + + + eCos License version 2.0 + ECOS_2_0 + ECOS_2_0 + 2002-05-15 + ECOS_2_0 + ECOS_2_0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + eCos-2.0 + The source of the start-use date: http://ecos.sourceware.org/license-overview.html + Owned by the Free Software Foundation, eCos-2.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + The Eiffel Forum License, version 1 (EFL-1.0) + EFL_1_0 + EFL_1_0 + 2002-07-01 + EFL_1_0 + EFL_1_0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + EFL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Eiffel_Forum_License + EFL-1.0 is a BSD-style, permissive free software licence approved by the Open Source Initiative. It is superseded by 2.0. + + + + 2008-01-01 + + + Eiffel Forum License, version 2 + EFL_2 + EFL_2 + 2008-01-02 + EFL_2 + EFL_2 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + EFL-2.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Eiffel_Forum_License + EFL-2.0 is a BSD-style, permissive free software licence approved by the Open Source Initiative. + + + + + + Entessa Public License Version 1.0 (Entessa) + ENTESSA + ENTESSA + 2003-07-01 + ENTESSA + ENTESSA + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + Entessa + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/entessa-1.0/ + Entessa 1.0 is a BSD-style, permissive free software licence approved by the Open Source Initiative. It imposes copyright acknowledgements that are compatible with the EUPL. + + + + + + Eclipse Public License 1.0 (EPL-1.0) + EPL_1_0 + EPL_1_0 + 2005-06-28 + EPL_1_0 + EPL_1_0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + EPL-1.0 + The source of the start-use date: https://spdx.org/licenses/EPL-1.0.html + EPL 1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. Made and mainly used by the Eclipse Foundation, it is similar to GPL but does not submit linking of the covered code to conditions or ”viral” extension of licence coverage to the other linked software. It is superseded by EPL 2.0. + + + + 2017-08-23 + + + Eclipse Public License version 2.0 + EPL_2_0 + EPL_2_0 + 2017-08-24 + EPL_2_0 + EPL_2_0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + EPL-2.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Eclipse_Public_License + EPL 2.0 is a copyleft-style, free software licence approved by the Open Source Initiative. Made and mainly used by the Eclipse Foundation, it is similar to GPL but does not submit linking of the covered code to conditions or ”viral” extension of licence coverage to the other linked software. + + + + + + Etalab Open Licence V 2.0 + Licence Ouverte Etalab V 2.0 + ETALAB_2_0 + ETALAB_2_0 + 2011-10-18 + ETALAB_2_0 + ETALAB_2_0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + Etalab-2.0 + The Licence Ouverte / Open Licence is a French open licence published by Etalab for open data from the State of France. The licence was designed to be compatible with Creative Commons Licences, Open Government Licence and the Open Data Commons Attribution License. + La Licence ouverte / Open Licence, aussi appelée Licence Ouverte Etalab, est une licence libre française créée par la mission Etalab afin d’encadrer l’ouverture des données de l’État français. Cette licence a été voulue comme une licence compatible avec les licences Open Government Licence du Royaume-Uni, Open Data Commons Attribution de l’Open Knowledge Foundation et Creative Commons Attribution 2.0 de Creative Commons. + + + + + + Публичен лиценз на Европейския съюз версия v.1.0 + Veřejná Licence Evropské Unie v.1.0 + Europæiske Unions Offentlige Licens v.1.0 + Open-Source-Lizenz für die Europäische Union v.1.0 + Άδεια δημόσιας χρήσης για την Ευρωπαϊκή Ένωση v.1.0 + European Union Public Licence v.1.0 + Licencia Pública de la Unión Europea v.1.0 + Euroopa Liidu tarkvara vaba kasutuse litsents v.1.0 + Euroopan unionin yleinen lisenssi v.1.0 + Licence Publique de l’Union européenne v.1.0 + Javna licencija Europske unije v. 1.0 + Európai Uniós Nyílt Forráskódú Licenc v.1.0 + Licenza Pubblica dell'Unione europea v.1.0 + Europos Sąjungos viešoji licencija V.1.0 + Eiropas Savienības sabiedriskā licence V.1.0 + Liċenzja Pubblika ta' l-Unjoni Ewropea V.1.0 + Openbare licentie van de Europese Unie V.1.0 + Licencja publiczna UE wersja 1.0 + Licença Pública da União Europeia V.1.0 + Licenţa publică a Uniunii Europene v.1.0 + Verejná licencia Európskej únie V.1.0 + Javna licenca Evropske unije V.1.0 + Licens till öppen källkod från Europeiska Unionen V.1.0 + EUPL_1_0 + EUPL_1_0 + 2007-01-09 + EUPL_1_0 + EUPL_1_0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + EUPL v.1.0 + Created as a tool for publishing any copyrighted work as open source on the initiative of the European Commission, EUPL v.1.0 is the first European Free/Open Source Software (F/OSS) licence. The final version (v.1.0) was officially approved on 9 January 2007 in three linguistic versions. By a second Decision of 9 January 2008, the European Commission validated the EUPL in all the official languages of the European Union. + + + + + + Публичен лиценз на Европейския съюз версия v.1.1 + Veřejná Licence Evropské Unie v.1.1 + Europæiske Unions Offentlige Licens v.1.1 + Open-Source-Lizenz für die Europäische Union v.1.1 + Άδεια δηµόσιας χρήσης για την Ευρωπαϊκή Ένωση V.1.1 + European Union Public Licence v. 1.1 + Licencia Pública de la Unión Europea v.1.1 + Euroopa Liidu tarkvara vaba kasutuse litsents v.1.1 + Euroopan unionin yleinen lisenssi v.1.1 + Licence publique de l'Union européenne v. 1.1 + Javna licencija Europske unije v. 1.1 + Európai Uniós Nyílt Forráskódú Licenc V.1.1 + Licenza Pubblica dell'Unione europea v. 1.1 + Europos Sąjungos viešoji licencija V.1.1 + Eiropas Savienības sabiedriskā licence V.1.1 + Liċenzja Pubblika tal-Unjoni Ewropea V.1.1 + Openbare licentie van de Europese Unie V.1.1 + Licencja publiczna Unii Europejskiej v.1.1 + Licença Pública da União Europeia V.1.1 + Licenţa publică a Uniunii Europene V.1.1 + Verejná licencia Európskej únie V.1.1 + Javna licenca Evropske unije V.1.1 + Licens till öppen källkod från Europeiska unionen v.1.1 + EUPL_1_1 + EUPL_1_1 + 2009-01-09 + EUPL_1_1 + EUPL_1_1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + EUPL v.1.1 + Created as a tool for publishing any copyrighted work as open source on the initiative of the European Commission, EUPL v.1.1 is the first European Free/Open Source Software (F/OSS) licence. The European Commission published the version 1.1 in all the official languages of the European Union by the Decision of 9 January 2009. + + + + + + Публичен лиценз на Европейския съюз версия v.1.2 + Veřejná Licence Evropské Unie v.1.2 + Europæiske Unions Offentlige Licens v.1.2 + Open-Source-Lizenz für die Europäische Union v.1.2 + Άδεια δημόσιας χρήσης για την Ευρωπαϊκή Ένωση v. 1.2 + European Union Public Licence v. 1.2 + Licencia Pública de la Unión Europea v.1.2 + Euroopa Liidu tarkvara vaba kasutuse litsents v.1.2 + Euroopan unionin yleisen lisenssi v. 1.2 + Licence publique de l'Union européenne v. 1.2 + Javna licencija Europske unije v. 1.2 + Európai Uniós Nyilvános Licenc 1.2. verzió + Licenza Pubblica dell'Unione europea v 1.2 + Europos Sąjungos viešoji licencija v. 1.2 + Eiropas Savienības sabiedriskā licence 1.2. redakcija + Liċenzja Pubblika tal-Unjoni Ewropea v. 1.2 + Openbare licentie van de Europese Unie v. 1.2 + Licencja publiczna Unii Europejskiej wersja 1.2 + Licença Pública da União Europeia v. 1.2 + Licență publică a Uniunii Europene V. 1.2 + Verejná licencia Európskej únie v. 1.2 + Javna licenca Evropske unije v. 1.2 + Licens till öppen källkod från Europeiska unionen v. 1.2 + EUPL_1_2 + EUPL_1_2 + 2017-05-19 + EUPL_1_2 + EUPL_1_2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + EUPL v1.2 + Created as a tool for publishing any copyrighted work as open source, EUPL v.1.2 is legally consistent with the copyright law of all EU countries and is especially well-suited for public administrations sharing IT solutions. It is also widely used by the private sector. The text of the EUPL version 1.2 was published on 19 May 2017. + EUPL v.1.2 a été créée par la Commission en 2007. Elle a pour but de constituer une licence libre valable dans toutes les langues de l’Union, en tenant compte de ses spécificités juridiques et des questions de compatibilité entre licences libres. Il s’agit d’une licence dite «copyleft» dont le but est de garantir la nature «open source» des dérivés des logiciels. + + + + + + EuroGeographics Open Data Licence v.2022 + EUROGEO_2022 + EUROGEO_2022 + 2013-01-01 + EUROGEO_2022 + EUROGEO_2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + EuroGeographicsODL v.2022 + free software licence approved by the EuroGeographics AISBL, letting others to reuse the work as long as credit is given to the author and new creations are licenced under the identical terms + + + + + + EU DataGrid Software License (EUDatagrid) + EU_DATAGRID + EU_DATAGRID + 2001-06-30 + EU_DATAGRID + EU_DATAGRID + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + EUDatagrid + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/eu-datagrid/ + EUDatagrid is a permissive free software licence approved by the Open Source Initiative. It is a classic 3-clause licence. Nothing in this licence restricts redistribution of larger works under the EUPL. + + + + + + Fair License (Fair) + FAIR + FAIR + 2004-01-31 + FAIR + FAIR + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + Fair + The source of the start-use date: https://en.wikipedia.org/wiki/Fair_License + Fair is a permissive free software licence approved by the Open Source Initiative. It gives complete freedom to use the given works, as long as this licence is included and a warranty is not placed. + + + + + + Frameworx License 1.0 (Frameworx-1.0) + FRAMEWORX_1_0 + FRAMEWORX_1_0 + 2003-07-01 + FRAMEWORX_1_0 + FRAMEWORX_1_0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + Frameworx-1.0 + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/frameworx-1.0/?_list_filters=q%3Dframeworx#essentials + Frameworx-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + GNU Free Documentation License + GNU_FDL + GNU_FDL + 2008-11-03 + GNU_FDL + GNU_FDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GFDL + GNU Free Documentation License is a form of copyleft intended for use on a manual, textbook or other document to assure everyone the effective freedom to copy and redistribute it, with or without modifications, either commercially or non-commercially. + GNU Free Documentation License est une forme de copyleft destinée aux manuels, aux livres scolaires et autres documents. Son objectif est de garantir à tous la possibilité effective de copier et de redistribuer librement le document avec ou sans modification, et que ce soit ou non dans un but commercial. + + + + 2008-11-04 + + + GNU Free Documentation License 1.1 + GNU_FDL_1_1 + GNU_FDL_1_1 + 2000-03-01 + GNU_FDL_1_1 + GNU_FDL_1_1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + GNU FDL 1.1 + The source of the start-use date: https://www.gnu.org/licenses/old-licenses/fdl-1.1 + GNU FDL 1.1 is a form of copyleft intended for use on a manual, textbook or other document to assure everyone the effective freedom to copy and redistribute it, with or without modifications, either commercially or non-commercially. + + + + 2007-06-28 + + + GNU Free Documentation License 1.2 + GNU_FDL_1_2 + GNU_FDL_1_2 + 2002-11-01 + GNU_FDL_1_2 + GNU_FDL_1_2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + GNU FDL 1.2 + The source of the start-use date: https://www.gnu.org/licenses/old-licenses/fdl-1.2 + GNU FDL 1.2 is a form of copyleft intended for use on a manual, textbook or other document to assure everyone the effective freedom to copy and redistribute it, with or without modifications, either commercially or non-commercially. + + + + 2007-06-28 + + + GNU Free Documentation License 1.3 + GNU_FDL_1_3 + GNU_FDL_1_3 + 2008-11-04 + GNU_FDL_1_3 + GNU_FDL_1_3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + GFDL-1.3 + GNU FDL 1.3 + The source of the start-use date: https://www.gnu.org/licenses/fdl-1.3.html + GNU FDL 1.3 is a form of copyleft intended for use on a manual, textbook or other document to assure everyone the effective freedom to copy and redistribute it, with or without modifications, either commercially or non-commercially. + + + + + + GNU General Public License version 2 + GNU üldine vaba kasutuse litsents versioon 2 + GPL_2_0 + GPL_2_0 + 1991-06-02 + GPL_2_0 + GPL_2_0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + GPL-2.0 + The source of the start-use date: https://spdx.org/licenses/GPL-2.0-only.html#licenseText + GPL-2.0 is the ”historical” free software licence. It is supported by the Free Software Foundation. Copy, modification and distribution are authorised, changes/dates must be traced in source files. Any derivative must also be made available under the GPL along with build and install instructions. Lack of compatibility is a known GPL-2.0 issue when a project combines multiple sources and stakeholders. + + + + + + GNU General Public License version 3 + GNU üldine vaba kasutuse litsents versioon 3 + GPL_3_0 + GPL_3_0 + 2007-06-29 + GPL_3_0 + GPL_3_0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + GPL-3.0 + The source of the start-use date: https://www.tatanka.com/administrative/licenses/fsf_gpl_3.0_license.html + GPL-3.0 is supported by the Free Software Foundation. Under this licence, software can be copied, distributed and modified as long as changes/dates are tracked in source files. Any derivative including (i.e. via compiler) GPL-licenced code must also be made available under the GPL-3.0 along with build and install instructions. + + + + + + Historical Permission Notice and Disclaimer (HPND) + HPND + HPND + 2002-11-29 + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + HPND + The source of the start-use date: https://en.wikipedia.org/wiki/Historical_Permission_Notice_and_Disclaimer + Deprecated by the author, HPND is a template that provides some protection for the author. The work itself is not restricted by the permissive licence. + + + + 2015-01-01 + The source of the deprecation date: https://www.fsf.org/blogs/licensing/historical-permission-notice-and-disclaimer-added-to-license-list + + + Open Licence – The Republic of Croatia + Objavljena hrvatska dozvola (licenca) + HROD + HROD + 2017-07-01 + HROD + HROD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + HR-OD + The source of the start-use date: https://www.pristupinfo.hr/objavljena-hrvatska-dozvola-licenca-za-otvorene-podatke/ + Published by the Republic of Croatia, HR-OD grants the re-user any re-use of the Information subject to the licence, including a spatially and temporally unrestricted, free-of-charge, non-exclusive and personal right to re-use the Information under this licence. + + + + + + Italian Open Data License v1.0 + IODL_1_0 + IODL_1_0 + 2010-10-01 + IODL_1_0 + IODL_1_0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + IODL 1.0 + The source of the start-use date: https://it.wikipedia.org/wiki/Italian_Open_Data_License + Published by Italy, IODL 1.0 aims at providing the Italian public sector with a licence facilitating the re-use of public sector information. Even commercial reuse of data is allowed, as long as credit is given to the author and new creations are licenced under the identical terms. All new works based on the original work will carry the same licence, so any derivatives will also allow commercial use. + + + + + + Italian Open Data License v2.0 + IODL_2_0 + IODL_2_0 + 2012-03-02 + IODL_2_0 + IODL_2_0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + IODL 2.0 + The source of the start-use date: https://it.wikipedia.org/wiki/Italian_Open_Data_License + Published by Italy, IODL 2.0 aims at providing the Italian public sector with a licence facilitating the re-use of public sector information. It allows distribution and building upon the author’s work, even commercially, as long as credit is given to the author for the original creation. + + + + + + IPA Font License (IPA) + IPA + IPA + 2014-09-30 + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + IPA + The source of the start-use date: https://www.fsf.org/blogs/licensing/ipa-font-license-added-to-license-list + The IPA licence applies only to font programs and allows for a great deal of freedom in distributing them, both commercially and non-commercially. The name of redistributed versions of the original software cannot be changed and must include a copy of the license. + + + + + + IBM Public License Version 1.0 (IPL-1.0) + IPL_1_0 + IPL_1_0 + 1999-08-31 + IPL_1_0 + IPL_1_0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + IPL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/IBM_Public_License + The IPL-1.0 is the open-source licence IBM uses for some of its software. Supposed to facilitate commercial use of said software, is very clear on the specifics of liability. It also grants explicit patent rights. + + + + + + ISA Open Metadata Licence 1.1 + ISA_OML + ISA_OML + 2011-01-01 + ISA_OML + ISA_OML + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA Open Metadata Licence 1.0 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + The ISA Open metadata licence 1.1 is a permissive open licence created by the European Commission to support the publication of technical and semantic specifications. Users are allowed to distribute, copy, adapt or modify the licenced work for any commercial and non-commercial purpose with only a limited set of conditions. + + + + 2012-04-19 + + + ISA Open Metadata Licence 1.1 + ISA_OML_1_1 + ISA_OML_1_1 + 2012-04-18 + ISA_OML_1_1 + ISA_OML_1_1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + ISA OMdL 1.1 + The ISA Open metadata licence 1.1 is a permissive open licence created by the European Commission to support the publication of technical and semantic specifications. Users are allowed to distribute, copy, adapt or modify the licenced work for any commercial and non-commercial purpose with only a limited set of conditions. + + + + + + ISC License (ISC) + ISC + ISC + 1995-06-30 + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + ISC + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/isc/?_list_filters=q%3Disc; https://en.wikipedia.org/wiki/ISC_license + ISC is a short and permissive software permissive licence (like MIT and BSD). Main obligation is to include the original copyright notice. For reducing licence proliferation, it is advised to use the MIT licence instead. + + + + + + GNU Lesser General Public License version 2.1 + LGPL_2_1 + LGPL_2_1 + 1999-02-15 + LGPL_2_1 + LGPL_2_1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + LGPL-2.1 + The source of the start-use date: https://opensource.org/licenses/LGPL-2.1 + LGPL 2.1 is supported by the Free Software Foundation for libraries. Works made by using the covered software could be distributed under any licence. Distribution of derivatives (code modifications) must be done under LGPL. Reverse engineering must be allowed. + + + + + + GNU Lesser General Public License version 3 + LGPL_3_0 + LGPL_3_0 + 2007-06-29 + LGPL_3_0 + LGPL_3_0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + LGPL-3.0 + The source of the start-use date: https://opensource.org/licenses/LGPL-3.0 + LGPL-3.0 was produced by the Free Software Foundation for libraries. Works made by using the covered software could be distributed under any licence. Distribution of derivatives (code modifications) must be done under LGPL. Reverse engineering must be allowed. + + + + + + Québec Free and Open-Source Licence – Permissive (LiLiQ-P) version 1.1 + Licence Libre du Québec – Permissive (LiLiQ-P) version 1.1 + LILIQ_P_1_1 + LILIQ_P_1_1 + 2016-01-31 + LILIQ_P_1_1 + LILIQ_P_1_1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + LiLiQ-P-1.1 + The source of the start-use date: https://forge.gouv.qc.ca/licence/ + Approved by the Open Source Initiative, LiLiQ-P-1.1 is a permissive licence produced by the State of Quebec (Canada). + + + + + + Québec Free and Open-Source Licence – Strong Reciprocity (LiLiQ-R+) version 1.1 + Licence Libre du Québec – Réciprocité forte (LiLiQ-R+) version 1.1 + LILIQ_RPLUS_1_1 + LILIQ_RPLUS_1_1 + 2016-01-31 + LILIQ_RPLUS_1_1 + LILIQ_RPLUS_1_1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + LiLiQ-Rplus-1.1 + The source of the start-use date: https://forge.gouv.qc.ca/licence/ + LiLiQ-Rplus-1.1 is a reciprocate (copyleft) licence produced by the State of Quebec (Canada). Other reciprocal licences GPL-2.0-or-later and the EUPL are expressly listed as compatible, meaning that the covered code can be reused in other projects covered by these licences. It is approved by the Open Source Initiative. + + + + + + Québec Free and Open-Source Licence – Reciprocity (LiLiQ-R) version 1.1 + Licence Libre du Québec – Réciprocité (LiLiQ-R) version 1.1 + LILIQ_R_1_1 + LILIQ_R_1_1 + 2016-01-31 + LILIQ_R_1_1 + LILIQ_R_1_1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + LiLiQ-R-1.1 + The source of the start-use date: https://forge.gouv.qc.ca/licence/ + LiLiQ-R 1.1 is a moderately reciprocate licence produced by the State of Quebec (Canada). A list of liences with similar level of reciprocity is declared compatible, including GPL, EUPL, MPL, LGPL etc., meaning that the covered code can be reused in other projects covered by these licences. It is approved by the Open Source Initiative. + + + + + + Lucent Public License, Plan 9, version 1.0 (LPL-1.0) + LPL_1_0 + LPL_1_0 + 2003-01-01 + LPL_1_0 + LPL_1_0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + LPL-1.0 + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/lucent-pl-1.0/?_list_filters=q%3Dlucent + LPL-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. It is superseded by LPL-1.02. + + + + 2003-06-30 + + + Lucent Public License Version 1.02 (LPL-1.02) + LPL_1_02 + LPL_1_02 + 2003-07-01 + LPL_1_02 + LPL_1_02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + LPL-1.02 + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/lucent-pl-1.02/?_list_filters=q%3Dlucent + LPL-1.02 is a copyleft-style, free software licence approved by the Open Source Initiative. Similar to the Common Public License, this licence makes liability rules very clear. + + + + + + LaTeX Project Public License v1.3c (LPPL-1.3c) + LPPL_1_3C + LPPL_1_3C + 2008-05-04 + LPPL_1_3C + LPPL_1_3C + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + LPPL-1.3c + The source of the start-use date: https://en.wikipedia.org/wiki/LaTeX_Project_Public_License + LPPL-1.3c is a very specific, non-copyleft licence. It organises rights of the ”maintainer” of a work V/S other distributors who have to comply with documentation requirements and to communicate the original code (or report where it can be available). + + + + + + MirOS License (MirOS) + MIROS + MIROS + 2006-12-11 + MIROS + MIROS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + MirOS + The source of the start-use date: https://en.wikipedia.org/wiki/MirOS_Licence + MirOS is a BSD-style, permissive free software licence approved by the Open Source Initiative. + + + + + + The MIT License + MIT litsents + MIT + MIT + 1988-08-14 + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + MIT + The source of the start-use date: https://opensource.com/article/19/4/history-mit-license; https://webcache.googleusercontent.com/search?q=cache:GAPzrOqxGoMJ:https://libexpat.github.io/doc/news/+&cd=3&hl=en&ct=clnk&gl=lu + Approved by the Open Source Initiative, MIT is the most recommended permissive licence: short and very popular. Everything is allowed as long as the original copyright and licence notice is included in any copy of the software/source. + + + + + + Motosoto Open Source License – Version 0.9.1 (Motosoto) + MOTOSOTO + MOTOSOTO + 1995-01-01 + MOTOSOTO + MOTOSOTO + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + Motosoto + The source of the start-use date: http://www.worldlii.org/int/other/PubRL/1995/8.html + Motosoto is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + The Mozilla Public License (MPL), version 1.0 (MPL-1.0) + MPL_1_0 + MPL_1_0 + 1998-01-01 + MPL_1_0 + MPL_1_0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + MPL-1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Mozilla_Public_License + MPL-1.0 is a weak copyleft licence, characterised as a middle ground between permissive free software licences and the GNU General Public License that seeks to balance the concerns of proprietary and open source developers. As such, it allows re-licencing. It is approved by the Open Source Initiative. It has been superseded by v2.0. + + + + 2012-01-02 + + + Mozilla Public License (MPL), version 1.1 (MPL-1.1) + MPL_1_1 + MPL_1_1 + 1999-01-01 + MPL_1_1 + MPL_1_1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + MPL-1.1 + The source of the start-use date: https://en.wikisource.org/wiki/Mozilla_Public_License + MPL-1.1 is a weak copyleft licence, characterised as a middle ground between permissive free software licences and the GNU General Public License that seeks to balance the concerns of proprietary and open source developers. As such, it allows re-licencing. It is approved by the Open Source Initiative. It has been superseded by v2.0. + + + + 2012-01-02 + + + Mozilla Public License (MPL), version 2.0 (MPL-2.0) + MPL_2_0 + MPL_2_0 + 2012-01-03 + MPL_2_0 + MPL_2_0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + MPL-2.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Mozilla_Public_License#cite_note-17 + MPL-2.0 is a weak copyleft licence, characterised as a middle ground between permissive free software licences and the GNU General Public License that seeks to balance the concerns of proprietary and open source developers. As such, it allows re-licencing. It is approved by the Open Source Initiative. + + + + + + Microsoft Public License (MS-PL) + MS_PL + MS_PL + 2007-10-12 + MS_PL + MS_PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + MS-PL + The source of the start-use date: https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Public_License_(Ms-PL) + MS-PL is a BSD-style, permissive free software licence approved by the Open Source Initiative. + + + + + + Microsoft Reciprocal License (MS-RL) + MS_RL + MS_RL + 2007-08-10 + MS_RL + MS_RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + MS-RL + The source of the start-use date: https://de.wikipedia.org/wiki/Microsoft_Reciprocal_License + MS-RL is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + Multics License (Multics) + MULTICS + MULTICS + 2006-07-01 + MULTICS + MULTICS + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + Multics + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/multics/?_list_filters=q%3Dmultics + Multics is a permissive free software licence approved by the Open Source Initiative. The legal text of this licence is only a paragraph long and both protects the authors' trademarks and requires users to include this licence. + + + + + + NASA Open Source Agreement v1.3 (NASA-1.3) + NASA_1_3 + NASA_1_3 + 2012-01-01 + NASA_1_3 + NASA_1_3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + NASA-1.3 + The source of the start-use date: https://en.wikipedia.org/wiki/NASA_Open_Source_Agreement; http://openvsp.org/learn.shtml + Approved by the Open Source Initiative, NASA-1.3 is a licence used by NASA containing an obligation to register with the government when receiving the software and to tell a specified agency how the modifications are used. + + + + + + NAUMEN Public License (Naumen) + NAUMEN + NAUMEN + 2001-12-01 + NAUMEN + NAUMEN + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + Naumen + The source of the start-use date: https://ru.wikipedia.org/wiki/Naumen; http://licenseit.ru/wiki/index.php/Naumen_Public_License + Approved by the Open Source Initiative, Naumen is a fairly restrictive free software licence, but provides good protection for the author of the software. + + + + + + The University of Illinois/NCSA Open Source License (NCSA) + NCSA + NCSA + 2002-03-28 + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + NCSA + The source of the start-use date: https://en.wikipedia.org/wiki/University_of_Illinois/NCSA_Open_Source_License + NCSA Open Source License is a BSD-style, permissive free software licence approved by the Open Source Initiative. + + + + + + The Nethack General Public License (NGPL) + NGPL + NGPL + 1989-07-31 + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + NGPL + The source of the start-use date: https://en.wikipedia.org/wiki/NetHack + Approved by the Open Source Initiative, NGPL is a very old licence used for the game NetHack. It allows users to freely share their modifications, in exchange for several restrictions and little protection for the authors. + + + + + + Norwegian Licence for Open Government Data 1.0 + NLOD_1_0 + NLOD_1_0 + 2012-01-01 + NLOD_1_0 + NLOD_1_0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + NLOD 1.0 + The source of the start-use date: https://github.com/difi/veileder-opnedata/blob/master/build/html/en/_sources/Hvordan-aapne-opp-data/index.txt + Published by Norway, NLOD 1.0 grants the user the right to copy, use and distribute information, provided the user acknowledges the contributors and complies with the terms and conditions stipulated in this licence. + + + + + + Norwegian Licence for Open Government Data (NLOD) 2.0 + NLOD_2_0 + NLOD_2_0 + 2016-09-01 + NLOD_2_0 + NLOD_2_0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + NLOD 2.0 + Published by Norway, NLOD 2.0 grants the user the right to copy, use and distribute information, provided the user acknowledges the contributors and complies with the terms and conditions stipulated in this licence. + + + + + + Nokia Open Source License Version 1.0a (NOKIA) + NOKIA + NOKIA + 2006-01-01 + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + NOKIA + The source of the start-use date: http://www.kansai-u.ac.jp/riss/rcss/conf/confdocs/3rdRCSS_ueda.pdf; https://opensource.org/minutes20060208 + Approved by the Open Source Initiative, NOKIA is a slightly altered variant on the Mozilla Public License specified for Nokia. It requires including a notice in each source file. Disputes must be settled through a Finnish arbitration process. + + + + + + The Non-Profit Open Software License version 3.0 (NPOSL-3.0) + NPOSL_3_0 + NPOSL_3_0 + 2007-09-20 + NPOSL_3_0 + NPOSL_3_0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + NPOSL-3.0 + The source of the start-use date: https://lists.debian.org/debian-legal/2008/04/msg00055.html; https://trustee.ietf.org/licenses.html + A variant of the Open Software License 3.0, NPOSL-3.0 requires that the organisation using it is a non-profit and that no revenue is generated from sale of the software, support or services. It is approved by the Open Source Initiative. + + + + + + NTP License (NTP) + NTP + NTP + 2008-08-01 + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + NTP + The source of the start-use date: http://lists.opensource.org/pipermail/license-review_lists.opensource.org/2008-March/000099.html; https://opensource.org/node/1015 + Approved by the Open Source Initiative, NTP is a simple licence, written as a template, that provides protection for the author while giving users full rights to the software. + + + + + + The OCLC Research Public License 2.0 License (OCLC-2.0) + OCLC_2_0 + OCLC_2_0 + 2002-05-31 + OCLC_2_0 + OCLC_2_0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + OCLC-2.0 + The source of the start-use date: https://opensource.org/licenses/OCLC-2.0 + While OCLC Research now uses the Apache 2.0 licence, OCLC-2.0 is a relatively strong copyleft licence with fairly lenient restrictions and built-in protection for the author. It is approved by the Open Source Initiative. + + + + + + Open Data Commons Open Database License v1.0 + ODC_BL + ODC_BL + 2009-01-01 + ODC_BL + ODC_BL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL + ODbL is a licence agreement intended to allow users to freely share, modify, and use the database concerned while maintaining this same freedom for others. Some jurisdictions, mainly in the European Union, have specific rights that cover databases, and so this licence addresses these rights, too. This licence is also an agreement in contract for users of this database to act in certain ways in return for accessing the database concerned. + ODbL est un contrat de licence ayant pour objet d’autoriser les utilisateurs à partager, modifier et utiliser librement la base de données initiale tout en maintenant ces mêmes libertés pour les autres. De nombreuses bases de données étant protégées par des droits d’auteur, les présentes règles ont pour objet de céder ces droits. Certains États, principalement au sein de l’Union européenne, prévoient des droits spécifiques régissant les bases de données, de ce fait ces droits sont également concernés par cette licence. Cette licence est aussi un contrat en ce que les utilisateurs de la base de données initiale s’engagent à respecter certaines obligations en contrepartie de l’autorisation d’accéder à ladite base de données initiale. + + + + + + Open Data Commons Attribution License v1.0 + ODC_BY + ODC_BY + 2010-10-24 + ODC_BY + ODC_BY + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 + ODC-By-1.0 is a licence agreement intended to allow users to freely share, modify, and use the database concerned subject only to the attribution requirements set out in Section 4 (notices, no sublicensing). Databases can contain a wide variety of types of content, and so this licence only governs the rights over the database, and not the contents of the database individually. + + + + + + Open Data Commons Public Domain Dedication and License 1.0 + ODC_PDDL + ODC_PDDL + 2008-03-01 + ODC_PDDL + ODC_PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + PDDL + https://www.geeklawblog.com/2010/10/creative-commons-releases-public-domain.html + ODC PDDL is a document intended to allow the user to freely share, modify, and use this work for any purpose and without any restrictions. It is intended for use on databases or their contents (“data”), either together or individually. + + + + + + SIL Open Font License (OFL-1.1) + OFL_1_1 + OFL_1_1 + 2007-02-26 + OFL_1_1 + OFL_1_1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + OFL-1.1 + The source of the start-use date: https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL + The SIL Open Font License 1.1 is one of the major open font licences, which allows embedding of the font in commercially sold products. It is a free and open source licence approved by the Open Source Initiative. + + + + + + Open Government Licence 1.0 + OGL_1_0 + OGL_1_0 + 2010-09-01 + OGL_1_0 + OGL_1_0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + OGL 1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Open_Government_Licence + Developed and maintained by the National Archives, OGL-1.0 is a copyright licence for Crown Copyright works published by the UK government consisting of a simple set of terms and conditions facilitating the re-use of a wide range of public sector information free of charge. The OGL terms are compatible with the latest versions of the Creative Commons Attribution Licence and the Open Data Commons Attribution Licence. The OGL is a perpetual licence so any past and continuing use of information authorised under v1.0 or v2.0 may continue. + + + + + + Open Government Licence 2.0 + OGL_2_0 + OGL_2_0 + 2013-06-28 + OGL_2_0 + OGL_2_0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + OGL 2.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Open_Government_Licence + Developed and maintained by the National Archives, OGL-2.0 is a copyright licence for Crown Copyright works published by the UK government consisting of a simple set of terms and conditions facilitating the re-use of a wide range of public sector information free of charge. The OGL terms are compatible with the latest versions of the Creative Commons Attribution Licence and the Open Data Commons Attribution Licence. The OGL is a perpetual licence so any past and continuing use of information authorised under v1.0 or v2.0 may continue. + + + + + + Open Government Licence 3.0 + OGL_3_0 + OGL_3_0 + 2014-10-31 + OGL_3_0 + OGL_3_0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + OGL 3.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Open_Government_Licence + Developed and maintained by the National Archives, OGL-3.0 is a copyright licence for Crown Copyright works published by the UK government consisting of a simple set of terms and conditions facilitating the re-use of a wide range of public sector information free of charge. The OGL terms are compatible with the latest versions of the Creative Commons Attribution Licence and the Open Data Commons Attribution Licence. The OGL is a perpetual licence so any past and continuing use of information authorised under v1.0 or v2.0 may continue. + + + + + + Non-Commercial Government Licence + OGL_NC + OGL_NC + 2013-06-28 + OGL_NC + OGL_NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + OGL-NC + The source of the start-use date: https://en.wikipedia.org/wiki/Open_Government_Licence + Developed and maintained by the National Archives, the Non-Commercial Government Licence (OGL-NC) may be used by public sector bodies that have a Delegation of Authority to licence Crown copyright material non-commercially. It may also be used by public sector bodies holding non-Crown copyright information in accordance with the PSI Regulations 2015. + + + + + + Non-Commercial Government Licence 1.0 + OGL_ROU_1_0 + OGL_ROU_1_0 + 2010-09-01 + OGL_ROU_1_0 + OGL_ROU_1_0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + OGL-ROU 1.0 + The source of the start-use date: https://en.wikipedia.org/wiki/Open_Government_Licence + Having a working value in Romanian, the Non-Commercial Government Licence 1.0 (OGL-ROU 1.0) consists of a simple set of terms and conditions facilitating the re-use of a wide range of public sector information free of charge. The OGL terms are compatible with the latest versions of the Creative Commons Attribution Licence and the Open Data Commons Attribution Licence. + + + + + + The Open Group Test Suite License (OGTSL) + OGTSL + OGTSL + 2007-04-01 + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + OGTSL + The source of the start-use date: https://appaji.livejournal.com/53826.html + OGTSL was meant to facilitate software testing, without placing severe restrictions on use of the software except in terms of including original versions of the software. It is approved by the Open Source Initiative. + + + + + + OSET Public License version 2.1 + OPL_2_1 + OPL_2_1 + 2015-08-31 + OPL_2_1 + OPL_2_1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + OPL-2.1 + The source of the start-use date: https://libraries.io/search?licenses=OSET-PL-2.1&order=desc&page=4&sort=latest_release_published_at + OSET Public License 2.1 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + Неокончателни данни + Předběžné údaje + Midlertidige data + Vorläufige Daten + Προσωρινά δεδομένα + Provisional data + Datos provisionales + Esialgsed andmed + Alustavat tiedot + Données provisoires + Sonraí sealadacha + Privremeni podaci + Ideiglenes adatok + Dati provvisori + Laikinieji duomenys + Provizoriski dati + Dejta provviżorja + Voorlopige gegevens + Dane tymczasowe + Dados provisórios + Date provizorii + Predbežné údaje + Začasni podatki + Tillfälliga uppgifter + OP_DATPRO + OP_DATPRO + 1952-07-23 + OP_DATPRO + OP_DATPRO + + + + + Open Software License, version 1.0 (OSL-1.0) + OSL_1_0 + OSL_1_0 + 2002-08-31 + OSL_1_0 + OSL_1_0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + OSL-1.0 + The source of the start-use date: https://old.computerra.ru/2002/466/200189/ + Open Software License 1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + 2005-11-30 + + + The Open Software License, version 2.1 (OSL-2.1) + OSL_2_1 + OSL_2_1 + 2003-10-31 + OSL_2_1 + OSL_2_1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + OSL-2.1 + The source of the start-use date: https://lists.debian.org/debian-legal/2003/11/msg00181.html + Open Software License 2.1 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + 2005-11-30 + + + Open Software License, version 3.0 (OSL-3.0) + OSL_3_0 + OSL_3_0 + 2005-12-01 + OSL_3_0 + OSL_3_0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + OSL-3.0 + The source of the start-use date: http://rosenlaw.com/OSL3.0-explained.htm; https://lwn.net/Articles/147660/ + Open Software License 3.0 is a copyleft-style, free software licence approved by the Open Source Initiative. Similar to the AGPL, the OSL requires the user to disclose the source code when communicating software. + + + + + + The PHP License 3.0 (PHP-3.0) + PHP_3_0 + PHP_3_0 + 2002-07-21 + PHP_3_0 + PHP_3_0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + PHP-3.0 + The source of the start-use date: http://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-March/004716.html + The PHP License 3.0 is a permissive free software licence approved by the Open Source Initiative. It has minimal, clear requirements, and explicitly bars the use of the PHP name to endorse the software. + + + + + + The PostgreSQL Licence (PostgreSQL) + POSTGRE_SQL + POSTGRE_SQL + 1996-07-08 + POSTGRE_SQL + POSTGRE_SQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + PostgreSQL + The source of the start-use date: https://en.wikipedia.org/wiki/PostgreSQL + PostgreSQL is a BSD-style permissive free software licence approved by the Open Source Initiative. + + + + + + INSPIRE End User Licence + PSEUL + PSEUL + 2013-08-01 + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + PSEUL + The source of the start-use date: https://data.blog.gov.uk/2013/08/23/new-psma-end-user-licences-for-inspire/ + The INSPIRE End User Licence (PSEUL) aims to enable the sharing of environmental spatial information amongst public sector organisations. Licenced data under PSEUL is limited to data created (derived) by the user using Ordnance Survey (OS) licenced data. + + + + + + Python License (Python-2.0) + PYTHON_2_0 + PYTHON_2_0 + 2000-09-01 + PYTHON_2_0 + PYTHON_2_0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + Python-2.0 + The source of the start-use date: https://www.slideshare.net/kanchilug/python-quick-guide1; https://en.wikipedia.org/wiki/Python_License + Python 2.0 is a permissive free software licence approved by the Open Source Initiative. + + + + + + The Q Public License Version (QPL-1.0) + QPL_1_0 + QPL_1_0 + 1999-03-04 + QPL_1_0 + QPL_1_0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + QPL-1.0 + The source of the start-use date: http://blog.hermit4.info/2013/01/qt-news-title.html + The Q Public License Version 1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. It was designed by the Norwegian firm Trolltech to govern the distribution of its software, the Qt Toolkit. + + + + + + Reciprocal Public License, version 1.1 + RPL_1_1 + RPL_1_1 + 2002-11-01 + RPL_1_1 + RPL_1_1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + RPL-1.1 + The source of the start-use date: https://cc.com.au/files/acquisition_of_open-source_software_-_text.pdf + The Reciprocal Public License, version 1.1 is a copyleft-style, free software licence approved by the Open Source Initiative. It contains rules on redistribution. + + + + 2007-07-14 + + + Reciprocal Public License 1.5 (RPL-1.5) + RPL_1_5 + RPL_1_5 + 2007-07-15 + RPL_1_5 + RPL_1_5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + RPL-1.5 + The source of the start-use date: https://spdx.org/licenses/RPL-1.5.html + The Reciprocal Public License 1.5 is a copyleft-style, free software licence approved by the Open Source Initiative with detailed liability protection and numerous requirements, created to close a loophole in the GPL which let users sell modified software without ”fairly” distributing it. + + + + + + RealNetworks Public Source License Version 1.0 (RPSL-1.0) + RPSL_1_0 + RPSL_1_0 + 2002-10-28 + RPSL_1_0 + RPSL_1_0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + RPSL-1.0 + The source of the start-use date: https://spdx.org/licenses/RPSL-1.0.html + Published by RealNetworks, RPSL-1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + The Ricoh Source Code Public License (RSCPL) + RSCPL + RSCPL + 1995-12-01 + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + RSCPL + The source of the start-use date: http://ploug22.free.fr/doc/oss-market-structure-urope.pdf; https://spdx.org/licenses/RSCPL.html + The Ricoh Source Code Public License (RSCPL) is a copyleft-style, free software licence approved by the Open Source Initiative with much built-in protection for the author. + + + + + + Simple Public License (SimPL-2.0) + SIMPL_2_0 + SIMPL_2_0 + 2007-11-01 + SIMPL_2_0 + SIMPL_2_0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + SimPL-2.0 + The source of the start-use date: https://opensource.org/node/228 + Simple Public License 2.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + The Sleepycat License (Sleepycat) + SLEEPYCAT + SLEEPYCAT + 1990-01-01 + SLEEPYCAT + SLEEPYCAT + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + Sleepycat + The source of the start-use date: https://en.wikipedia.org/wiki/Talk%3ASleepycat_License + The Sleepycat License is a BSD plus-style, permissive free software licence approved by the Open Source Initiative. + + + + + + Sun Public License Version 1.0 (SPL-1.0) + SPL_1_0 + SPL_1_0 + 1995-01-01 + SPL_1_0 + SPL_1_0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + SPL-1.0 + The source of the start-use date: https://enterprise.dejacode.com/licenses/public/spl-1.0/?_list_filters=q%3DSun%2BPublic%2BLicense + Sun Public License 1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + Upstream Compatibility License v1.0 + UCL_1_0 + UCL_1_0 + 2017-02-01 + UCL_1_0 + UCL_1_0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + UCL-1.0 + The source of the start-use date: http://lists.opensource.org/pipermail/license-review_lists.opensource.org/2017-February/002983.html + Upstream Compatibility License v1.0 is a copyleft-style, free software licence approved by the Open Source Initiative. + + + + + + The Universal Permissive License (UPL), Version 1.0 + UPL_1_0 + UPL_1_0 + 2015-02-01 + UPL_1_0 + UPL_1_0 + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + UPL + The source of the start-use date: https://oss.oracle.com/licenses/upl/ + The Universal Permissive License 1.0 is an attribution+patent-style, permissive free software licence issued by Oracle and approved by the Open Source Initiative. + + + + + + The Vovida Software License v. 1.0 (VSL-1.0) + VSL_1_0 + VSL_1_0 + 2000-01-01 + VSL_1_0 + VSL_1_0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + VSL-1.0 + The source of the start-use date: https://spdx.org/licenses/VSL-1.0.html#licenseText + The Vovida Software License v. 1.0 is a BSD plus-style, permissive free software licence approved by the Open Source Initiative. + + + + + + The W3C Software Notice and License (W3C) + W3C + W3C + 2002-12-31 + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + W3C + The source of the start-use date: https://en.wikipedia.org/wiki/W3C_Software_Notice_and_License + The W3C Software Notice and License is a permissive free software licence used by software released by the World Wide Web Consortium. It is a permissive licence, compatible with the GNU General Public License and approved by the Open Source Initiative. + + + + + + The Sybase Open Source Licence (Watcom-1.0) + WATCOM_1_0 + WATCOM_1_0 + 2002-05-19 + WATCOM_1_0 + WATCOM_1_0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + Watcom-1.0 + The source of the start-use date: http://howlingmad.gmxhome.de/watcom_new_en.html + Watcom-1.0 is a proprietary+patent-style, strong copyleft software licence approved by the Open Source Initiative. + + + + + + The wxWindows Library Licence (wxWindows) + WXWINDOWS + WXWINDOWS + 1998-07-01 + WXWINDOWS + WXWINDOWS + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + wxWindows + The source of the start-use date: https://opensource.org/licenses/WXwindows + Approved by the Open Source Initiative, wxWindows is a copyleft-style, free software licence created for wxWidgets. + + + + 2007-06-28 + + + The X.Net, Inc. License (Xnet) + XNET + XNET + 2000-07-01 + XNET + XNET + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + Xnet + The source of the start-use date: https://opensource.org/licenses/Xnet + Xnet is a MIT-style, permissive free software licence approved by the Open Source Initiative. + + + + 2020-01-01 + + + The zlib/libpng License (Zlib) + ZLIB + ZLIB + 1995-05-01 + ZLIB + ZLIB + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + Zlib + The source of the start-use date: https://en.wikipedia.org/wiki/Zlib + Zlib is designed to be a free, general-purpose, legally unencumbered – not covered by any patents – lossless data-compression library for use on virtually any computer hardware and operating system. It is approved by the Open Source Initiative. + + + + + + The Zope Public License Version 2.0 (ZPL-2.0) + ZPL_2_0 + ZPL_2_0 + 2002-02-01 + ZPL_2_0 + ZPL_2_0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + ZPL-2.0 + The source of the start-use date: Open Source Software: From Open Science to New Marketing Model, p. 116 + The Zope Public License Version 2.0 is a free software licence approved by the Open Source Initiative, used primarily for the Zope application server software. It is similar to the well-known BSD license, however the ZPL also adds clauses prohibiting trademark use and requiring documentation of all changes. + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/eu-dcat-ap-hvd-core.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/eu-dcat-ap-hvd-core.xsl new file mode 100644 index 00000000000..d526fc6ac14 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/eu-dcat-ap-hvd-core.xsl @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/view.xsl new file mode 100644 index 00000000000..0cf08e810f6 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/view.xsl @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/vocabularies/eu-applicable-legislation.rdf b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/vocabularies/eu-applicable-legislation.rdf new file mode 100644 index 00000000000..7502cb45ba2 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/vocabularies/eu-applicable-legislation.rdf @@ -0,0 +1,572 @@ + + + + EU applicable legislations + Législations applicables dans l'UE + Législation sectorielle qui prescrit la création ou la gestion de la ressource. + Liste non exhaustive. + + + + 2023/138 + 2023/138 + Commission Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a + list of specific high-value datasets and the arrangements for their publication and re-use + + Règlement d’exécution (UE) 2023/138 de la Commission du 21 décembre 2022 + établissant une liste d’ensembles de données de forte valeur spécifiques et les modalités de leur + publication et de leur réutilisation + + + + 1306/2013 + 1306/2013 + Regulation (EU) No 1306/2013 of the European Parliament and of the Council of 17 + December 2013 on the financing, management and monitoring of the common agricultural policy and repealing + Council Regulations (EEC) No 352/78, (EC) No 165/94, (EC) No 2799/98, (EC) No 814/2000, (EC) No 1290/2005 + and (EC) No 485/2008 + + Règlement (UE) n ° 1306/2013 du Parlement européen et du Conseil du 17 décembre + 2013 relatif au financement, à la gestion et au suivi de la politique agricole commune et abrogeant les + règlements (CEE) n ° 352/78, (CE) n ° 165/94, (CE) n ° 2799/98, (CE) n ° 814/2000, (CE) n ° 1200/2005 et n ° + 485/2008 du Conseil + + + + 2008/50/EC + 2008/50/EC + Directive 2008/50/EC of the European Parliament and of the Council of 21 May 2008 + on ambient air quality and cleaner air for Europe + + Directive 2008/50/CE du Parlement européen et du Conseil du 21 mai 2008 concernant + la qualité de l’air ambiant et un air pur pour l’Europe + + + + 2004/107/EC + 2004/107/EC + Directive 2004/107/EC of the European Parliament and of the Council of 15 December + 2004 relating to arsenic, cadmium, mercury, nickel and polycyclic aromatic hydrocarbons in ambient air + + Directive 2004/107/CE du Parlement européen et du Conseil du 15 décembre 2004 + concernant l'arsenic, le cadmium, le mercure, le nickel et les hydrocarbures aromatiques polycycliques dans + l'air ambiant + + + + 2002/49/EC + 2002/49/EC + Directive 2002/49/EC of the European Parliament and of the Council of 25 June 2002 + relating to the assessment and management of environmental noise - Declaration by the Commission in the + Conciliation Committee on the Directive relating to the assessment and management of environmental noise + + Directive 2002/49/CE du Parlement européen et du Conseil du 25 juin 2002 relative + à l'évaluation et à la gestion du bruit dans l'environnement - Déclaration de la Commission au sein du + comité de conciliation concernant la directive relative à l'évaluation et à la gestion du bruit ambiant + + + + 2015/359 + 2015/359 + Commission Regulation (EU) 2015/359 of 4 March 2015 implementing Regulation (EC) + No 1338/2008 of the European Parliament and of the Council as regards statistics on healthcare expenditure + and financing + + Règlement (UE) 2015/359 de la Commission du 4 mars 2015 portant mise en œuvre du + règlement (CE) n ° 1338/2008 du Parlement européen et du Conseil en ce qui concerne les statistiques sur les + dépenses de santé et leur financement + + + + 1999/31/EC + 1999/31/EC + Council Directive 1999/31/EC of 26 April 1999 on the landfill of waste + + Directive 1999/31/CE du Conseil du 26 avril 1999 concernant la mise en décharge + des déchets + + + + 2150/2002 + 2150/2002 + Regulation (EC) No 2150/2002 of the European Parliament and of the Council of 25 + November 2002 on waste statistics + + Règlement (CE) n° 2150/2002 du Parlement européen et du Conseil du 25 novembre + 2002 relatif aux statistiques sur les déchets + + + + 2006/21/EC + 2006/21/EC + Directive 2006/21/EC of the European Parliament and of the Council of 15 March + 2006 on the management of waste from extractive industries and amending Directive 2004/35/EC - Statement by + the European Parliament, the Council and the Commission + + Directive 2006/21/CE du Parlement européen et du Conseil du 15 mars 2006 + concernant la gestion des déchets de l'industrie extractive et modifiant la directive 2004/35/CE - + Déclaration du Parlement européen, du Conseil et de la Commission + + + + 86/278/EEC + 86/278/EEC + Council Directive 86/278/EEC of 12 June 1986 on the protection of the environment, + and in particular of the soil, when sewage sludge is used in agriculture + + Directive 86/278/CEE du Conseil du 12 juin 1986 relative à la protection de + l'environnement et notamment des sols, lors de l'utilisation des boues d'épuration en agriculture + + + + 2019/2180 + 2019/2180 + Commission Implementing Regulation (EU) 2019/2180 of 16 December 2019 specifying + the detailed arrangements and content for the quality reports pursuant to Regulation (EU) 2019/1700 of the + European Parliament and of the Council + + Règlement d’Exécution (UE) 2019/2180 de la Commission du 16 décembre 2019 + spécifiant les modalités et le contenu détaillés pour les rapports de qualité au titre du règlement (UE) + 2019/1700 du Parlement européen et du Conseil + + + + 2019/1021 + 2019/1021 + Regulation (EU) 2019/1021 of the European Parliament and of the Council of 20 June + 2019 on persistent organic pollutants (recast) + + Règlement (UE) 2019/1021 du Parlement européen et du Conseil du 20 juin 2019 + concernant les polluants organiques persistants (refonte) + + + + 2014/70/EU + 2014/70/EU + 2014/70/EU: Commission Recommendation of 22 January 2014 on minimum principles for + the exploration and production of hydrocarbons (such as shale gas) using high-volume hydraulic fracturing + + 2014/70/UE: Recommandation de la Commission du 22 janvier 2014 relative aux + principes minimaux applicables à l’exploration et à la production d’hydrocarbures (tels que le gaz de + schiste) par fracturation hydraulique à grands volumes + + + + 2006/7/EC + 2006/7/EC + Directive 2006/7/EC of the European Parliament and of the Council of 15 February + 2006 concerning the management of bathing water quality and repealing Directive 76/160/EEC + + Directive 2006/7/CE du Parlement européen et du Conseil du 15 février 2006 + concernant la gestion de la qualité des eaux de baignade et abrogeant la directive 76/160/CEE + + + + 2000/60/EC + 2000/60/EC + 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 + + 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 + + + + 2019/2181 + 2019/2181 + Commission Implementing Regulation (EU) 2019/2181 of 16 December 2019 specifying + technical characteristics as regards items common to several datasets pursuant to Regulation (EU) 2019/1700 + of the European Parliament and of the Council + + Règlement d’exécution (UE) 2019/2181 de la Commission du 16 décembre 2019 + spécifiant les caractéristiques techniques en ce qui concerne les éléments communs à plusieurs ensembles de + données au titre du règlement (UE) 2019/1700 du Parlement européen et du Conseil + + + + 2006/118/EC + 2006/118/EC + Directive 2006/118/EC of the European Parliament and of the Council of 12 December + 2006 on the protection of groundwater against pollution and deterioration + + Directive 2006/118/CE du Parlement européen et du Conseil du 12 décembre 2006 sur + la protection des eaux souterraines contre la pollution et la détérioration + + + + 2008/105/EC + 2008/105/EC + Directive 2008/105/EC of the European Parliament and of the Council of 16 December + 2008 on environmental quality standards in the field of water policy, amending and subsequently repealing + Council Directives 82/176/EEC, 83/513/EEC, 84/156/EEC, 84/491/EEC, 86/280/EEC and amending Directive + 2000/60/EC of the European Parliament and of the Council + + Directive 2008/105/CE du Parlement européen et du Conseil du 16 décembre 2008 + établissant des normes de qualité environnementale dans le domaine de l'eau, modifiant et abrogeant les + directives du Conseil 82/176/CEE, 83/513/CEE, 84/156/CEE, 84/491/CEE, 86/280/CEE et modifiant la directive + 2000/60/CE + + + + 2007/60/EC + 2007/60/EC + Directive 2007/60/EC of the European Parliament and of the Council of 23 October + 2007 on the assessment and management of flood risks + + Directive 2007/60/CE du Parlement Européen et du Conseil du 23 octobre 2007 + relative à l’évaluation et à la gestion des risques d’inondation + + + + 2019/2242 + 2019/2242 + Commission Implementing Regulation (EU) 2019/2242 of 16 December 2019 specifying + the technical items of data sets, establishing the technical formats and specifying the detailed + arrangements and content of the quality reports on the organisation of a sample survey in the income and + living conditions domain pursuant to Regulation (EU) 2019/1700 of the European Parliament and of the Council + + Règlement d’Exécution (UE) 2019/2242 de la Commission du 16 décembre 2019 + spécifiant les éléments techniques des ensembles de données, établissant les formats techniques et + spécifiant les modalités et le contenu détaillés des rapports de qualité concernant l’organisation d’une + enquête par sondage dans le domaine du revenu et des conditions de vie au titre du règlement (UE) 2019/1700 + du Parlement européen et du Conseil + + + + 2008/56/EC + 2008/56/EC + Directive 2008/56/EC of the European Parliament and of the Council of 17 June 2008 + establishing a framework for community action in the field of marine environmental policy (Marine Strategy + Framework Directive) + + Directive 2008/56/CE du Parlement Européen et du Conseil du 17 juin 2008 + établissant un cadre d’action communautaire dans le domaine de la politique pour le milieu marin + (directive-cadre stratégie pour le milieu marin) + + + + 2016/792 + 2016/792 + Regulation (EU) 2016/792 of the European Parliament and of the Council of 11 May + 2016 on harmonised indices of consumer prices and the house price index, and repealing Council Regulation + (EC) No 2494/95 + + Règlement (UE) 2016/792 du Parlement européen et du Conseil du 11 mai 2016 relatif + aux indices des prix à la consommation harmonisés et à l'indice des prix des logements, et abrogeant le + règlement (CE) n° 2494/95 du Conseil + + + + 1260/2013 + 1260/2013 + Regulation (EU) No 1260/2013 of the European Parliament and of the Council of 20 + November 2013 on European demographic statistics + + Règlement (UE) n ° 1260/2013 du Parlement européen et du Conseil du 20 novembre + 2013 relatif aux statistiques démographiques européennes + + + + 2005/44/EC + 2005/44/EC + Directive 2005/44/EC of the European Parliament and of the Council of 7 September + 2005 on harmonised river information services (RIS) on inland waterways in the Community + + Directive 2005/44/CE du Parlement européen et du Conseil du 7 septembre 2005 + relative à des services d'information fluviale (SIF) harmonisés sur les voies navigables communautaires + + + + 2020/1197 + 2020/1197 + Commission Implementing Regulation (EU) 2020/1197 of 30 July 2020 laying down + technical specifications and arrangements pursuant to Regulation (EU) 2019/2152 of the European Parliament + and of the Council on European business statistics repealing 10 legal acts in the field of business + statistics + + Règlement d’exécution (UE) 2020/1197 de la Commission du 30 juillet 2020 + établissant des spécifications techniques et des modalités d’exécution en application du règlement (UE) + 2019/2152 du Parlement européen et du Conseil relatif aux statistiques européennes d’entreprises, abrogeant + dix actes juridiques dans le domaine des statistiques d’entreprises + + + + 2019/2152 + 2019/2152 + Regulation (EU) 2019/2152 of the European Parliament and of the Council of 27 + November 2019 on European business statistics, repealing 10 legal acts in the field of business statistics + + Règlement (UE) 2019/2152 du Parlement européen et du Conseil du 27 novembre 2019 + relatif aux statistiques européennes d’entreprises, abrogeant dix actes juridiques dans le domaine des + statistiques d’entreprises + + + + 2013/34/EU + 2013/34/EU + Directive 2013/34/EU of the European Parliament and of the Council of 26 June 2013 + on the annual financial statements, consolidated financial statements and related reports of certain types + of undertakings, amending Directive 2006/43/EC of the European Parliament and of the Council and repealing + Council Directives 78/660/EEC and 83/349/EEC + + Directive 2013/34/UE du Parlement européen et du Conseil du 26 juin 2013 relative + aux états financiers annuels, aux états financiers consolidés et aux rapports y afférents de certaines + formes d'entreprises, modifiant la directive 2006/43/CE du Parlement européen et du Conseil et abrogeant les + directives 78/660/CEE et 83/349/CEE du Conseil + + + + 691/2011 + 691/2011 + Regulation (EU) No 691/2011 of the European Parliament and of the Council of 6 + July 2011 on European environmental economic accounts + + Règlement (UE) n ° 691/2011 du Parlement européen et du Conseil du 6 juillet 2011 + relatif aux comptes économiques européens de l’environnement + + + + 2019/1700 + 2019/1700 + Regulation (EU) 2019/1700 of the European Parliament and of the Council of 10 + October 2019 establishing a common framework for European statistics relating to persons and households, + based on data at individual level collected from samples, amending Regulations (EC) No 808/2004, (EC) No + 452/2008 and (EC) No 1338/2008 of the European Parliament and of the Council, and repealing Regulation (EC) + No 1177/2003 of the European Parliament and of the Council and Council Regulation (EC) No 577/98 + + Règlement (UE) 2019/1700 du Parlement européen et du Conseil du 10 octobre 2019 + établissant un cadre commun pour des statistiques européennes relatives aux personnes et aux ménages fondées + sur des données au niveau individuel collectées à partir d’échantillons, modifiant les règlements (CE) no + 808/2004, (CE) no 452/2008 et (CE) no 1338/2008 du Parlement européen et du Conseil, et abrogeant le + règlement (CE) no 1177/2003 du Parlement européen et du Conseil et le règlement (CE) no 577/98 du Conseil + + + + 549/2013 + 549/2013 + Regulation (EU) No 549/2013 of the European Parliament and of the Council of 21 + May 2013 on the European system of national and regional accounts in the European Union + + Règlement (UE) n ° 549/2013 du Parlement européen et du Conseil du 21 mai 2013 + relatif au système européen des comptes nationaux et régionaux dans l'Union européenne + + + + 2007/2/EC + 2007/2/EC + Directive 2007/2/EC of the European Parliament and of the Council of 14 March 2007 + establishing an Infrastructure for Spatial Information in the European Community (INSPIRE) + + Directive 2007/2/CE du Parlement européen et du Conseil du 14 mars 2007 + établissant une infrastructure d'information géographique dans la Communauté européenne (INSPIRE) + + + + 2018/1999 + 2018/1999 + Regulation (EU) 2018/1999 of the European Parliament and of the Council of 11 + December 2018 on the Governance of the Energy Union and Climate Action, amending Regulations (EC) No + 663/2009 and (EC) No 715/2009 of the European Parliament and of the Council, Directives 94/22/EC, 98/70/EC, + 2009/31/EC, 2009/73/EC, 2010/31/EU, 2012/27/EU and 2013/30/EU of the European Parliament and of the Council, + Council Directives 2009/119/EC and (EU) 2015/652 and repealing Regulation (EU) No 525/2013 of the European + Parliament and of the Council + + Règlement (UE) 2018/1999 du Parlement européen et du Conseil du 11 décembre 2018 + sur la gouvernance de l'union de l'énergie et de l'action pour le climat, modifiant les règlements (CE) n° + 663/2009 et (CE) n° 715/2009 du Parlement européen et du Conseil, les directives 94/22/CE, 98/70/CE, + 2009/31/CE, 2009/73/CE, 2010/31/UE, 2012/27/UE et 2013/30/UE du Parlement européen et du Conseil, les + directives 2009/119/CE et (UE) 2015/652 du Conseil et abrogeant le règlement (UE) n° 525/2013 du Parlement + européen et du Conseil + + + + 1005/2009 + 1005/2009 + Regulation (EC) No 1005/2009 of the European Parliament and of the Council of 16 + September 2009 on substances that deplete the ozone layer (recast) + + Règlement (CE) n o 1005/2009 du Parlement européen et du Conseil du 16 septembre + 2009 relatif à des substances qui appauvrissent la couche d’ozone (refonte) + + + + 479/2009 + 479/2009 + Council Regulation (EC) No 479/2009 of 25 May 2009 on the application of the + Protocol on the excessive deficit procedure annexed to the Treaty establishing the European Community + (Codified version) + + Règlement (CE) n o 479/2009 du Conseil du 25 mai 2009 relatif à l’application du + protocole sur la procédure concernant les déficits excessifs annexé au traité instituant la Communauté + européenne (version codifiée) + + + + 166/2006 + 166/2006 + Regulation (EC) No 166/2006 of the European Parliament and of the Council of 18 + January 2006 concerning the establishment of a European Pollutant Release and Transfer Register and amending + Council Directives 91/689/EEC and 96/61/EC + + Règlement (CE) n o 166/2006 du Parlement européen et du Conseil du 18 janvier 2006 + concernant la création d'un registre européen des rejets et des transferts de polluants, et modifiant les + directives 91/689/CEE et 96/61/CE du Conseil + + + + 2004/109/EC + 2004/109/EC + Directive 2004/109/EC of the European Parliament and of the Council of 15 December + 2004 on the harmonisation of transparency requirements in relation to information about issuers whose + securities are admitted to trading on a regulated market and amending Directive 2001/34/EC + + Directive 2004/109/CE du Parlement européen et du Conseil du 15 décembre 2004 sur + l'harmonisation des obligations de transparence concernant l'information sur les émetteurs dont les valeurs + mobilières sont admises à la négociation sur un marché réglementé et modifiant la directive 2001/34/CE + + + + 2017/852 + 2017/852 + Regulation (EU) 2017/852 of the European Parliament and of the Council of 17 May + 2017 on mercury, and repealing Regulation (EC) No 1102/2008 + + Règlement (UE) 2017/852 du Parlement européen et du Conseil du 17 mai 2017 relatif + au mercure et abrogeant le règlement (CE) n° 1102/2008 + + + + 1338/2008 + 1338/2008 + Regulation (EC) No 1338/2008 of the European Parliament and of the Council of 16 + December 2008 on Community statistics on public health and health and safety at work + + Règlement (CE) n o 1338/2008 du Parlement européen et du Conseil du 16 décembre + 2008 relatif aux statistiques communautaires de la santé publique et de la santé et de la sécurité au + travail + + + + 2016/2284 + 2016/2284 + Directive (EU) 2016/2284 of the European Parliament and of the Council of 14 + December 2016 on the reduction of national emissions of certain atmospheric pollutants, amending Directive + 2003/35/EC and repealing Directive 2001/81/EC + + Directive (EU) 2016/2284 du Parlement européen et du Conseil du 14 décembre 2016 + concernant la réduction des émissions nationales de certains polluants atmosphériques, modifiant la + directive 2003/35/CE et abrogeant la directive 2001/81/CE + + + + 2009/147/EC + 2009/147/EC + Directive 2009/147/EC of the European Parliament and of the Council of 30 November + 2009 on the conservation of wild birds (Codified version) + + Directive 2009/147/CE du Parlement européen et du Conseil du 30 novembre 2009 + concernant la conservation des oiseaux sauvages (Version codifiée) + + + + 1143/2014 + 1143/2014 + Regulation (EU) No 1143/2014 of the European Parliament and of the Council of 22 + October 2014 on the prevention and management of the introduction and spread of invasive alien species + + Règlement (UE) n ° 1143/2014 du Parlement européen et du Conseil du 22 octobre + 2014 relatif à la prévention et à la gestion de l'introduction et de la propagation des espèces exotiques + envahissantes + + + + 2010/75/EU + 2010/75/EU + Directive 2010/75/EU of the European Parliament and of the Council of 24 November + 2010 on industrial emissions (integrated pollution prevention and control) (recast) + + Directive 2010/75/UE du Parlement européen et du Conseil du 24 novembre 2010 + relative aux émissions industrielles (prévention et réduction intégrées de la pollution) (refonte) + + + + 2012/18/EU + 2012/18/EU + Directive 2012/18/EU of the European Parliament and of the Council of 4 July 2012 + on the control of major-accident hazards involving dangerous substances, amending and subsequently repealing + Council Directive 96/82/EC + + Directive 2012/18/UE du Parlement européen et du Conseil du 4 juillet 2012 + concernant la maîtrise des dangers liés aux accidents majeurs impliquant des substances dangereuses, + modifiant puis abrogeant la directive 96/82/CE du Conseil + + + + 2021/2116/EU + 2021/2116/EU + Regulation (EU) 2021/2116 of the European Parliament and of the Council of 2 + December 2021 on the financing, management and monitoring of the common agricultural policy and repealing + Regulation (EU) No 1306/2013 + + Règlement (UE) 2021/2116 du Parlement européen et du Conseil du 2 décembre 2021 + relatif au financement, à la gestion et au suivi de la politique agricole commune et abrogeant le règlement + (UE) no 1306/2013 + + + + 2022/1172/EU + 2022/1172/EU + Commission Delegated Regulation (EU) 2022/1172 of 4 May 2022 supplementing + Regulation (EU) 2021/2116 of the European Parliament and of the Council with regard to the integrated + administration and control system in the common agricultural policy and the application and calculation of + administrative penalties for conditionality + + Règlement délégué (UE) 2022/1172 de la Commission du 4 mai 2022 complétant le + règlement (UE) 2021/2116 du Parlement européen et du Conseil en ce qui concerne le système intégré de + gestion et de contrôle lié à la politique agricole commune et l’application et le calcul des sanctions + administratives en matière de conditionnalité + + + + 91/271/EEC + 91/271/EEC + Council Directive 91/271/EEC of 21 May 1991 concerning urban waste-water + treatment + + Directive 91/271/CEE du Conseil, du 21 mai 1991, relative au traitement des eaux + urbaines résiduaires + + + + 91/676/EEC + 91/676/EEC + Council Directive 91/676/EEC of 12 December 1991 concerning the protection of + waters against pollution caused by nitrates from agricultural sources + + Directive 91/676/CEE du Conseil, du 12 décembre 1991, concernant la protection des + eaux contre la pollution par les nitrates à partir de sources agricoles + + + + 92/43/EEC + 92/43/EEC + Council Directive 92/43/EEC of 21 May 1992 on the conservation of natural habitats + and of wild fauna and flora + + Directive 92/43/CEE du Conseil, du 21 mai 1992, concernant la conservation des + habitats naturels ainsi que de la faune et de la flore sauvages + + + + 2020/2184 + 2020/2184 + Directive (EU) 2020/2184 of the European Parliament and of the Council of 16 + December 2020 on the quality of water intended for human consumption (recast) + + Directive (UE) 2020/2184 du Parlement européen et du Conseil du 16 décembre 2020 + relative à la qualité des eaux destinées à la consommation humaine (refonte) + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/vocabularies/high-value-dataset-category.rdf b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/vocabularies/high-value-dataset-category.rdf new file mode 100644 index 00000000000..59c469d468b --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-hvd/vocabularies/high-value-dataset-category.rdf @@ -0,0 +1,315 @@ + + + + + 2019-07-06 + + 2023-09-05 + 2023-09-27 + 2023-09-07 + + High-value dataset categories + + High-value dataset categories + 1.0 + + + + 2019-07-06 + + 2023-09-05 + 2023-09-13 + + + Метеорологични данни + Meteorologie + Meteorologiske data + Meteorologie + Μετεωρολογικές πληροφορίες + Meteorological + Meteorología + Meteoroloogiateave + Säätiedot + Météorologiques + Meitéareolaíoch + Meteorološki podatci + Meteorológiai adatok + Dati meteorologici + Meteorologiniai duomenys + Meteoroloģijas datu kopas + Data meteoroloġika + Meteorologische data + Dane meteorologiczne + Meteorológicas + Domeniul meteorologic + Meteorológia + Meteorološki podatki + Meteorologiska data + 3 + + data sets as described in Commission + Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use, Annex, Section 3 + + + + + + + 2019-07-06 + + 2023-09-05 + 2023-09-13 + + + Дружества и собственост на дружествата + + Společnosti a vlastnictví společností + + Virksomheder og virksomhedsejerskab + + Unternehmen und Eigentümerschaft von + Unternehmen + + Εταιρείες και ιδιοκτησιακό καθεστώς + εταιρειών + + Companies and company ownership + Sociedades y propiedad de sociedades + + Äriühingud ja äriühingu omandisuhted + + Yritys- ja yritysten omistustiedot + Entreprises et propriété d'entreprises + + Cuideachtaí agus úinéireacht cuideachtaí + + Trgovačka društva i vlasništvo nad trgovačkim + društvima + + Vállalati és vállalattulajdonosi adatok + + Dati relativi alle imprese e alla proprietà + delle imprese + + Bendrovės ir bendrovių valdymas nuosavybės + teise + + Uzņēmumi un uzņēmumu īpašumtiesības + + Data dwar il-kumpanniji u l-proprjetà + tal-kumpanniji + + Bedrijven en eigendom van bedrijven + + Dane dotyczące przedsiębiorstw i ich + własności + + Empresas e propriedade de empresas + Domeniul Societăți și structura de proprietate + a societăților + + Spoločnosti a vlastníctvo spoločností + + Družbe in lastništvo družb + Företag och företagsägande + 5 + + data sets as described in Commission + Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use, Annex, Section 5 + + + + + + + 2019-07-06 + + 2023-09-05 + 2023-09-13 + + + Геопространствени данни + Geoprostorové údaje + Geospatiale data + Georaum + Γεωχωρικές πληροφορίες + Geospatial + Geoespacial + Georuumilised andmed + Paikkatiedot + Géospatiales + Geospásúil + Geoprostorni podatci + Térinformatikai adatok + Dati geospaziali + Geoerdviniai duomenys + Ģeotelpisko datu kopas + Data ġeospazjali + Geospatiale data + Dane geoprzestrzenne + Geoespaciais + Domeniul geospațial + Geopriestorové údaje + Geoprostorski podatki + Geospatiala data + 1 + + data sets as described in Commission + Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use, Annex, Section 1 + + + + + + + 2019-07-06 + + 2023-09-05 + 2023-09-13 + + + Мобилност + Mobilita + Mobilitet + Mobilität + Κινητικότητα + Mobility + Movilidad + Liikuvus + Liikkuvuustiedot + Mobilité + Soghluaisteacht + Mobilnost + Mobilitási adatok + Dati relativi alla mobilità + Judumas + Mobilitāte + Data dwar il-mobbiltà + Mobiliteit + Dane dotyczące mobilności + Mobilidade + Domeniul Mobilitate + Mobilita + Mobilnost + Rörlighet + 6 + + data sets as described in Commission + Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use, Annex, Section 6 + + + + + + + 2019-07-06 + + 2023-09-05 + 2023-09-13 + + + Наблюдение на Земята и околната среда + + Země a životní prostředí + Jordobservation og miljø + Erdbeobachtung und Umwelt + Γεωσκόπηση και περιβάλλον + Earth observation and environment + Observación de la Tierra y medio ambiente + + Maa seire ja keskkond + Maan havainnointi ja ympäristö + Observation de la terre et environnement + + Faire na cruinne agus an comhshaol + Promatranje Zemlje i okoliš + Földmegfigyelési és környezeti adatok + + Dati relativi all'osservazione della terra e + all'ambiente + + Žemės stebėjimas ir aplinka + Zemes novērošana un vide + Data dwar l-osservazzjoni tad-dinja u + l-ambjent + + Aardobservatie en milieu + Dane dotyczące obserwacji Ziemi i środowiska + + Observação da Terra e do ambiente + Domeniul Observarea Pământului și mediu + + Pozorovanie Zeme a životné prostredie + + Opazovanje zemlje in okolje + Jordobservation och miljö + 2 + + data sets as described in Commission + Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use, Annex, Section 2 + + + + + + + 2019-07-06 + + 2023-09-05 + 2023-09-13 + + + Статистика + Statistika + Statistik + Statistik + Στατιστικές + Statistics + Estadística + Statistika + Tilastotiedot + Statistiques + Staidreamh + Statistički podatci + Statisztikák + Dati statistici + Statistika + Statistika + Data statistika + Statistiek + Dane statystyczne + Estatísticas + Domeniul statistic + Štatistika + Statistični podatki + Statistik + 4 + + data sets as described in Commission + Implementing Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use, Annex, Section 4 + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/mobility-dcat-ap-core-distribution.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/mobility-dcat-ap-core-distribution.xsl new file mode 100644 index 00000000000..3987315744b --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/mobility-dcat-ap-core-distribution.xsl @@ -0,0 +1,49 @@ + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/mobility-dcat-ap-core.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/mobility-dcat-ap-core.xsl new file mode 100644 index 00000000000..66509009a7d --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/mobility-dcat-ap-core.xsl @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/view.xsl new file mode 100644 index 00000000000..645740ba123 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap-mobility/view.xsl @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core-dataset.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core-dataset.xsl new file mode 100644 index 00000000000..7985121d7d5 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core-dataset.xsl @@ -0,0 +1,302 @@ + + + + + + + + + + http://inspire.ec.europa.eu/theme/af + farming + + + http://inspire.ec.europa.eu/theme/cp + http://inspire.ec.europa.eu/theme/lu + http://inspire.ec.europa.eu/theme/mr + http://inspire.ec.europa.eu/theme/pf + economy + planningCadastre + + + + http://inspire.ec.europa.eu/theme/er + http://inspire.ec.europa.eu/theme/mr + + + http://inspire.ec.europa.eu/theme/hy + http://inspire.ec.europa.eu/theme/ps + http://inspire.ec.europa.eu/theme/lc + http://inspire.ec.europa.eu/theme/am + http://inspire.ec.europa.eu/theme/ac + http://inspire.ec.europa.eu/theme/br + http://inspire.ec.europa.eu/theme/ef + http://inspire.ec.europa.eu/theme/hb + http://inspire.ec.europa.eu/theme/lu + http://inspire.ec.europa.eu/theme/mr + http://inspire.ec.europa.eu/theme/nz + http://inspire.ec.europa.eu/theme/of + http://inspire.ec.europa.eu/theme/sr + http://inspire.ec.europa.eu/theme/so + http://inspire.ec.europa.eu/theme/sd + http://inspire.ec.europa.eu/theme/mf + biota + environment + inlandWaters + oceans + climatologyMeteorologyAtmosphere + + + http://inspire.ec.europa.eu/theme/au + http://inspire.ec.europa.eu/theme/us + + + http://inspire.ec.europa.eu/theme/hh + health + + + + + + http://inspire.ec.europa.eu/theme/ad + http://inspire.ec.europa.eu/theme/rs + http://inspire.ec.europa.eu/theme/gg + http://inspire.ec.europa.eu/theme/cp + http://inspire.ec.europa.eu/theme/gn + http://inspire.ec.europa.eu/theme/el + http://inspire.ec.europa.eu/theme/ge + http://inspire.ec.europa.eu/theme/oi + http://inspire.ec.europa.eu/theme/bu + planningCadastre + boundaries + elevation + imageryBaseMapsEarthCover + + + http://inspire.ec.europa.eu/theme/pd + http://inspire.ec.europa.eu/theme/su + location + society + disaster + intelligenceMilitary + extraTerrestrial + + + http://inspire.ec.europa.eu/theme/hy + http://inspire.ec.europa.eu/theme/ge + http://inspire.ec.europa.eu/theme/oi + http://inspire.ec.europa.eu/theme/mf + geoscientificInformation + + + http://inspire.ec.europa.eu/theme/tn + structure + transportation + utilitiesCommunication + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core.xsl new file mode 100644 index 00000000000..c566e2a76d7 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core.xsl @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/view.xsl new file mode 100644 index 00000000000..360c114b099 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/view.xsl @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/vocabularies/data-theme-skos.rdf b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/vocabularies/data-theme-skos.rdf new file mode 100644 index 00000000000..78aa07048dd --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-dcat-ap/vocabularies/data-theme-skos.rdf @@ -0,0 +1,546 @@ + + + + Data theme + Data theme + 20220715-0 + Data theme + + + Селско стопанство, рибарство, горско стопанство и храни + Zemědělství, rybolov, lesnictví a výživa + Landbrug, fiskeri, skovbrug og fødevarer + Landwirtschaft, Fischerei, Forstwirtschaft und Nahrungsmittel + Γεωργία, αλιεία, δασοκομία και τρόφιμα + Agriculture, fisheries, forestry and food + Agricultura, pesca, silvicultura y alimentación + Põllumajandus, kalandus, metsandus ja toiduained + Maatalous, kalastus, metsätalous ja elintarvikkeet + Agriculture, pêche, sylviculture et alimentation + Talmhaíocht, iascach, foraoiseacht agus bia + Poljoprivreda, ribarstvo, šumarstvo i hrana + Mezőgazdaság, halászat, erdészet és élelmiszer + Agricoltura, pesca, silvicoltura e prodotti alimentari + Žemės ūkis, žuvininkystė, miškininkystė ir maistas + Lauksaimniecība, zivsaimniecība, mežsaimniecība un pārtika + Agrikoltura, sajd, forestrija u ikel + Jordbruk, fiskeri, skogbruk og mat + Landbouw, visserij, bosbouw en voeding + Jordbruk, fiskeri, skogbruk og mat + Jordbruk, fiskeri, skogbruk og mat + Rolnictwo, rybołówstwo, leśnictwo i żywność + Agricultura, pesca, silvicultura e alimentação + Agricultură, pescuit, silvicultură şi hrană + Poľnohospodárstvo, rybné hospodárstvo, lesníctvo a potravinárstvo + Kmetijstvo, ribištvo, gozdarstvo in prehrana + Jordbruk, fiske, skogsbruk och livsmedel + AGRI + AGRI + 2015-10-01 + AGRI + AGRI + This concept identifies datasets covering such domains as agriculture, fisheries, forestry or food. Agriculture is the science and art of cultivating plants and livestock. Fisheries are activities leading to harvesting of fish; may involve capture of wild fish or raising of fish through aquaculture. Forestry is the science and craft of creating, managing, using, conserving and repairing forests, woodlands and associated resources for human and environmental benefits. Food is any substance consumed to provide nutritional support for an organism. Dataset examples: Agricultural and Vegetable Catalogue; The Community Fishing Fleet Register; Pan-European Map of Forest Biomass Increment; Food composition database for nutrient intake: selected vitamins and minerals in selected European countries. + + + + + Икономика и финанси + Hospodářství a finance + Økonomi og finanser + Wirtschaft und Finanzen + Οικονομία και χρηματοοικονομικά θέματα + Economy and finance + Economía y finanzas + Majandus ja rahandus + Talous ja raha-asiat + Économie et finances + Geilleagar agus airgeadas + Ekonomija i financije + Gazdaság és pénzügy + Economia e finanze + Ekonomika ir finansai + Ekonomika un finanses + Ekonomija u finanzi + Økonomi og finans + Economie en financiën + Økonomi og finans + Økonomi og finans + Gospodarka i finanse + Economia e finanças + Economie şi finanţe + Hospodárstvo a financie + Gospodarstvo in finance + Ekonomi och finans + ECON + ECON + 2015-10-01 + ECON + ECON + This concept identifies datasets covering such domains as economy or finance. Economy is the area of the production, distribution and trade, as well as consumption of goods and services by different agents. In its broadest sense, the economy is defined as a social domain that emphasize the practices, discourses and material expressions associated with the production, use, and management of resources. Finance is the study of money and how it is used. Specifically, it deals with the questions of how an individual, company or government acquires the money needed and how they then spend or invest that money. Dataset examples: Tenders Electronic Daily (TED) - public procurement notices from the EU and beyond; General government deficit (-) and surplus (+) - quarterly data. + + + + + Образование, култура и спорт + Vzdělávání, kultura a sport + Uddannelse, kultur og sport + Bildung, Kultur und Sport + Παιδεία, πολιτιστικά θέματα και αθλητισμός + Education, culture and sport + Educación, cultura y deportes + Haridus, kultuur ja sport + Koulutus, kulttuuri ja urheilu + Éducation, culture et sport + Oideachas, cultúr agus spórt + Obrazovanje, kultura i sport + Oktatás, kultúra és sport + Istruzione, cultura e sport + Švietimas, kultūra ir sportas + Izglītība, kultūra un sports + Edukazzjoni, kultura u sport + Utdanning, kultur og sport + Onderwijs, cultuur en sport + Utdanning, kultur og sport + Utdanning, kultur og sport + Edukacja, kultura i sport + Educação, cultura e desporto + Educaţie, cultură şi sport + Vzdelávanie, kultúra a šport + Izobraževanje, kultura in šport + Utbildning, kultur och sport + EDUC + EDUC + 2015-10-01 + EDUC + EDUC + This concept identifies datasets covering such domains as education, culture or sport. Education is the process of facilitating learning, or the acquisition of knowledge, skills, values, beliefs and habits. Culture encompasses the social behavior and norms found in human societies, as well as the knowledge, beliefs, arts, laws, customs, capabilities and habits of the individuals in these groups. Sport includes all forms of competitive physical activity or games which maintain or improve physical ability and skills while providing enjoyment to participants, and in some cases, entertainment for spectators. Dataset examples: European Skills, Competences, Qualifications and Occupations (ESCO); EU Member States and international human rights obligations; Participation in any cultural or sport activities in the last 12 months by sex, age and educational attainment level. + + + + + Енергетика + Energie + Energi + Energie + Ενέργεια + Energy + Energía + Energeetika + Energia + Énergie + Fuinneamh + Energetika + Energia + Energia + Energetika + Enerģētika + Enerġija + Energi + Energie + Energi + Energi + Energia + Energia + Energie + Energetika + Energetika + Energi + ENER + ENER + 2015-10-01 + ENER + ENER + This concept identifies datasets covering the domain of energy. Energy is the quantitative property that must be transferred to an object in order to perform work on, or to heat, the object. Living organisms require energy to stay alive; human civilisation requires energy to function. Dataset examples: European gas market reports; Electricity prices by type of user. + + + + + Околна среда + Životní prostředí + Miljø + Umwelt + Περιβάλλον + Environment + Medio ambiente + Keskkond + Ympäristö + Environnement + Comhshaol + Okoliš + Környezet + Ambiente + Aplinka + Vide + Ambjent + Miljø + Milieu + Miljø + Miljø + Środowisko + Ambiente + Mediu + Životné prostredie + Okolje + Miljö + ENVI + ENVI + 2015-10-01 + ENVI + ENVI + This concept identifies datasets covering the domain of environment. The natural environment encompasses the interaction of all living species, climate, weather and natural resources that affect human survival and economic activity. Dataset examples: Attitudes of European citizens towards the environment; Pollutant emissions from transport. + + + + + Правителство и публичен сектор + Vláda a veřejný sektor + Regeringen og den offentlige sektor + Regierung und öffentlicher Sektor + Κυβέρνηση και δημόσιος τομέας + Government and public sector + Gobierno y sector público + Valitsus ja avalik sektor + Valtioneuvosto ja julkinen sektori + Gouvernement et secteur public + Rialtas agus earnáil phoiblí + Vlada i javni sektor + Kormányzat és közszféra + Governo e settore pubblico + Vyriausybė ir viešasis sektorius + Valdība un sabiedriskais sektors + Gvern u settur pubbliku + Forvaltning og offentlig sektor + Overheid en publieke sector + Forvaltning og offentleg sektor + Forvaltning og offentlig sektor + Rząd i sektor publiczny + Governo e setor público + Guvern şi sector public + Vláda a verejný sektor + Vlada in javni sektor + Regeringen och den offentliga sektorn + GOVE + GOVE + 2015-10-01 + GOVE + GOVE + This concept identifies datasets covering such domains as government or public sector. A government is the system or group of people governing an organised community, often a state. The public sector is the part of the economy composed of both public services and public enterprises. Public sector services and enterprises can be controlled by central government, regional or local authorities. Organisations that are not part of the public sector are either a part of the private sector or voluntary sector. Dataset examples: Candidate countries and potential candidates: Government statistics; Transparency Register. + + + + + Здраве + Zdraví + Sundhed + Gesundheit + Υγεία + Health + Salud + Tervis + Terveys + Santé + Sláinte + Zdravlje + Egészségügy + Salute + Sveikata + Veselība + Saħħa + Helse + Gezondheid + Helse + Helse + Zdrowie + Saúde + Sănătate + Zdravotníctvo + Zdravje + Hälsa + HEAL + HEAL + 2015-10-01 + HEAL + HEAL + This concept identifies datasets covering the domain of health. Health is a state of physical, mental and social well-being in which disease and infirmity are absent. Dataset examples: COVID-19 Coronavirus data; European Cancer Information System. + + + + + Международни въпроси + Mezinárodní otázky + Internationale spørgsmål + Internationale Themen + Διεθνή θέματα + International issues + Asuntos internacionales + Rahvusvahelised küsimused + Kansainväliset kysymykset + Questions internationales + Saincheisteanna idirnáisiúnta + Međunarodni pitanja + Nemzetközi ügyek + Tematiche internazionali + Tarptautiniai klausimai + Starptautiski jautājumi + Kwistjonijiet internazzjonali + Internasjonale temaer + Internationale vraagstukken + Internasjonale tema + Internasjonale temaer + Kwestie międzynarodowe + Questões internacionais + Chestiuni internaționale + Medzinárodné otázky + Mednarodna vprašanja + Internationella frågor + INTR + INTR + 2015-10-01 + INTR + INTR + This concept identifies datasets covering the domain of international issues. An issue – important topic or problem for debate or discussion – is international when the participants represent at least two countries. Dataset examples: Consolidated list of persons, groups and entities subject to EU financial sanctions; European Commission — DG DEVCO – development and humanitarian assistance to Afghanistan. + + + + + Правосъдие, съдебна система и обществена безопасност + Spravedlnost, právní systém a veřejná bezpečnost + Retfærdighed, retssystem og offentlig sikkerhed + Justiz, Rechtssystem und öffentliche Sicherheit + Δικαιoσύνη, νομικό σύστημα και δημόσια ασφάλεια + Justice, legal system and public safety + Justicia, sistema judicial y seguridad pública + Õigusemõistmine, õigussüsteem ja avalik turvalisus + Oikeus, oikeusjärjestelmä ja yleinen turvallisuus + Justice, système juridique et sécurité publique + Ceartas, córas dlí agus sábháilteacht an phobail + Pravosuđe, pravni sustav i javna sigurnost + Igazságügy, jogrendszer és közbiztonság + Giustizia, sistema giuridico e sicurezza pubblica + Teisingumas, teisės sistema ir visuomenės sauga + Tieslietas, tiesību sistēma un sabiedrības drošība + Ġustizzja, sistema legali u sigurtà pubblika + Justis, rettssystem og allmenn sikkerhet + Justitie, rechtsstelsel en openbare veiligheid + Justis, rettssystem og allmenn tryggleik + Justis, rettssystem og allmenn sikkerhet + Sprawiedliwość, ustrój sądów i bezpieczeństwo publiczne + Justiça, sistema judiciário e segurança pública + Justiție, sistem juridic și siguranță publică + Spravodlivosť, právny systém a verejná bezpečnosť + Pravosodje, pravni sistem in javna varnost + Rättvisa, rättsliga system och allmän säkerhet + JUST + JUST + 2015-10-01 + JUST + JUST + This concept identifies datasets covering such domains as justice, legal system or public safety. Justice includes both the attainment of that which is just and the philosophical discussion of that which is just; here it mainly means the procedural justice as found in the study and application of the law. The contemporary legal systems of the world are generally based on one of four basic systems: civil law, common law, statutory law, religious law or combinations of these. Public safety is the function of governments which ensures the protection of citizens, persons in their territory, organisations and institutions against threats to their well-being – and to the prosperity of their communities. Dataset examples: EU case-law; Information on Member States Law; European Data Protection Supervisor register of processing operations. + + + + + Неокончателни данни + Předběžné údaje + Midlertidige data + Vorläufige Daten + Προσωρινά δεδομένα + Provisional data + Datos provisionales + Esialgsed andmed + Alustavat tiedot + Données provisoires + Sonraí sealadacha + Privremeni podaci + Ideiglenes adatok + Dati provvisori + Laikinieji duomenys + Provizoriski dati + Dejta provviżorja + Voorlopige gegevens + Dane tymczasowe + Dados provisórios + Date provizorii + Predbežné údaje + Začasni podatki + Tillfälliga uppgifter + OP_DATPRO + OP_DATPRO + 1952-07-23 + OP_DATPRO + OP_DATPRO + + + + + Региони и градове + Regiony a města + Regioner og byer + Regionen und Städte + Περιφέρειες και πόλεις + Regions and cities + Regiones y ciudades + Piirkonnad ja linnad + Alueet ja kaupungit + Régions et villes + Réigiúin agus cathracha + Regije i gradovi + Régiók és városok + Regioni e città + Regionai ir miestai + Reģioni un pilsētas + Reġjuni u bliet + Regioner og byer + Regio's en steden + Regionar og byar + Regioner og byer + Regiony i miasta + Regiões e cidades + Regiuni şi orașe + Regióny a mestá + Regije in mesta + Regioner och städer + REGI + REGI + 2015-10-01 + REGI + REGI + This concept identifies datasets covering such domains as regions or cities. In the field of political geography, regions tend to be based on political units such as sovereign states; subnational units such as administrative regions, provinces, states, counties, townships, territories, etc.; and multinational groupings. A city is a large human settlement. Dataset examples: NUTS - Nomenclature of territorial units for statistics classification; UDP - GDP per capita by metro regions, 2000 - 2060. + + + + + Население и общество + Populace a společnost + Befolkning og samfund + Bevölkerung und Gesellschaft + Πληθυσμός και κοινωνία + Population and society + Población y sociedad + Elanikkond ja ühiskond + Väestö ja yhteiskunta + Population et société + Daonra agus sochaí + Stanovništvo i društvo + Népesség és társadalom + Popolazione e società + Gyventojų skaičius ir visuomenė + Iedzīvotāji un sabiedrība + Popolazzjoni u soċjetà + Befolkning og samfunn + Bevolking en samenleving + Befolkning og samfunn + Befolkning og samfunn + Ludność i społeczeństwo + População e sociedade + Populaţie şi societate + Obyvateľstvo a spoločnosť + Prebivalstvo in družba + Befolkning och samhälle + SOCI + SOCI + 2015-10-01 + SOCI + SOCI + This concept identifies datasets covering such domains as population or society. Population is a collection of humans and their entire race; it is the number of people in a city or town, region, country or world. A society is a group of individuals involved in persistent social interaction, or a large social group sharing the same spatial or social territory, typically subject to the same political authority and dominant cultural expectations. Dataset examples: Population density by NUTS 2 region; Violence against Women: An EU-wide survey. + + + + + Наука и tехнологии + Věda a technika + Videnskab og teknologi + Wissenschaft und Technologie + Επιστήμη και τεχνολογία + Science and technology + Ciencia y tecnología + Teadus ja tehnoloogia + Tiede ja teknologia + Science et technologie + Eolaíocht agus teicneolaíocht + Znanost i tehnologija + Tudomány és technológia + Scienza e tecnologia + Mokslas ir technologijos + Zinātne un tehnoloģija + Xjenza u teknoloġija + Vitenskap og teknologi + Wetenschap en technologie + Vitskap og teknologi + Vitenskap og teknologi + Nauka i technologia + Ciência e tecnologia + Ştiinţă şi tehnologie + Veda a technika + Znanost in tehnologija + Vetenskap och teknik + TECH + TECH + 2015-10-01 + TECH + TECH + This concept identifies datasets covering such domains as science or technology. Science is a systematic enterprise that builds and organises knowledge in the form of testable explanations and predictions. Modern science is typically divided into three major branches that consist of the natural sciences, which study nature in the broadest sense; the social sciences, which study individuals and societies; and the formal sciences, which study abstract concepts. Technology is the sum of techniques, skills, methods and processes used in the production of goods or services or in the accomplishment of objectives, such as scientific investigation. Dataset examples: CORDIS - EU research projects under Horizon 2020 (2014-2020); Take-up of mobile broadband (subscriptions/100 people). + + + + + Транспорт + Doprava + Transport + Verkehr + Μεταφορές + Transport + Transporte + Transport + Liikenne + Transports + Iompar + Promet + Közlekedés + Trasporti + Transportas + Transports + Trasport + Transport + Vervoer + Transport + Transport + Transport + Transportes + Transport + Doprava + Transport + Transport + TRAN + TRAN + 2015-10-01 + TRAN + TRAN + This concept identifies datasets covering the domain of transport. Transport is the movement of humans, animals and goods from one location to another. Modes of transport include air, land (rail and road), water, cable, pipeline and space. Dataset examples: Total length of motorways; Airport traffic data by reporting airport and airlines. + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap-semiceu/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap-semiceu/view.xsl new file mode 100644 index 00000000000..26e21574956 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap-semiceu/view.xsl @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-core.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-core.xsl new file mode 100644 index 00000000000..e06d4ce146f --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-core.xsl @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-variables.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-variables.xsl new file mode 100644 index 00000000000..9f4f5f138a4 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-variables.xsl @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + series + dataset + nonGeographicDataset + service + + + + author + publisher + pointOfContact + owner + custodian + distributor + originator + principalInvestigator + processor + resourceProvider + user + + + + ucs2 + ucs4 + utf7 + utf8 + utf16 + 8859part1 + 8859part2 + 8859part3 + 8859part4 + 8859part5 + 8859part6 + 8859part7 + 8859part8 + 8859part9 + 8859part10 + 8859part11 + 8859part12 + 8859part13 + 8859part14 + 8859part15 + 8859part16 + + jis + shiftJIS + eucJP + usAscii + + ebcdic + eucKR + big5 + GB2312 + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/view.xsl new file mode 100644 index 00000000000..e44aa7c054c --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/eu-geodcat-ap/view.xsl @@ -0,0 +1,22 @@ + + + + + + + + + + + + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/iso19139/view.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/iso19139/view.xsl index d388bbff7f2..95c9643d53f 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/iso19139/view.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/formatter/iso19139/view.xsl @@ -39,7 +39,7 @@ xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" xmlns:gex="http://standards.iso.org/iso/19115/-3/gex/1.0" xmlns:lan="http://standards.iso.org/iso/19115/-3/lan/1.0" - xmlns:srv="http://standards.iso.org/iso/19115/-3/srv/2.0" + xmlns:srv2="http://standards.iso.org/iso/19115/-3/srv/2.0" xmlns:mac="http://standards.iso.org/iso/19115/-3/mac/2.0" xmlns:mas="http://standards.iso.org/iso/19115/-3/mas/1.0" xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/index-fields/index.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/index-fields/index.xsl index fb86b5a225a..f73136cc9e0 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/index-fields/index.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/index-fields/index.xsl @@ -240,11 +240,31 @@ and exists(mdb:contentInfo/*/mrc:featureCatalogue)" as="xs:boolean"/> + + + + + featureCatalog + + + + map-static + + + map-interactive + + + dataset @@ -327,14 +347,16 @@ + - + - + - + @@ -432,7 +454,7 @@ { - "url": "" + "url": "" , "nameObject": @@ -712,6 +734,22 @@ + + { + "frequency": "" + + ,"nextUpdateDate": "" + + + ,"userDefinedFrequency": "" + + + ,"noteObject": + + + } + + diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/config-editor.xml b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/config-editor.xml index 9562c719939..e017378389d 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/config-editor.xml +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/config-editor.xml @@ -640,13 +640,17 @@ title: 'download', filter: 'protocol:OGC:WFS|OGC:WCS|.*DOWNLOAD.*|DB:.*|FILE:.*|OGC API Features|OGC API Coverages', editActions: ['addOnlinesrc#onlineDownload|localNetwork'] + }, { + title: 'map', + filter: 'protocol:OGC:OWS-C|PDF:MAP', + editActions: ['addOnlinesrc#onlineUseMap'] }, { title: 'mapLegend', filter: 'function:legend', editActions: ['addOnlinesrc#onlineUseLegend'] }, { title: 'links', - filter:'-protocol:OGC.*|REST|ESRI:.*|atom.*|.*DOWNLOAD.*|DB:.*|FILE:.* AND -function:legend|featureCatalogue|dataQualityReport', + filter:'-protocol:OGC.*|REST|ESRI:.*|atom.*|.*DOWNLOAD.*|DB:.*|FILE:.*|PDF:MAP AND -function:legend|featureCatalogue|dataQualityReport', editActions: ['addOnlinesrc#links'] }, { title: 'quality', @@ -743,13 +747,17 @@ title: 'download', filter: 'protocol:OGC:WFS|OGC:WCS|.*DOWNLOAD.*|DB:.*|FILE:.*|OGC API Features|OGC API Coverages', editActions: ['addOnlinesrc#onlineDownload|localNetwork'] + }, { + title: 'map', + filter: 'protocol:OGC:OWS-C|PDF:MAP', + editActions: ['addOnlinesrc#onlineUseMap'] }, { title: 'mapLegend', filter: 'function:legend', editActions: ['addOnlinesrc#onlineUseLegend'] }, { title: 'links', - filter:'-protocol:OGC.*|REST|ESRI:.*|atom.*|.*DOWNLOAD.*|DB:.*|FILE:.* AND -function:legend|featureCatalogue|dataQualityReport', + filter:'-protocol:OGC.*|REST|ESRI:.*|atom.*|.*DOWNLOAD.*|DB:.*|FILE:.*|PDF:MAP AND -function:legend|featureCatalogue|dataQualityReport', editActions: ['addOnlinesrc#links'] }, { title: 'quality', @@ -876,13 +884,17 @@ title: 'download', filter: 'protocol:OGC:WFS|OGC:WCS|.*DOWNLOAD.*|DB:.*|FILE:.*|OGC API Features|OGC API Coverages', editActions: ['addOnlinesrc#onlineDownload|localNetwork'] + }, { + title: 'map', + filter: 'protocol:OGC:OWS-C|PDF:MAP', + editActions: ['addOnlinesrc#onlineUseMap'] }, { title: 'mapLegend', filter: 'function:legend', editActions: ['addOnlinesrc#onlineUseLegend'] }, { title: 'links', - filter:'-protocol:OGC.*|REST|ESRI:.*|atom.*|.*DOWNLOAD.*|DB:.*|FILE:.* AND -function:legend|featureCatalogue|dataQualityReport', + filter:'-protocol:OGC.*|REST|ESRI:.*|atom.*|.*DOWNLOAD.*|DB:.*|FILE:.*|PDF:MAP AND -function:legend|featureCatalogue|dataQualityReport', editActions: ['addOnlinesrc#links'] }, { title: 'quality', diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/tpl-csv.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/tpl-csv.xsl index 0ab5bd3adad..d5ae0576c7d 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/tpl-csv.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/layout/tpl-csv.xsl @@ -29,12 +29,6 @@ priority="2"> - - - - - - <xsl:apply-templates mode="localised" select="mdb:identificationInfo/*/mri:citation/*/cit:title"> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/eng/labels.xml b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/eng/labels.xml index d24c02eb5c8..d4b329e3acb 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/eng/labels.xml +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/eng/labels.xml @@ -1323,6 +1323,10 @@ <label>Metadata language</label> <description iso="true">Designation of the locale language</description> </element> + <element name="lan:language" id="448.0" context="/mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:defaultLocale/lan:PT_Locale/lan:language"> + <label>Dataset language</label> + <description iso="true">ISO 3 letters code.</description> + </element> <element name="lan:language" id="448.0" context="/mdb:MD_Metadata/mdb:otherLocale/lan:PT_Locale/lan:language"> <label>Other language</label> <description iso="true">Additional metadata language</description> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/fre/labels.xml b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/fre/labels.xml index b17c9b295b2..1ac962c2539 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/fre/labels.xml +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/loc/fre/labels.xml @@ -1396,6 +1396,10 @@ <label>Langue de la fiche</label> <description iso="true">Langue principale de la fiche. Code ISO de la langue à 3 caractères.</description> </element> + <element name="lan:language" id="448.0" context="/mdb:MD_Metadata/mdb:identificationInfo/mri:MD_DataIdentification/mri:defaultLocale/lan:PT_Locale/lan:language"> + <label>Langue de la donnée</label> + <description iso="true">Langue de la donnée. Code ISO de la langue à 3 caractères.</description> + </element> <element name="lan:language" id="448.0" context="/mdb:MD_Metadata/mdb:otherLocale/lan:PT_Locale/lan:language"> <label>Autres langues</label> <description iso="true">Langue additionnelle. Code ISO de la langue à 3 caractères.</description> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-full.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-core.xsl similarity index 88% rename from schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-full.xsl rename to schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-core.xsl index 534d8dabef3..2dbaa3c0dd3 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-full.xsl +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-core.xsl @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- - ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ Copyright (C) 2001-2024 Food and Agriculture Organization of the ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) ~ and United Nations Environment Programme (UNEP) ~ @@ -22,9 +21,7 @@ ~ 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" version="1.0" -> - - <xsl:import href="dcat-brief.xsl"/> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="2.0"> + <xsl:import href="../../formatter/dcat/view.xsl"/> </xsl:stylesheet> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-brief.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat.xsl similarity index 100% rename from schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-brief.xsl rename to schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat.xsl diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap-hvd.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap-hvd.xsl new file mode 100644 index 00000000000..5fa84c146f1 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap-hvd.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-dcat-ap-hvd/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap-mobility.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap-mobility.xsl new file mode 100644 index 00000000000..b9168b58b97 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap-mobility.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-dcat-ap-mobility/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap.xsl new file mode 100644 index 00000000000..1541e24dae0 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-dcat-ap.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-dcat-ap/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-geodcat-ap-semiceu.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-geodcat-ap-semiceu.xsl new file mode 100644 index 00000000000..f6a3f2910a2 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-geodcat-ap-semiceu.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-geodcat-ap-semiceu/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-geodcat-ap.xsl b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-geodcat-ap.xsl new file mode 100644 index 00000000000..e0578159f69 --- /dev/null +++ b/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/eu-geodcat-ap.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-geodcat-ap/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19115-3.2018/src/main/resources/config-spring-geonetwork.xml b/schemas/iso19115-3.2018/src/main/resources/config-spring-geonetwork.xml index ee08ec080ca..390c62c2c68 100644 --- a/schemas/iso19115-3.2018/src/main/resources/config-spring-geonetwork.xml +++ b/schemas/iso19115-3.2018/src/main/resources/config-spring-geonetwork.xml @@ -6,6 +6,21 @@ <bean id="iso19115-3.2018SchemaPlugin" class="org.fao.geonet.schema.iso19115_3_2018.ISO19115_3_2018SchemaPlugin"> + <property name="outputSchemas"> + <util:map key-type="java.lang.String" value-type="java.lang.String"> + <entry key="csw" value="http://www.opengis.net/cat/csw/2.0.2"/> + <entry key="mdb" value="http://standards.iso.org/iso/19115/-3/mdb/2.0"/> + <entry key="gmd" value="http://www.isotc211.org/2005/gmd"/> + <entry key="dcat" value="http://www.w3.org/ns/dcat#"/> + <entry key="dcat-core" value="http://www.w3.org/ns/dcat#core"/> + <entry key="eu-dcat-ap" value="http://data.europa.eu/r5r/"/> + <!-- EU DCAT HVD does not define a particular namespace --> + <entry key="eu-dcat-ap-hvd" value="https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd/"/> + <entry key="eu-dcat-ap-mobility" value="https://w3id.org/mobilitydcat-ap"/> + <entry key="eu-geodcat-ap" value="http://data.europa.eu/930/"/> + <entry key="eu-geodcat-ap-semiceu" value="http://data.europa.eu/930/#semiceu"/> + </util:map> + </property> <property name="xpathTitle"> <util:list value-type="java.lang.String"> <value>mdb:identificationInfo/*/mri:citation/*/cit:title/gco:CharacterString</value> diff --git a/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/LanguageXslProcessTest.java b/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/LanguageXslProcessTest.java index c3f5a966ce3..b91a3eddd62 100644 --- a/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/LanguageXslProcessTest.java +++ b/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/LanguageXslProcessTest.java @@ -1,3 +1,25 @@ +/* + * Copyright (C) 2001-2024 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 + */ package org.fao.geonet.schema; import org.fao.geonet.schema.iso19115_3_2018.ISO19115_3_2018SchemaPlugin; @@ -14,9 +36,6 @@ import static org.junit.Assert.assertThat; import static org.xmlunit.matchers.EvaluateXPathMatcher.hasXPath; -/** - * Created by francois on 3/24/14. - */ public class LanguageXslProcessTest extends XslProcessTest { public LanguageXslProcessTest() { diff --git a/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/XslConversionTest.java b/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/XslConversionTest.java new file mode 100644 index 00000000000..926e6045a99 --- /dev/null +++ b/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/schema/XslConversionTest.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2001-2024 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 + */ +package org.fao.geonet.schema; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import org.fao.geonet.schema.iso19115_3_2018.ISO19115_3_2018SchemaPlugin; +import org.fao.geonet.schemas.XslProcessTest; +import org.fao.geonet.utils.Xml; +import org.jdom.Element; +import static org.junit.Assert.assertFalse; +import org.junit.Test; +import org.xmlunit.builder.DiffBuilder; +import org.xmlunit.builder.Input; +import org.xmlunit.diff.DefaultNodeMatcher; +import org.xmlunit.diff.Diff; +import org.xmlunit.diff.ElementSelectors; + +public class XslConversionTest extends XslProcessTest { + + public XslConversionTest() { + super(); + this.setNs(ISO19115_3_2018SchemaPlugin.allNamespaces); + } + + @Test + public void testOdsConversion() throws Exception { + xslFile = Paths.get(testClass.getClassLoader().getResource("convert/fromJsonOpenDataSoft.xsl").toURI()); + xmlFile = Paths.get(testClass.getClassLoader().getResource("ods.xml").toURI()); + Path jsonFile = Paths.get(testClass.getClassLoader().getResource("ods.json").toURI()); + String jsonString = Files.readString(jsonFile); + Element xmlFromJSON = Xml.getXmlFromJSON(jsonString); + xmlFromJSON.setName("record"); + xmlFromJSON.addContent(new Element("nodeUrl").setText("https://www.odwb.be")); + + Element inputElement = Xml.loadFile(xmlFile); + String expectedXml = Xml.getString(inputElement); + + Element resultElement = Xml.transform(xmlFromJSON, xslFile); + String resultOfConversion = Xml.getString(resultElement); + + Diff diff = DiffBuilder + .compare(Input.fromString(resultOfConversion)) + .withTest(Input.fromString(expectedXml)) + .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName)) + .normalizeWhitespace() + .ignoreComments() + .checkForSimilar() + .build(); + assertFalse( + String.format("Differences: %s", diff.toString()), + diff.hasDifferences()); + } +} diff --git a/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/util/XslUtil.java b/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/util/XslUtil.java index d26836d4400..8d40393b2e0 100644 --- a/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/util/XslUtil.java +++ b/schemas/iso19115-3.2018/src/test/java/org/fao/geonet/util/XslUtil.java @@ -1,7 +1,32 @@ +/* + * Copyright (C) 2001-2024 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 + */ package org.fao.geonet.util; public class XslUtil { public static String twoCharLangCode(String iso3code) { return iso3code.substring(0, 2); } + public static String threeCharLangCode(String iso2code) { + return "fre"; + } } diff --git a/schemas/iso19115-3.2018/src/test/resources/ods.json b/schemas/iso19115-3.2018/src/test/resources/ods.json new file mode 100644 index 00000000000..daaba03772d --- /dev/null +++ b/schemas/iso19115-3.2018/src/test/resources/ods.json @@ -0,0 +1,381 @@ +{ + "links": [ + { + "rel": "self", + "href": "https://www.odwb.be/api/explore/v2.0/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes" + }, + { + "rel": "datasets", + "href": "https://www.odwb.be/api/explore/v2.0/catalog/datasets" + }, + { + "rel": "records", + "href": "https://www.odwb.be/api/explore/v2.0/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/records" + }, + { + "rel": "exports", + "href": "https://www.odwb.be/api/explore/v2.0/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/exports" + }, + { + "rel": "facets", + "href": "https://www.odwb.be/api/explore/v2.0/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/facets" + }, + { + "rel": "reuses", + "href": "https://www.odwb.be/api/explore/v2.0/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/reuses" + } + ], + "dataset": { + "visibility": "domain", + "dataset_id": "collecte-de-sang-centre-de-prelevement-fixes", + "dataset_uid": "da_lac5du", + "has_records": true, + "features": [ + "calendar", + "geo", + "analyze", + "timeserie", + "custom_view" + ], + "attachments": [], + "alternative_exports": [], + "data_visible": true, + "fields": [ + { + "name": "identifiant", + "description": null, + "annotations": { + + }, + "label": "identifiant", + "type": "text" + }, + { + "name": "code_collecte", + "description": null, + "annotations": { + + }, + "label": "code_collecte", + "type": "text" + }, + { + "name": "nom", + "description": null, + "annotations": { + "sortable": true + }, + "label": "nom", + "type": "text" + }, + { + "name": "type_de_collecte", + "description": null, + "annotations": { + "facet": true + }, + "label": "type_de_collecte", + "type": "text" + }, + { + "name": "description", + "description": null, + "annotations": { + + }, + "label": "description", + "type": "text" + }, + { + "name": "url_source", + "description": null, + "annotations": { + + }, + "label": "url_source", + "type": "text" + }, + { + "name": "latitude", + "description": null, + "annotations": { + + }, + "label": "latitude", + "type": "text" + }, + { + "name": "longitude", + "description": null, + "annotations": { + + }, + "label": "longitude", + "type": "text" + }, + { + "name": "rue", + "description": null, + "annotations": { + + }, + "label": "rue", + "type": "text" + }, + { + "name": "code_postal", + "description": null, + "annotations": { + + }, + "label": "code postal", + "type": "text" + }, + { + "name": "ville", + "description": null, + "annotations": { + "facet": true + }, + "label": "ville", + "type": "text" + }, + { + "name": "date_collecte", + "description": null, + "annotations": { + "facetsort": "-count", + "timeserie_precision": "day" + }, + "label": "date_collecte", + "type": "date" + }, + { + "name": "horaire_am1", + "description": null, + "annotations": { + + }, + "label": "horaire_am1", + "type": "text" + }, + { + "name": "horaire_am2", + "description": null, + "annotations": { + + }, + "label": "horaire_am2", + "type": "text" + }, + { + "name": "horaire_pm1", + "description": null, + "annotations": { + + }, + "label": "horaire_pm1", + "type": "text" + }, + { + "name": "horaire_pm2", + "description": null, + "annotations": { + + }, + "label": "horaire_pm2", + "type": "text" + }, + { + "name": "collecte_publique", + "description": null, + "annotations": { + + }, + "label": "collecte_publique", + "type": "text" + }, + { + "name": "collecte_avec_rdv", + "description": null, + "annotations": { + + }, + "label": "collecte_avec_rdv", + "type": "text" + }, + { + "name": "statut", + "description": null, + "annotations": { + + }, + "label": "statut", + "type": "text" + }, + { + "name": "infos_complementaires", + "description": null, + "annotations": { + + }, + "label": "Infos complémentaires", + "type": "text" + }, + { + "name": "geopointarcgis", + "description": null, + "annotations": { + + }, + "label": "geopointarcgis", + "type": "geo_point_2d" + }, + { + "name": "commune", + "description": null, + "annotations": { + + }, + "label": "commune", + "type": "text" + }, + { + "name": "province", + "description": null, + "annotations": { + + }, + "label": "province", + "type": "text" + } + ], + "metas": { + "dcat": { + "created": null, + "issued": null, + "creator": null, + "contributor": null, + "contact_name": "Thomas Paulus 084 32 16 00 pendant les heures d'ouverture.", + "contact_email": "sfs.communication@croix-rouge.be", + "accrualperiodicity": "daily", + "spatial": null, + "temporal": null, + "granularity": null, + "dataquality": "lineage", + "publisher_type": [ + "NonProfitOrganisation" + ], + "conforms_to": null, + "temporal_coverage_start": "2020", + "temporal_coverage_end": "2022", + "accessRights": null + }, + "semantic": { + "rml_mapping": null, + "classes": null, + "properties": null + }, + "default": { + "title": "Tous les lieux de collecte de sang en Région wallonne et à Bruxelles", + "description": "\u003Cp\u003E\u003Cfont face=\"Open Sans, sans-serif\"\u003E\u003Cspan style=\"font-size: 12px;\"\u003EToutes les collectes de sang organisées par le Service du Sang de la Croix-Rouge, en Région wallonne et à Bruxelles, y compris les dons de plasma et de plaquettes. \u003C/span\u003E\u003C/font\u003E\u003C/p\u003E\u003Cp\u003E\u003Cfont face=\"Open Sans, sans-serif\"\u003E\u003Cspan style=\"font-size: 12px;\"\u003ERecherchez le lieu de collecte le plus proche de chez vous et prenez rendez-vous si nécessaire.\u003C/span\u003E\u003C/font\u003E\u003Cbr\u003E\u003C/p\u003E", + "theme": [ + "Qualité de Vie" + ], + "keyword": [ + "Centre de prélèvement", + "Sang", + "don de sang", + "Croix rouge", + "santé", + "Collecte" + ], + "license": "Creative Commons - CC0", + "license_url": "http://www.opendefinition.org/licenses/cc-by/", + "language": "fr", + "metadata_languages": [ + "fr" + ], + "timezone": [ + "Europe/Brussels" + ], + "modified": "2024-08-29T08:09:20.651000+00:00", + "modified_updates_on_metadata_change": true, + "modified_updates_on_data_change": true, + "data_processed": "2024-08-29T08:09:20.651000+00:00", + "metadata_processed": "2024-08-29T08:09:20.896000+00:00", + "geographic_reference": [ + "be_40_03000", + "be_40_04000" + ], + "geographic_reference_auto": false, + "territory": [ + "Région wallonne", + "Région de Bruxelles-Capitale" + ], + "geometry_types": [ + "Point" + ], + "bbox": { + "type": "Feature", + "geometry": { + "coordinates": [ + [ + [6.17299164645374, 50.8502430282533], + [3.97492295131087, 50.8502430282533], + [3.97492295131087, 49.9810485122725], + [6.17299164645374, 49.9810485122725], + [6.17299164645374, 50.8502430282533] + ] + ], + "type": "Polygon" + }, + "properties": { + + } + }, + "publisher": "Croix-rouge de Belgique - Service du sang", + "references": "https://www.donneurdesang.be", + "records_count": 2355, + "attributions": [ + "National Geographic Institute (NGI-IGN, ngi.be)" + ], + "source_domain": null, + "source_domain_title": null, + "source_domain_address": null, + "source_dataset": null, + "shared_catalog": null, + "federated": false, + "oauth_scope": null, + "parent_domain": null, + "update_frequency": null + }, + "inspire": { + "theme": null, + "type": null, + "file_identifier": null, + "hierarchy_level": null, + "hierarchy_level_name": null, + "spatial_resolution": null, + "topologic_consistency": null, + "contact_individual_name": null, + "contact_position": null, + "contact_address": null, + "contact_email": null, + "identification_purpose": null, + "extend_description": null, + "extend_bounding_box_westbound_longitude": null, + "extend_bounding_box_eastbound_longitude": null, + "extend_bounding_box_southbound_latitude": null, + "extend_bounding_box_northbound_latitude": null + }, + "custom": { + "echelon-territorial": [ + "Régional" + ], + "high-value-dataset": false, + "nom-moissonneur": null + } + } + } +} diff --git a/schemas/iso19115-3.2018/src/test/resources/ods.xml b/schemas/iso19115-3.2018/src/test/resources/ods.xml new file mode 100644 index 00000000000..5caa315c569 --- /dev/null +++ b/schemas/iso19115-3.2018/src/test/resources/ods.xml @@ -0,0 +1,854 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdb:MD_Metadata xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" xmlns:cat="http://standards.iso.org/iso/19115/-3/cat/1.0" xmlns:gfc="http://standards.iso.org/iso/19110/gfc/1.1" xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" xmlns:gex="http://standards.iso.org/iso/19115/-3/gex/1.0" xmlns:lan="http://standards.iso.org/iso/19115/-3/lan/1.0" xmlns:srv="http://standards.iso.org/iso/19115/-3/srv/2.0" xmlns:mas="http://standards.iso.org/iso/19115/-3/mas/1.0" xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" xmlns:mco="http://standards.iso.org/iso/19115/-3/mco/1.0" xmlns:mda="http://standards.iso.org/iso/19115/-3/mda/1.0" xmlns:mds="http://standards.iso.org/iso/19115/-3/mds/2.0" xmlns:mdt="http://standards.iso.org/iso/19115/-3/mdt/2.0" xmlns:mex="http://standards.iso.org/iso/19115/-3/mex/1.0" xmlns:mmi="http://standards.iso.org/iso/19115/-3/mmi/1.0" xmlns:mpc="http://standards.iso.org/iso/19115/-3/mpc/1.0" xmlns:mrc="http://standards.iso.org/iso/19115/-3/mrc/2.0" xmlns:mrd="http://standards.iso.org/iso/19115/-3/mrd/1.0" xmlns:mri="http://standards.iso.org/iso/19115/-3/mri/1.0" xmlns:mrl="http://standards.iso.org/iso/19115/-3/mrl/2.0" xmlns:mrs="http://standards.iso.org/iso/19115/-3/mrs/1.0" xmlns:msr="http://standards.iso.org/iso/19115/-3/msr/2.0" xmlns:mdq="http://standards.iso.org/iso/19157/-2/mdq/1.0" xmlns:dqm="http://standards.iso.org/iso/19157/-2/dqm/1.0" xmlns:mac="http://standards.iso.org/iso/19115/-3/mac/2.0" xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd"> + <mdb:metadataIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>collecte-de-sang-centre-de-prelevement-fixes</gco:CharacterString> + </mcc:code> + </mcc:MD_Identifier> + </mdb:metadataIdentifier> + <mdb:defaultLocale> + <lan:PT_Locale> + <lan:language> + <lan:LanguageCode codeList="codeListLocation#LanguageCode" codeListValue="fre" /> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode codeList="codeListLocation#MD_CharacterSetCode" codeListValue="utf8" /> + </lan:characterEncoding> + </lan:PT_Locale> + </mdb:defaultLocale> + <mdb:metadataScope> + <mdb:MD_MetadataScope> + <mdb:resourceScope> + <mcc:MD_ScopeCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" codeListValue="dataset" /> + </mdb:resourceScope> + </mdb:MD_MetadataScope> + </mdb:metadataScope> + <mdb:contact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode codeList="codeListLocation#CI_RoleCode" codeListValue="publisher" /> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Croix-rouge de Belgique - Service du sang</gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString /> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mdb:contact> + <mdb:dateInfo> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2024-08-29T08:09:20.651000+00:00</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode codeList="codeListLocation#CI_DateTypeCode" codeListValue="revision" /> + </cit:dateType> + </cit:CI_Date> + </mdb:dateInfo> + <mdb:dateInfo> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2024-08-29T08:09:20.651000+00:00</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode codeList="codeListLocation#CI_DateTypeCode" codeListValue="publication" /> + </cit:dateType> + </cit:CI_Date> + </mdb:dateInfo> + <mdb:metadataStandard> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>ISO 19115-3</gco:CharacterString> + </cit:title> + </cit:CI_Citation> + </mdb:metadataStandard> + <mdb:spatialRepresentationInfo> + <msr:MD_VectorSpatialRepresentation> + <msr:geometricObjects> + <msr:MD_GeometricObjects> + <msr:geometricObjectType> + <msr:MD_GeometricObjectTypeCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_GeometricObjectTypeCode" codeListValue="Point" /> + </msr:geometricObjectType> + <msr:geometricObjectCount> + <gco:Integer>2355</gco:Integer> + </msr:geometricObjectCount> + </msr:MD_GeometricObjects> + </msr:geometricObjects> + </msr:MD_VectorSpatialRepresentation> + </mdb:spatialRepresentationInfo> + <mdb:identificationInfo> + <mri:MD_DataIdentification> + <mri:citation> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>Tous les lieux de collecte de sang en Région wallonne et à Bruxelles</gco:CharacterString> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2024-08-29T08:09:20.651000+00:00</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode codeList="codeListLocation#CI_DateTypeCode" codeListValue="revision" /> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2024-08-29T08:09:20.651000+00:00</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode codeList="codeListLocation#CI_DateTypeCode" codeListValue="publication" /> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>collecte-de-sang-centre-de-prelevement-fixes</gco:CharacterString> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:citation> + <mri:abstract> + <gco:CharacterString><p><font face="Open Sans, sans-serif"><span style="font-size: 12px;">Toutes les collectes de sang organisées par le Service du Sang de la Croix-Rouge, en Région wallonne et à Bruxelles, y compris les dons de plasma et de plaquettes. </span></font></p><p><font face="Open Sans, sans-serif"><span style="font-size: 12px;">Recherchez le lieu de collecte le plus proche de chez vous et prenez rendez-vous si nécessaire.</span></font><br></p></gco:CharacterString> + </mri:abstract> + <mri:credit> + <gco:CharacterString>National Geographic Institute (NGI-IGN, ngi.be)</gco:CharacterString> + </mri:credit> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode codeList="codeListLocation#CI_RoleCode" codeListValue="originator">publisher</cit:CI_RoleCode> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Croix-rouge de Belgique - Service du sang</gco:CharacterString> + </cit:name> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode codeList="codeListLocation#CI_RoleCode" codeListValue="author" /> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Croix-rouge de Belgique - Service du sang</gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>sfs.communication@croix-rouge.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + <cit:individual> + <cit:CI_Individual> + <cit:name> + <gco:CharacterString>Thomas Paulus 084 32 16 00 pendant les heures d'ouverture.</gco:CharacterString> + </cit:name> + </cit:CI_Individual> + </cit:individual> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:topicCategory> + <mri:MD_TopicCategoryCode> + health + </mri:MD_TopicCategoryCode> + </mri:topicCategory> + <mri:extent> + <gex:EX_Extent> + <gex:geographicElement> + <gex:EX_GeographicBoundingBox> + <gex:westBoundLongitude> + <gco:Decimal>3.97492295131087</gco:Decimal> + </gex:westBoundLongitude> + <gex:eastBoundLongitude> + <gco:Decimal>6.17299164645374</gco:Decimal> + </gex:eastBoundLongitude> + <gex:southBoundLatitude> + <gco:Decimal>49.9810485122725</gco:Decimal> + </gex:southBoundLatitude> + <gex:northBoundLatitude> + <gco:Decimal>50.8502430282533</gco:Decimal> + </gex:northBoundLatitude> + </gex:EX_GeographicBoundingBox> + </gex:geographicElement> + <gex:temporalElement> + <gex:EX_TemporalExtent> + <gex:extent> + <gml:TimePeriod> + <gml:beginPosition> + 2020 + </gml:beginPosition> + <gml:endPosition> + 2022 + </gml:endPosition> + </gml:TimePeriod> + </gex:extent> + </gex:EX_TemporalExtent> + </gex:temporalElement> + <gex:geographicElement> + <gex:EX_GeographicDescription> + <gex:geographicIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>be_40_03000</gco:CharacterString> + </mcc:code> + </mcc:MD_Identifier> + </gex:geographicIdentifier> + </gex:EX_GeographicDescription> + </gex:geographicElement> + <gex:geographicElement> + <gex:EX_GeographicDescription> + <gex:geographicIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>be_40_04000</gco:CharacterString> + </mcc:code> + </mcc:MD_Identifier> + </gex:geographicIdentifier> + </gex:EX_GeographicDescription> + </gex:geographicElement> + </gex:EX_Extent> + </mri:extent> + <mri:resourceMaintenance> + <mmi:MD_MaintenanceInformation> + <mmi:maintenanceAndUpdateFrequency> + <mmi:MD_MaintenanceFrequencyCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_MaintenanceFrequencyCode" codeListValue="daily" /> + </mmi:maintenanceAndUpdateFrequency> + </mmi:MD_MaintenanceInformation> + </mri:resourceMaintenance> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>Région wallonne</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode codeList="" codeListValue="place" /> + </mri:type> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>Région de Bruxelles-Capitale</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode codeList="" codeListValue="place" /> + </mri:type> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>Qualité de Vie</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode codeListValue="theme" codeList="./resources/codeList.xml#MD_KeywordTypeCode" /> + </mri:type> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>Centre de prélèvement</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Sang</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>don de sang</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Croix rouge</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>santé</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Collecte</gco:CharacterString> + </mri:keyword> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:reference> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://www.opendefinition.org/licenses/cc-by/">Creative Commons - CC0</gcx:Anchor> + </cit:title> + <cit:onlineResource> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>http://www.opendefinition.org/licenses/cc-by/</gco:CharacterString> + </cit:linkage> + </cit:CI_OnlineResource> + </cit:onlineResource> + </cit:CI_Citation> + </mco:reference> + <mco:accessConstraints> + <mco:MD_RestrictionCode codeListValue="otherRestrictions" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode" /> + </mco:accessConstraints> + <mco:useConstraints> + <mco:MD_RestrictionCode codeListValue="otherRestrictions" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_RestrictionCode" /> + </mco:useConstraints> + <mco:otherConstraints> + <gco:CharacterString>Creative Commons - CC0</gco:CharacterString> + </mco:otherConstraints> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <mri:defaultLocale> + <lan:PT_Locale> + <lan:language> + <lan:LanguageCode codeList="codeListLocation#LanguageCode" codeListValue="fre" /> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode codeList="codeListLocation#MD_CharacterSetCode" codeListValue="utf8" /> + </lan:characterEncoding> + </lan:PT_Locale> + </mri:defaultLocale> + </mri:MD_DataIdentification> + </mdb:identificationInfo> + <mdb:contentInfo> + <mrc:MD_FeatureCatalogue xmlns:mrc="http://standards.iso.org/iso/19115/-3/mrc/1.0"> + <mrc:featureCatalogue> + <gfc:FC_FeatureCatalogue> + <gfc:producer /> + <gfc:featureType> + <gfc:FC_FeatureType> + <gfc:typeName>Tous les lieux de collecte de sang en Région wallonne et à Bruxelles</gfc:typeName> + <gfc:isAbstract> + <gco:Boolean>false</gco:Boolean> + </gfc:isAbstract> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>identifiant</gfc:memberName> + <gfc:definition> + <gco:CharacterString>identifiant</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>code_collecte</gfc:memberName> + <gfc:definition> + <gco:CharacterString>code_collecte</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>nom</gfc:memberName> + <gfc:definition> + <gco:CharacterString>nom</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>type_de_collecte</gfc:memberName> + <gfc:definition> + <gco:CharacterString>type_de_collecte</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>description</gfc:memberName> + <gfc:definition> + <gco:CharacterString>description</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>url_source</gfc:memberName> + <gfc:definition> + <gco:CharacterString>url_source</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>latitude</gfc:memberName> + <gfc:definition> + <gco:CharacterString>latitude</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>longitude</gfc:memberName> + <gfc:definition> + <gco:CharacterString>longitude</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>rue</gfc:memberName> + <gfc:definition> + <gco:CharacterString>rue</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>code_postal</gfc:memberName> + <gfc:definition> + <gco:CharacterString>code postal</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>ville</gfc:memberName> + <gfc:definition> + <gco:CharacterString>ville</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>date_collecte</gfc:memberName> + <gfc:definition> + <gco:CharacterString>date_collecte</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>date</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>horaire_am1</gfc:memberName> + <gfc:definition> + <gco:CharacterString>horaire_am1</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>horaire_am2</gfc:memberName> + <gfc:definition> + <gco:CharacterString>horaire_am2</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>horaire_pm1</gfc:memberName> + <gfc:definition> + <gco:CharacterString>horaire_pm1</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>horaire_pm2</gfc:memberName> + <gfc:definition> + <gco:CharacterString>horaire_pm2</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>collecte_publique</gfc:memberName> + <gfc:definition> + <gco:CharacterString>collecte_publique</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>collecte_avec_rdv</gfc:memberName> + <gfc:definition> + <gco:CharacterString>collecte_avec_rdv</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>statut</gfc:memberName> + <gfc:definition> + <gco:CharacterString>statut</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>infos_complementaires</gfc:memberName> + <gfc:definition> + <gco:CharacterString>Infos complémentaires</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>geopointarcgis</gfc:memberName> + <gfc:definition> + <gco:CharacterString>geopointarcgis</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>geo_point_2d</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>commune</gfc:memberName> + <gfc:definition> + <gco:CharacterString>commune</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:carrierOfCharacteristics> + <gfc:FC_FeatureAttribute> + <gfc:memberName>province</gfc:memberName> + <gfc:definition> + <gco:CharacterString>province</gco:CharacterString> + </gfc:definition> + <gfc:cardinality>1</gfc:cardinality> + <gfc:valueType> + <gco:TypeName> + <gco:aName> + <gco:CharacterString>text</gco:CharacterString> + </gco:aName> + </gco:TypeName> + </gfc:valueType> + </gfc:FC_FeatureAttribute> + </gfc:carrierOfCharacteristics> + <gfc:featureCatalogue /> + </gfc:FC_FeatureType> + </gfc:featureType> + </gfc:FC_FeatureCatalogue> + </mrc:featureCatalogue> + </mrc:MD_FeatureCatalogue> + </mdb:contentInfo> + <mdb:distributionInfo> + <mrd:MD_Distribution> + <mrd:transferOptions> + <mrd:MD_DigitalTransferOptions> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://www.odwb.be/api/explore/v2.1/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/exports/csv?use_labels=true</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:DOWNLOAD:text/csv</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>csv</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>csv</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" codeListValue="download" /> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://www.odwb.be/api/explore/v2.1/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/exports/json?use_labels=true</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:DOWNLOAD:application/json</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>json</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>json</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" codeListValue="download" /> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://www.odwb.be/api/explore/v2.1/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/exports/geojson?use_labels=true</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:DOWNLOAD:application/vnd.geo+json</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>geojson</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>geojson</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" codeListValue="download" /> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://www.odwb.be/api/explore/v2.1/catalog/datasets/collecte-de-sang-centre-de-prelevement-fixes/exports/shp?use_labels=true</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:DOWNLOAD:x-gis/x-shapefile</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>shp</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>shp</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" codeListValue="download" /> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + </mrd:MD_DigitalTransferOptions> + </mrd:transferOptions> + <mrd:transferOptions> + <mrd:MD_DigitalTransferOptions> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://www.odwb.be/explore/dataset/collecte-de-sang-centre-de-prelevement-fixes/information/</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK:LANDING_PAGE</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Landing Page</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString /> + </cit:description> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://www.donneurdesang.be</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + </cit:CI_OnlineResource> + </mrd:onLine> + </mrd:MD_DigitalTransferOptions> + </mrd:transferOptions> + </mrd:MD_Distribution> + </mdb:distributionInfo> + <mdb:resourceLineage> + <mrl:LI_Lineage> + <mrl:statement> + <gco:CharacterString>lineage</gco:CharacterString> + </mrl:statement> + <mrl:scope> + <mcc:MD_Scope> + <mcc:level> + <mcc:MD_ScopeCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" codeListValue="dataset" /> + </mcc:level> + </mcc:MD_Scope> + </mrl:scope> + </mrl:LI_Lineage> + </mdb:resourceLineage> +</mdb:MD_Metadata> diff --git a/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/OGCWMC-OR-OWSC-to-ISO19139.xsl b/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/OGCWMC-OR-OWSC-to-ISO19139.xsl index 9d5eb8d5384..6753f9c1f82 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/OGCWMC-OR-OWSC-to-ISO19139.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/OGCWMC-OR-OWSC-to-ISO19139.xsl @@ -45,9 +45,8 @@ <!-- <fileIdentifier/> Will be set by UFO --> <gmd:language> - <gco:CharacterString> - <xsl:value-of select="$lang"/> - </gco:CharacterString> + <gmd:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" + codeListValue="{$lang}"/> <!-- English is default. Not available in Web Map Context or OWS. Selected by user from GUI --> </gmd:language> @@ -75,45 +74,7 @@ <!-- Assign a specific user with the info provided by the webservice --> <xsl:if test="$currentuser_name != ''"> <gmd:contact> - <gmd:CI_ResponsibleParty> - <gmd:individualName> - <gco:CharacterString> - <xsl:value-of select="$currentuser_name"/> - </gco:CharacterString> - </gmd:individualName> - <gmd:organisationName> - <gco:CharacterString> - <xsl:value-of select="$currentuser_org"/> - </gco:CharacterString> - </gmd:organisationName> - <gmd:contactInfo> - <gmd:CI_Contact> - <!--<gmd:phone> - <gmd:CI_Telephone> - <gmd:voice> - <gco:CharacterString> - <xsl:value-of select="$currentuser_phone" /> - </gco:CharacterString> - </gmd:voice> - </gmd:CI_Telephone> - </gmd:phone>--> - <gmd:address> - <gmd:CI_Address> - <gmd:electronicMailAddress> - <gco:CharacterString> - <xsl:value-of select="$currentuser_mail"/> - </gco:CharacterString> - </gmd:electronicMailAddress> - </gmd:CI_Address> - </gmd:address> - </gmd:CI_Contact> - </gmd:contactInfo> - <gmd:role> - <gmd:CI_RoleCode - codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_RoleCode" - codeListValue="author"/> - </gmd:role> - </gmd:CI_ResponsibleParty> + <xsl:call-template name="build-current-user"/> </gmd:contact> </xsl:if> @@ -318,4 +279,45 @@ <xsl:copy-of select="saxon:parse($reprojected)"/> </xsl:template> + <xsl:template name="build-current-user"> + <gmd:CI_ResponsibleParty> + <gmd:individualName> + <gco:CharacterString> + <xsl:value-of select="$currentuser_name"/> + </gco:CharacterString> + </gmd:individualName> + <gmd:organisationName> + <gco:CharacterString> + <xsl:value-of select="$currentuser_org"/> + </gco:CharacterString> + </gmd:organisationName> + <gmd:contactInfo> + <gmd:CI_Contact> + <!--<gmd:phone> + <gmd:CI_Telephone> + <gmd:voice> + <gco:CharacterString> + <xsl:value-of select="$currentuser_phone" /> + </gco:CharacterString> + </gmd:voice> + </gmd:CI_Telephone> + </gmd:phone>--> + <gmd:address> + <gmd:CI_Address> + <gmd:electronicMailAddress> + <gco:CharacterString> + <xsl:value-of select="$currentuser_mail"/> + </gco:CharacterString> + </gmd:electronicMailAddress> + </gmd:CI_Address> + </gmd:address> + </gmd:CI_Contact> + </gmd:contactInfo> + <gmd:role> + <gmd:CI_RoleCode + codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_RoleCode" + codeListValue="author"/> + </gmd:role> + </gmd:CI_ResponsibleParty> + </xsl:template> </xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/identification.xsl b/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/identification.xsl index 49a8f59750c..0e07348d910 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/identification.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/convert/OGCWMCtoISO19139/identification.xsl @@ -22,7 +22,6 @@ ows-context:General/ows:Title"/> </gco:CharacterString> </gmd:title> - <!-- date is mandatory --> <gmd:date> <gmd:CI_Date> <gmd:date> @@ -70,50 +69,10 @@ <xsl:if test="$currentuser_name != ''"> <gmd:pointOfContact> - <gmd:CI_ResponsibleParty> - <gmd:individualName> - <gco:CharacterString> - <xsl:value-of select="$currentuser_name"/> - </gco:CharacterString> - </gmd:individualName> - <gmd:organisationName> - <gco:CharacterString> - <xsl:value-of select="$currentuser_org"/> - </gco:CharacterString> - </gmd:organisationName> - <gmd:contactInfo> - <gmd:CI_Contact> - <!--<gmd:phone> - <gmd:CI_Telephone> - <gmd:voice> - <gco:CharacterString> - <xsl:value-of select="$currentuser_phone" /> - </gco:CharacterString> - </gmd:voice> - </gmd:CI_Telephone> - </gmd:phone>--> - <gmd:address> - <gmd:CI_Address> - <gmd:electronicMailAddress> - <gco:CharacterString> - <xsl:value-of select="$currentuser_mail"/> - </gco:CharacterString> - </gmd:electronicMailAddress> - </gmd:CI_Address> - </gmd:address> - </gmd:CI_Contact> - </gmd:contactInfo> - <gmd:role> - <gmd:CI_RoleCode - codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_RoleCode" - codeListValue="author"/> - </gmd:role> - </gmd:CI_ResponsibleParty> + <xsl:call-template name="build-current-user"/> </gmd:pointOfContact> </xsl:if> - <!-- TODO: add graphic overview --> - <xsl:for-each select="wmc:General/wmc:KeywordList| wmc11:General/wmc11:KeywordList| ows-context:General/ows:Keywords"> @@ -128,13 +87,11 @@ <gmd:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="{$lang}"/> </gmd:language> - <gmd:topicCategory> <gmd:MD_TopicCategoryCode> <xsl:value-of select="$topic"/> </gmd:MD_TopicCategoryCode> </gmd:topicCategory> - </xsl:template> @@ -151,7 +108,5 @@ <gmd:MD_KeywordTypeCode codeList="./resources/codeList.xml#MD_KeywordTypeCode" codeListValue="theme"/> </gmd:type> - </xsl:template> - -</xsl:stylesheet> +</xsl:stylesheet> \ No newline at end of file diff --git a/schemas/iso19139/src/main/plugin/iso19139/convert/thesaurus-transformation.xsl b/schemas/iso19139/src/main/plugin/iso19139/convert/thesaurus-transformation.xsl index a27b85bcb18..9e3103d71c4 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/convert/thesaurus-transformation.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/convert/thesaurus-transformation.xsl @@ -136,6 +136,10 @@ <xsl:param name="withThesaurusAnchor"/> <gmd:descriptiveKeywords> + <xsl:namespace name="gmd" select="'http://www.isotc211.org/2005/gmd'"/> + <xsl:namespace name="gco" select="'http://www.isotc211.org/2005/gco'"/> + <xsl:namespace name="gmx" select="'http://www.isotc211.org/2005/gmx'"/> + <xsl:namespace name="xlink" select="'http://www.w3.org/1999/xlink'"/> <xsl:choose> <xsl:when test="$withXlink"> <xsl:variable name="isLocalXlink" @@ -314,22 +318,24 @@ codeListValue="{$thesauri/thesaurus[key = $currentThesaurus]/dname}"/> </gmd:type> <xsl:if test="$thesaurusInfo"> + <xsl:variable name="thesaurus" + select="$thesauri/thesaurus[key = $currentThesaurus]"/> <xsl:variable name="thesaurusInMainLanguage" - select="$thesauri/thesaurus[key = $currentThesaurus] + select="$thesaurus /multilingualTitles/multilingualTitle[ lang = util:twoCharLangCode($mainLanguage, '')]/title"/> <xsl:variable name="thesaurusTitle" select="if ($thesaurusInMainLanguage != '') then $thesaurusInMainLanguage - else $thesauri/thesaurus[key = $currentThesaurus]/title"/> + else $thesaurus/title"/> <gmd:thesaurusName> <gmd:CI_Citation> <gmd:title> <xsl:choose> <xsl:when test="$withTitleAnchor = true()"> - <gmx:Anchor xlink:href="{$thesauri/thesaurus[key = $currentThesaurus]/defaultNamespace}"> + <gmx:Anchor xlink:href="{$thesaurus/defaultNamespace}"> <xsl:value-of select="$thesaurusTitle"/> </gmx:Anchor> </xsl:when> @@ -341,95 +347,31 @@ </xsl:choose> </gmd:title> - <xsl:variable name="thesaurusDate" - select="normalize-space($thesauri/thesaurus[key = $currentThesaurus]/date)"/> - <xsl:variable name="thesaurusCreatedDate" - select="normalize-space($thesauri/thesaurus[key = $currentThesaurus]/createdDate)"/> - <xsl:variable name="thesaurusIssuedDate" - select="normalize-space($thesauri/thesaurus[key = $currentThesaurus]/issuedDate)"/> - <xsl:variable name="thesaurusModifiedDate" - select="normalize-space($thesauri/thesaurus[key = $currentThesaurus]/modifiedDate)"/> - <!-- Publication Date--> - <xsl:choose> - <xsl:when test="$thesaurusIssuedDate != ''"> - <gmd:date> - <gmd:CI_Date> - <gmd:date> - <xsl:choose> - <xsl:when test="contains($thesaurusIssuedDate, 'T')"> - <gco:DateTime> - <xsl:value-of select="$thesaurusIssuedDate"/> - </gco:DateTime> - </xsl:when> - <xsl:otherwise> - <gco:Date> - <xsl:value-of select="$thesaurusIssuedDate"/> - </gco:Date> - </xsl:otherwise> - </xsl:choose> - </gmd:date> - <gmd:dateType> - <gmd:CI_DateTypeCode - codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode" - codeListValue="publication"/> - </gmd:dateType> - </gmd:CI_Date> - </gmd:date> - </xsl:when> - <xsl:otherwise> - <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/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode" - codeListValue="publication"/> - </gmd:dateType> - </gmd:CI_Date> - </gmd:date> - </xsl:otherwise> - </xsl:choose> + <xsl:variable name="thesaurusDates" as="node()*"> + <publication date="{normalize-space($thesaurus/date)}"/> + <creation date="{normalize-space($thesaurus/createdDate)}"/> + <publication date="{normalize-space($thesaurus/issuedDate)}"/> + <publication date="{normalize-space($thesaurus/modifiedDate)}"/> + </xsl:variable> - <!--Creation Date--> - <xsl:if test="$thesaurusCreatedDate != ''"> + <xsl:for-each-group select="$thesaurusDates[@date != '']" group-by="@date"> + <xsl:sort select="@date" order="descending"/> <gmd:date> <gmd:CI_Date> <gmd:date> - <xsl:choose> - <xsl:when test="contains($thesaurusCreatedDate, 'T')"> - <gco:DateTime> - <xsl:value-of select="$thesaurusCreatedDate"/> - </gco:DateTime> - </xsl:when> - <xsl:otherwise> - <gco:Date> - <xsl:value-of select="$thesaurusCreatedDate"/> - </gco:Date> - </xsl:otherwise> - </xsl:choose> + <xsl:element name="{if (contains(current-grouping-key(), 'T')) then 'gco:DateTime' else 'gco:Date'}"> + <xsl:value-of select="current-grouping-key()" /> + </xsl:element> </gmd:date> <gmd:dateType> <gmd:CI_DateTypeCode codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode" - codeListValue="creation"/> + codeListValue="{name(current-group()[1])}"/> </gmd:dateType> </gmd:CI_Date> </gmd:date> - </xsl:if> + </xsl:for-each-group> <!-- You can pull in the publisher from the Thesaurus XML. See Metadata101/iso19139.ca.HNAP diff --git a/schemas/iso19139/src/main/plugin/iso19139/extract-relations.xsl b/schemas/iso19139/src/main/plugin/iso19139/extract-relations.xsl index 10e10352ab8..7aa2b12d7a1 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/extract-relations.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/extract-relations.xsl @@ -35,7 +35,6 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:util="java:org.fao.geonet.util.XslUtil" xmlns:digestUtils="java:org.apache.commons.codec.digest.DigestUtils" - xmlns:exslt="http://exslt.org/common" xmlns:gn-fn-rel="http://geonetwork-opensource.org/xsl/functions/relations" version="2.0" exclude-result-prefixes="#all"> @@ -110,7 +109,7 @@ <xsl:value-of select="position()"/> </idx> <hash> - <xsl:value-of select="digestUtils:md5Hex(string(exslt:node-set(normalize-space(.))))"/> + <xsl:value-of select="digestUtils:md5Hex(normalize-space(.))"/> </hash> <url> <xsl:apply-templates mode="get-iso19139-localized-string" @@ -142,7 +141,7 @@ <xsl:value-of select="position()"/> </idx> <hash> - <xsl:value-of select="digestUtils:md5Hex(string(exslt:node-set(normalize-space(.))))"/> + <xsl:value-of select="digestUtils:md5Hex(normalize-space(.))"/> </hash> <title> <xsl:apply-templates mode="get-iso19139-localized-string" diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/datacite/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/datacite/view.xsl index ed2ffd074eb..f5b40a03488 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/formatter/datacite/view.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/datacite/view.xsl @@ -109,7 +109,7 @@ <xsl:template match="/"> <datacite:resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd"> + xsi:schemaLocation="http://datacite.org/schema/kernel-4 https://schema.datacite.org/meta/kernel-4.1/metadata.xsd"> <xsl:apply-templates select="$metadata" mode="toDatacite"/> </datacite:resource> @@ -312,6 +312,7 @@ <entry key="series">Dataset</entry> <entry key="service">Service</entry> <entry key="software">Software</entry> + <entry key="application">Software</entry> </xsl:variable> <xsl:template mode="toDatacite" @@ -320,7 +321,7 @@ select="."/> <xsl:variable name="type" select="concat(upper-case(substring(.,1,1)), substring(., 2))"/> - <datacite:resourceType resourceTypeGeneral="{$scopeMapping//*[@key = $key]/text()}"> + <datacite:resourceType resourceTypeGeneral="{($scopeMapping//*[@key = $key]/text(), 'Other')[1]}"> <xsl:value-of select="concat($key, '/', $type)"/> </datacite:resourceType> </xsl:template> diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/dcat/dcat-utils.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/dcat/dcat-utils.xsl new file mode 100644 index 00000000000..9aa863776e7 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/dcat/dcat-utils.xsl @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:util="java:org.fao.geonet.util.XslUtil" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:template mode="get-language" + match="gmd:MD_Metadata" + as="node()*"> + <xsl:variable name="defaultLanguage" + select="$metadata/gmd:language"/> + <xsl:for-each select="$defaultLanguage"> + <xsl:variable name="iso3code" + as="xs:string?" + select="*/@codeListValue"/> + + <language id="{../gmd:locale/*[gmd:languageCode/*/@codeListValue = $iso3code]/@id}" + iso3code="{$iso3code}" + iso2code="{util:twoCharLangCode($iso3code)}" + default=""/> + </xsl:for-each> + + <xsl:for-each select="$metadata/gmd:locale/*[not(@id = $defaultLanguage/@id)]"> + <language id="{@id}" + iso3code="{gmd:languageCode/*/@codeListValue}" + iso2code="{util:twoCharLangCode(gmd:languageCode/*/@codeListValue)}"/> + </xsl:for-each> + </xsl:template> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/dcat/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/dcat/view.xsl new file mode 100644 index 00000000000..940cd64952c --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/dcat/view.xsl @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:import href="../../../iso19115-3.2018/convert/ISO19139/fromISO19139.xsl"/> + <xsl:import href="../../../iso19115-3.2018/formatter/dcat/dcat-core.xsl"/> + <xsl:import href="../dcat/dcat-utils.xsl"/> + + <xsl:template match="/"> + <xsl:apply-templates mode="dcat" select="root[gmd:MD_Metadata]|/gmd:MD_Metadata"/> + </xsl:template> + + <xsl:template mode="dcat" match="*"> + <xsl:variable name="iso19115-3metadata"> + <xsl:for-each select="."> + <xsl:call-template name="to-iso19115-3"/> + </xsl:for-each> + </xsl:variable> + + <rdf:RDF> + <xsl:call-template name="create-namespaces"/> + <xsl:apply-templates mode="iso19115-3-to-dcat" + select="$iso19115-3metadata"/> + </rdf:RDF> + </xsl:template> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-dcat-ap-hvd/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-dcat-ap-hvd/view.xsl new file mode 100644 index 00000000000..a372d9bbf85 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-dcat-ap-hvd/view.xsl @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:import href="../../../iso19115-3.2018/convert/ISO19139/fromISO19139.xsl"/> + <xsl:import href="../../../iso19115-3.2018/formatter/eu-dcat-ap-hvd/eu-dcat-ap-hvd-core.xsl"/> + <xsl:import href="../dcat/dcat-utils.xsl"/> + + <xsl:template match="/"> + <xsl:apply-templates mode="dcat" select="root[gmd:MD_Metadata]|/gmd:MD_Metadata"/> + </xsl:template> + + <xsl:template mode="dcat" match="*"> + <xsl:variable name="iso19115-3metadata"> + <xsl:for-each select="."> + <xsl:call-template name="to-iso19115-3"/> + </xsl:for-each> + </xsl:variable> + + <rdf:RDF> + <xsl:call-template name="create-namespaces"/> + <xsl:apply-templates mode="iso19115-3-to-dcat" + select="$iso19115-3metadata"/> + </rdf:RDF> + </xsl:template> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-dcat-ap/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-dcat-ap/view.xsl new file mode 100644 index 00000000000..5bc18c30aa1 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-dcat-ap/view.xsl @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:import href="../../../iso19115-3.2018/convert/ISO19139/fromISO19139.xsl"/> + <xsl:import href="../../../iso19115-3.2018/formatter/eu-dcat-ap/eu-dcat-ap-core.xsl"/> + <xsl:import href="../dcat/dcat-utils.xsl"/> + + + <xsl:template match="/"> + <xsl:apply-templates mode="dcat" select="root[gmd:MD_Metadata]|/gmd:MD_Metadata"/> + </xsl:template> + + <xsl:template mode="dcat" match="*"> + <xsl:variable name="iso19115-3metadata"> + <xsl:for-each select="."> + <xsl:call-template name="to-iso19115-3"/> + </xsl:for-each> + </xsl:variable> + + <rdf:RDF> + <xsl:call-template name="create-namespaces"/> + <xsl:apply-templates mode="iso19115-3-to-dcat" + select="$iso19115-3metadata"/> + </rdf:RDF> + </xsl:template> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-geodcat-ap-semiceu/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-geodcat-ap-semiceu/view.xsl new file mode 100644 index 00000000000..c35678edac8 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-geodcat-ap-semiceu/view.xsl @@ -0,0 +1,4362 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + + Copyright 2015-2023 EUROPEAN UNION + Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + the European Commission - subsequent versions of the EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https://joinup.ec.europa.eu/collection/eupl + + Unless required by applicable law or agreed to in writing, software + distributed under the Licence is distributed on an "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the Licence for the specific language governing permissions and + limitations under the Licence. + + Contributors: GeoDCAT-AP Working Group (https://github.com/SEMICeu/geodcat-ap) + + This work was originally supported by the EU Interoperability Solutions for + European Public Administrations Programme (http://ec.europa.eu/isa) + through Action 1.17: Re-usable INSPIRE Reference Platform + (http://ec.europa.eu/isa/actions/01-trusted-information-exchange/1-17action_en.htm). + + Source code: https://github.com/SEMICeu/iso-19139-to-dcat-ap + +--> + +<!-- + + PURPOSE AND USAGE + + This XSLT is a proof of concept for the implementation of the latest version + of the geospatial profile of DCAT-AP (GeoDCAT-AP): + + https://semiceu.github.io/GeoDCAT-AP/releases/ + + As such, this XSLT must be considered as unstable, and can be updated any + time based on the revisions to the GeoDCAT-AP specifications and + related work in the framework of INSPIRE and the EU ISA² Programme. + + The official distributions of this XSLT are published in the dedicated GitHub + repository: + + https://github.com/SEMICeu/iso-19139-to-dcat-ap + + Comments and inquiries should be sent via the corresponding issue tracker: + + https://github.com/SEMICeu/iso-19139-to-dcat-ap/issues + +--> + +<xsl:transform + xmlns:adms = "http://www.w3.org/ns/adms#" + xmlns:cnt = "http://www.w3.org/2011/content#" + xmlns:dc = "http://purl.org/dc/elements/1.1/" + xmlns:dcat = "http://www.w3.org/ns/dcat#" + xmlns:dct = "http://purl.org/dc/terms/" + xmlns:dctype = "http://purl.org/dc/dcmitype/" + xmlns:dqv = "http://www.w3.org/ns/dqv#" + xmlns:earl = "http://www.w3.org/ns/earl#" + xmlns:foaf = "http://xmlns.com/foaf/0.1/" + xmlns:gco = "http://www.isotc211.org/2005/gco" + xmlns:geodcatap = "http://data.europa.eu/930/" + xmlns:gmd = "http://www.isotc211.org/2005/gmd" + xmlns:gml = "http://www.opengis.net/gml" + xmlns:gmx = "http://www.isotc211.org/2005/gmx" + xmlns:gsp = "http://www.opengis.net/ont/geosparql#" + xmlns:i = "http://inspire.ec.europa.eu/schemas/common/1.0" + xmlns:i-gp = "http://inspire.ec.europa.eu/schemas/geoportal/1.0" + xmlns:locn = "http://www.w3.org/ns/locn#" + xmlns:owl = "http://www.w3.org/2002/07/owl#" + xmlns:org = "http://www.w3.org/ns/org#" + xmlns:prov = "http://www.w3.org/ns/prov#" + xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs = "http://www.w3.org/2000/01/rdf-schema#" + xmlns:schema = "http://schema.org/" + xmlns:sdmx-attribute = "http://purl.org/linked-data/sdmx/2009/attribute#" + xmlns:skos = "http://www.w3.org/2004/02/skos/core#" + xmlns:srv = "http://www.isotc211.org/2005/srv" + xmlns:vcard = "http://www.w3.org/2006/vcard/ns#" + xmlns:wdrs = "http://www.w3.org/2007/05/powder-s#" + xmlns:xlink = "http://www.w3.org/1999/xlink" + xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" + xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + exclude-result-prefixes="earl gco gmd gml gmx i i-gp srv xlink xsi xsl wdrs" + version="2.0"> + + <xsl:output method="xml" + indent="yes" + encoding="utf-8" + cdata-section-elements="locn:geometry dcat:bbox" /> + + <!-- + + Global variables + ================ + + --> + + <!-- Variables $core and $extended. --> + <!-- + + These variables are meant to be placeholders for the IDs used for the core and extended profiles of GeoDCAT-AP. + + --> + <!-- + <xsl:variable name="core">core</xsl:variable> + <xsl:variable name="extended">extended</xsl:variable> + <xsl:variable name="core">http://data.europa.eu/r5r/</xsl:variable> + <xsl:variable name="extended">http://data.europa.eu/930/</xsl:variable> + --> + <xsl:variable name="profile-core-code">core</xsl:variable> + <xsl:variable name="profile-extended-code">extended</xsl:variable> + <xsl:variable name="profile-core-uri">http://data.europa.eu/r5r/</xsl:variable> + <xsl:variable name="profile-extended-uri">http://data.europa.eu/930/</xsl:variable> + + <!-- + + Mapping parameters + ================== + + This section includes mapping parameters by the XSLT processor used, or, possibly, manually. + + --> + + <!-- Parameter $profile --> + <!-- + + This parameter specifies the GeoDCAT-AP profile to be used: + - value "core": the GeoDCAT-AP Core profile, which includes only the INSPIRE and ISO 19115 core metadata elements supported in DCAT-AP + - value "extended": the GeoDCAT-AP Extended profile, which defines mappings for all the INSPIRE and ISO 19115 core metadata elements + + The current specifications for the core and extended GeoDCAT-AP profiles are available on the Joinup collaboration platform: + + https://joinup.ec.europa.eu/solution/geodcat-ap + + --> + + <!-- Uncomment to use GeoDCAT-AP Core as default profile --> + <!-- + <xsl:variable name="default-profile" select="$profile-core-uri"/> + --> + <!-- Uncomment to use GeoDCAT-AP Extended as default profile --> + <xsl:variable name="default-profile" select="$profile-extended-uri"/> + + <xsl:param name="profile" select="$default-profile"/> + + <xsl:variable name="selected-profile"> + <xsl:choose> + <xsl:when test="$profile = $profile-core-code"> + <xsl:value-of select="$profile-core-uri"/> + </xsl:when> + <xsl:when test="$profile = $profile-core-uri"> + <xsl:value-of select="$profile"/> + </xsl:when> + <xsl:when test="$profile = $profile-extended-code"> + <xsl:value-of select="$profile-extended-uri"/> + </xsl:when> + <xsl:when test="$profile = $profile-extended-uri"> + <xsl:value-of select="$profile"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default-profile"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="core"> + <xsl:choose> + <xsl:when test="$profile = $profile-core-code"> + <xsl:value-of select="$profile-core-code"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$profile-core-uri"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="extended"> + <xsl:choose> + <xsl:when test="$profile = $profile-extended-code"> + <xsl:value-of select="$profile-extended-code"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$profile-extended-uri"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- Parameter $include-deprecated --> + <!-- + This parameter specifies whether deprecated mappings must ("yes") or must not + ("no") be included in the output. + --> + + <!-- Uncomment to include deprecated mappings from the output --> + + <xsl:param name="include-deprecated">yes</xsl:param> + + <!-- Uncomment to exclude deprecated mappings from the output --> + <!-- + <xsl:param name="include-deprecated">no</xsl:param> + --> + + <!-- Parameter $CoupledResourceLookUp --> + <!-- + + This parameter specifies whether the coupled resource, referenced via @xlink:href, + should be looked up to fetch the resource's unique resource identifier (i.e., code + and code space). More precisely: + - value "enabled": The coupled resource is looked up + - value "disabled": The coupled resource is not looked up + + The default value is "enabled" for GeoDCAT-AP Extended, and "disabled" otherwise. + + CAVEAT: Using this feature may cause the transformation to hang, in case the URL in + @xlink:href is broken, the request hangs indefinitely, or does not return the + expected resource (e.g., and HTML page, instead of an XML-encoded ISO 19139 record). + It is strongly recommended that this issue is dealt with by using appropriate + configuration parameters and error handling (e.g., by specifying a timeout on HTTP + calls and by setting the HTTP Accept header to "application/xml"). + + --> + + <xsl:param name="CoupledResourceLookUp"> + <xsl:choose> + <xsl:when test="$profile = $extended"> + <xsl:text>enabled</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>disabled</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <!-- + + Other global parameters + ======================= + + --> + + <!-- Variables to be used to convert strings into lower/uppercase by using the translate() function. --> + + <xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable> + <xsl:variable name="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable> + + <!-- URIs, URNs and names for spatial reference system registers. --> + + <xsl:param name="EpsgSrsBaseUri">http://www.opengis.net/def/crs/EPSG/0</xsl:param> + <xsl:param name="EpsgSrsBaseUrn">urn:ogc:def:crs:EPSG</xsl:param> + <xsl:param name="EpsgSrsName">EPSG Coordinate Reference Systems</xsl:param> + <xsl:param name="OgcSrsBaseUri">http://www.opengis.net/def/crs/OGC</xsl:param> + <xsl:param name="OgcSrsBaseUrn">urn:ogc:def:crs:OGC</xsl:param> + <xsl:param name="OgcSrsName">OGC Coordinate Reference Systems</xsl:param> + + <!-- URI and URN for CRS84. --> + + <xsl:param name="Crs84Uri" select="concat($OgcSrsBaseUri,'/1.3/CRS84')"/> + <xsl:param name="Crs84Urn" select="concat($OgcSrsBaseUrn,':1.3:CRS84')"/> + + <!-- URI and URN for ETRS89. --> + + <xsl:param name="Etrs89Uri" select="concat($EpsgSrsBaseUri,'/4258')"/> + <xsl:param name="Etrs89Urn" select="concat($EpsgSrsBaseUrn,'::4258')"/> + + <!-- URI and URN of the spatial reference system (SRS) used in the bounding box. + The default SRS is CRS84. If a different SRS is used, also parameter + $SrsAxisOrder must be specified. --> + + <!-- The SRS URI is used in the WKT and GML encodings of the bounding box. --> + <xsl:param name="SrsUri" select="$Crs84Uri"/> + <!-- The SRS URN is used in the GeoJSON encoding of the bounding box. --> + <xsl:param name="SrsUrn" select="$Crs84Urn"/> + + <!-- Axis order for the reference SRS: + - "LonLat": longitude / latitude + - "LatLon": latitude / longitude. + The axis order must be specified only if the reference SRS is different from CRS84. + If the reference SRS is CRS84, this parameter is ignored. --> + + <xsl:param name="SrsAxisOrder">LonLat</xsl:param> + + <!-- Namespaces --> + + <!-- Currently not used. + <xsl:param name="timeUri">http://placetime.com/</xsl:param> + <xsl:param name="timeInstantUri" select="concat($timeUri,'instant/gregorian/')"/> + <xsl:param name="timeIntervalUri" select="concat($timeUri,'interval/gregorian/')"/> + --> + <xsl:param name="dcat">http://www.w3.org/ns/dcat#</xsl:param> + <xsl:param name="dct">http://purl.org/dc/terms/</xsl:param> + <xsl:param name="dctype">http://purl.org/dc/dcmitype/</xsl:param> + <xsl:param name="foaf">http://xmlns.com/foaf/0.1/</xsl:param> + <xsl:param name="geodcatap">http://data.europa.eu/930/</xsl:param> + <xsl:param name="gsp">http://www.opengis.net/ont/geosparql#</xsl:param> + <xsl:param name="prov">http://www.w3.org/ns/prov#</xsl:param> + <xsl:param name="skos">http://www.w3.org/2004/02/skos/core#</xsl:param> + <xsl:param name="vcard">http://www.w3.org/2006/vcard/ns#</xsl:param> + <xsl:param name="xsd">http://www.w3.org/2001/XMLSchema#</xsl:param> + + <!-- Old params used for the SRS + <xsl:param name="ogcCrsBaseUri">http://www.opengis.net/def/EPSG/0/</xsl:param> + <xsl:param name="ogcCrsBaseUrn">urn:ogc:def:EPSG::</xsl:param> + --> + + <!-- Currently not used. + <xsl:param name="inspire">http://inspire.ec.europa.eu/schemas/md/</xsl:param> + --> + + <!-- Currently not used. + <xsl:param name="kos">http://ec.europa.eu/open-data/kos/</xsl:param> + <xsl:param name="kosil" select="concat($kos,'interoperability-level/')"/> + <xsl:param name="kosdst" select="concat($kos,'dataset-type/')"/> + <xsl:param name="kosdss" select="concat($kos,'dataset-status/Completed')"/> + <xsl:param name="kosdoct" select="concat($kos,'documentation-type/')"/> + <xsl:param name="koslic" select="concat($kos,'licence/EuropeanCommission')"/> + --> + + <!-- OP's NALs base URI --> + + <xsl:param name="op">http://publications.europa.eu/resource/authority/</xsl:param> + + <!-- OP's NALs URIs --> + + <xsl:param name="opcb" select="concat($op,'corporate-body/')"/> + <xsl:param name="opcountry" select="concat($op,'country/')"/> + <xsl:param name="opfq" select="concat($op,'frequency/')"/> + <xsl:param name="opft" select="concat($op,'file-type/')"/> + <xsl:param name="oplang" select="concat($op,'language/')"/> + + <!-- Currently not used. + <xsl:param name="cldFrequency">http://purl.org/cld/freq/</xsl:param> + --> + + <!-- IANA base URI --> + + <xsl:param name="iana">https://www.iana.org/assignments/</xsl:param> + + <!-- IANA registers URIs --> + + <xsl:param name="iana-mt" select="concat($iana,'media-types/')"/> + + <!-- DEPRECATED: Parameter kept for backward compatibility with GeoDCAT-AP v1.* --> + <!-- This is used as the datatype for the GeoJSON-based encoding of the bounding box. --> + <xsl:param name="geojsonMediaTypeUri" select="concat($iana-mt,'application/vnd.geo+json')"/> + + <!-- QUDT Units Vocabulary --> + <xsl:param name="qudt-unit">http://www.qudt.org/vocab/unit</xsl:param> + + <!-- Ontology for units of measure (OM) --> + <xsl:param name="om18">http://www.wurvoc.org/vocabularies/om-1.8</xsl:param> + <xsl:param name="om2">http://www.ontology-of-units-of-measure.org/resource/om-2</xsl:param> + <xsl:param name="om" select="$om18"/> + + <!-- Units of measure --> + <xsl:param name="uom-m" select="concat($qudt-unit, '/', 'M')"/> + <xsl:param name="uom-km" select="concat($qudt-unit, '/', 'KiloM')"/> + <xsl:param name="uom-ft" select="concat($qudt-unit, '/', 'FT')"/> + <xsl:param name="uom-deg" select="concat($qudt-unit, '/', 'DEG')"/> + <!-- + <xsl:param name="uom-m" select="concat($om, '/', 'metre')"/> + <xsl:param name="uom-km" select="concat($om, '/', 'kilometre')"/> + <xsl:param name="uom-ft"> + <xsl:choose> + <xsl:when test="$om = $om18"> + <xsl:value-of select="concat($om, '/', 'foot-international')"/> + </xsl:when> + <xsl:when test="$om = $om2"> + <xsl:value-of select="concat($om, '/', 'foot-International')"/> + </xsl:when> + </xsl:choose> + </xsl:param> + <xsl:param name="uom-deg" select="concat($om, '/', 'degree')"/> + --> + + <!-- INSPIRE base URI --> + + <xsl:param name="inspire">http://inspire.ec.europa.eu/</xsl:param> + + <!-- INSPIRE metadata code list URIs --> + + <xsl:param name="INSPIRECodelistUri" select="concat($inspire,'metadata-codelist/')"/> + <xsl:param name="SpatialDataServiceCategoryCodelistUri" select="concat($INSPIRECodelistUri,'SpatialDataServiceCategory')"/> + <xsl:param name="DegreeOfConformityCodelistUri" select="concat($INSPIRECodelistUri,'DegreeOfConformity')"/> + <xsl:param name="ResourceTypeCodelistUri" select="concat($INSPIRECodelistUri,'ResourceType')"/> + <xsl:param name="ResponsiblePartyRoleCodelistUri" select="concat($INSPIRECodelistUri,'ResponsiblePartyRole')"/> + <xsl:param name="SpatialDataServiceTypeCodelistUri" select="concat($INSPIRECodelistUri,'SpatialDataServiceType')"/> + <xsl:param name="TopicCategoryCodelistUri" select="concat($INSPIRECodelistUri,'TopicCategory')"/> + + <!-- INSPIRE code list URIs (not yet supported; the URI pattern is tentative) --> + <!-- DEPRECATED following the publication of the relevant code list in the INSPIRE Registry + <xsl:param name="SpatialRepresentationTypeCodelistUri" select="concat($INSPIRECodelistUri,'SpatialRepresentationTypeCode')"/> + <xsl:param name="MaintenanceFrequencyCodelistUri" select="concat($INSPIRECodelistUri,'MaintenanceFrequencyCode')"/> + --> + <xsl:param name="SpatialRepresentationTypeCodelistUri" select="concat($INSPIRECodelistUri,'SpatialRepresentationType')"/> + <xsl:param name="MaintenanceFrequencyCodelistUri" select="concat($INSPIRECodelistUri,'MaintenanceFrequency')"/> + + <!-- INSPIRE glossary URI --> + + <xsl:param name="INSPIREGlossaryUri" select="concat($inspire,'glossary/')"/> + + <!-- INSPIRE glossary URI --> + + <xsl:param name="inspire-mt" select="concat($inspire,'media-types/')"/> + + <!-- + + Master template + =============== + + --> + + <xsl:template match="/"> + <rdf:RDF> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:MD_Metadata|//gmd:MD_Metadata"/> + </rdf:RDF> + </xsl:template> + + <!-- + + Metadata template + ================= + + --> + + <xsl:template mode="iso19139-to-dcatap" + match="gmd:MD_Metadata|//gmd:MD_Metadata" + priority="10"> + + <!-- + + Parameters to create HTTP URIs for the resource and the corresponding metadata record + ===================================================================================== + + These parameters must be customised depending on the strategy used to assign HTTP URIs. + + The default rule implies that HTTP URIs are specified for the metadata file identifier + (metadata URI) and the resource identifier (resource URI). + + Resource URI can be an http or https URI based on: + * codeSpace + code value + * code value + The first URI found is used. + --> + + <xsl:param name="ResourceUri"> + <xsl:variable name="identifiers" + select="gmd:identificationInfo/*/gmd:citation/*/ + gmd:identifier/*"/> + + <xsl:variable name="uriIdentifiers" + as="node()*"> + <xsl:for-each select="$identifiers"> + <xsl:variable name="rURI" + select="if (gmd:codeSpace) + then concat( + gmd:codeSpace/(gco:CharacterString + |gmx:Anchor/@xlink:href), + gmd:code/(gco:CharacterString + |gmx:Anchor/@xlink:href)) + else gmd:code/(gco:CharacterString/text() + |gmx:Anchor/@xlink:href)"/> + <xsl:if test="matches($rURI, '^https?://')"> + <uri><xsl:value-of select="$rURI"/></uri> + </xsl:if> + </xsl:for-each> + </xsl:variable> + + <xsl:if test="count($uriIdentifiers) > 0"> + <xsl:value-of select="$uriIdentifiers[1]"/> + <xsl:if test="count($uriIdentifiers) > 1"> + <xsl:message>ResourceUri is <xsl:value-of select="$uriIdentifiers[1]"/>. Ignored: <xsl:value-of select="string-join($uriIdentifiers[position() > 1], ',')"/>. </xsl:message> + </xsl:if> + </xsl:if> + </xsl:param> + + <xsl:param name="MetadataUri"> + <xsl:variable name="mURI" select="gmd:fileIdentifier/gco:CharacterString"/> + <xsl:if test="$mURI != '' and ( starts-with($mURI, 'http://') or starts-with($mURI, 'https://') )"> + <xsl:value-of select="$mURI"/> + </xsl:if> + </xsl:param> + + <!-- + + Other parameters + ================ + + --> + + <!-- Metadata language: corresponding Alpha-2 codes --> + + <xsl:param name="ormlang"> + <xsl:choose> + <xsl:when test="gmd:language/gmd:LanguageCode/@codeListValue != ''"> + <xsl:value-of select="translate(gmd:language/gmd:LanguageCode/@codeListValue,$uppercase,$lowercase)"/> + </xsl:when> + <xsl:when test="gmd:language/gmd:LanguageCode != ''"> + <xsl:value-of select="translate(gmd:language/gmd:LanguageCode,$uppercase,$lowercase)"/> + </xsl:when> + <xsl:when test="gmd:language/gco:CharacterString != ''"> + <xsl:value-of select="translate(gmd:language/gco:CharacterString,$uppercase,$lowercase)"/> + </xsl:when> + </xsl:choose> + </xsl:param> + + <xsl:param name="MetadataLanguage"> + <xsl:choose> + <xsl:when test="$ormlang = 'bul'"> + <xsl:text>bg</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'cze'"> + <xsl:text>cs</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'dan'"> + <xsl:text>da</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'ger'"> + <xsl:text>de</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'gre'"> + <xsl:text>el</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'eng'"> + <xsl:text>en</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'spa'"> + <xsl:text>es</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'est'"> + <xsl:text>et</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'fin'"> + <xsl:text>fi</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'fre'"> + <xsl:text>fr</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'gle'"> + <xsl:text>ga</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'hrv'"> + <xsl:text>hr</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'ita'"> + <xsl:text>it</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'lav'"> + <xsl:text>lv</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'lit'"> + <xsl:text>lt</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'hun'"> + <xsl:text>hu</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'mlt'"> + <xsl:text>mt</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'dut'"> + <xsl:text>nl</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'pol'"> + <xsl:text>pl</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'por'"> + <xsl:text>pt</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'rum'"> + <xsl:text>ru</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'slo'"> + <xsl:text>sk</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'slv'"> + <xsl:text>sl</xsl:text> + </xsl:when> + <xsl:when test="$ormlang = 'swe'"> + <xsl:text>sv</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$ormlang"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <!-- Resource language: corresponding Alpha-2 codes --> + + <xsl:param name="orrlang"> + <xsl:choose> + <xsl:when test="gmd:identificationInfo/*/gmd:language/gmd:LanguageCode/@codeListValue != ''"> + <xsl:value-of select="translate(gmd:identificationInfo/*/gmd:language/gmd:LanguageCode/@codeListValue,$uppercase,$lowercase)"/> + </xsl:when> + <xsl:when test="gmd:identificationInfo/*/gmd:language/gmd:LanguageCode != ''"> + <xsl:value-of select="translate(gmd:identificationInfo/*/gmd:language/gmd:LanguageCode,$uppercase,$lowercase)"/> + </xsl:when> + <xsl:when test="gmd:identificationInfo/*/gmd:language/gco:CharacterString != ''"> + <xsl:value-of select="translate(gmd:identificationInfo/*/gmd:language/gco:CharacterString,$uppercase,$lowercase)"/> + </xsl:when> + </xsl:choose> + </xsl:param> + + <xsl:param name="ResourceLanguage"> + <xsl:choose> + <xsl:when test="$orrlang = 'bul'"> + <xsl:text>bg</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'cze'"> + <xsl:text>cs</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'dan'"> + <xsl:text>da</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'ger'"> + <xsl:text>de</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'gre'"> + <xsl:text>el</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'eng'"> + <xsl:text>en</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'spa'"> + <xsl:text>es</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'est'"> + <xsl:text>et</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'fin'"> + <xsl:text>fi</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'fre'"> + <xsl:text>fr</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'gle'"> + <xsl:text>ga</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'hrv'"> + <xsl:text>hr</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'ita'"> + <xsl:text>it</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'lav'"> + <xsl:text>lv</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'lit'"> + <xsl:text>lt</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'hun'"> + <xsl:text>hu</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'mlt'"> + <xsl:text>mt</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'dut'"> + <xsl:text>nl</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'pol'"> + <xsl:text>pl</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'por'"> + <xsl:text>pt</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'rum'"> + <xsl:text>ru</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'slo'"> + <xsl:text>sk</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'slv'"> + <xsl:text>sl</xsl:text> + </xsl:when> + <xsl:when test="$orrlang = 'swe'"> + <xsl:text>sv</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$orrlang"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:param name="IsoScopeCode"> + <xsl:value-of select="normalize-space(gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue)"/> + </xsl:param> + + <xsl:param name="InspireResourceType"> + <xsl:if test="$IsoScopeCode = 'dataset' or $IsoScopeCode = 'series' or $IsoScopeCode = 'service'"> + <xsl:value-of select="$IsoScopeCode"/> + </xsl:if> + </xsl:param> + + <xsl:param name="ResourceType"> + <xsl:choose> + <xsl:when test="$IsoScopeCode = 'dataset' or $IsoScopeCode = 'nonGeographicDataset'"> + <xsl:text>dataset</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$IsoScopeCode"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:param name="ServiceType"> + <xsl:value-of select="gmd:identificationInfo/*/srv:serviceType/gco:LocalName"/> + </xsl:param> + <!-- + <xsl:param name="ResourceTitle"> + <xsl:value-of select="gmd:identificationInfo[1]/*/gmd:citation/*/gmd:title/gco:CharacterString"/> + </xsl:param> + --> + <xsl:param name="ResourceTitle"> + <xsl:for-each select="gmd:identificationInfo[1]/*/gmd:citation/*/gmd:title"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(gco:CharacterString)"/> + </dct:title> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:title</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + <!-- + <xsl:param name="ResourceAbstract"> + <xsl:value-of select="gmd:identificationInfo[1]/*/gmd:abstract/gco:CharacterString"/> + </xsl:param> + --> + <xsl:param name="ResourceAbstract"> + <xsl:for-each select="gmd:identificationInfo[1]/*/gmd:abstract"> + <dct:description xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(gco:CharacterString)"/> + </dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + <!-- + <xsl:param name="Lineage"> + <xsl:value-of select="gmd:dataQualityInfo/*/gmd:lineage/*/gmd:statement/gco:CharacterString"/> + </xsl:param> + --> + <xsl:param name="Lineage"> + <xsl:for-each select="gmd:dataQualityInfo/*/gmd:lineage/*/gmd:statement"> + <dct:provenance> + <dct:ProvenanceStatement> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:ProvenanceStatement> + </dct:provenance> + </xsl:for-each> + </xsl:param> + + <xsl:param name="MetadataDate"> + <xsl:choose> + <xsl:when test="gmd:dateStamp/gco:Date"> + <xsl:value-of select="gmd:dateStamp/gco:Date"/> + </xsl:when> + <xsl:when test="gmd:dateStamp/gco:DateTime"> + <!-- + <xsl:value-of select="substring(gmd:dateStamp/gco:DateTime/text(),1,10)"/> + --> + <xsl:value-of select="normalize-space(gmd:dateStamp/gco:DateTime/text())"/> + </xsl:when> + </xsl:choose> + </xsl:param> + + <xsl:param name="UniqueResourceIdentifier"> + <xsl:for-each select="gmd:identificationInfo[1]/*/gmd:citation/*/gmd:identifier/*"> + <xsl:choose> + <xsl:when test="gmd:codeSpace/gco:CharacterString/text() != ''"> + <xsl:value-of select="concat(gmd:codeSpace/gco:CharacterString/text(),gmd:code/gco:CharacterString/text())"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="gmd:code/gco:CharacterString/text()"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:param> + + <xsl:param name="ConstraintsRelatedToAccessAndUse"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo[1]/*/gmd:resourceConstraints/*"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + </xsl:param> + + <!-- Conformity, expressed by using an earl:Assertion (only for the extended profile) --> + <!-- + <xsl:param name="Conformity"> + <xsl:for-each select="gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:specification/gmd:CI_Citation"> + <xsl:variable name="specinfo"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmd:title/gco:CharacterString"/> + </dct:title> + <xsl:apply-templates select="gmd:date/gmd:CI_Date"/> + </xsl:variable> + <xsl:variable name="degree"> + <xsl:choose> + <xsl:when test="../../gmd:pass/gco:Boolean = 'true'"> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/conformant')"/> + </xsl:when> + <xsl:when test="../../gmd:pass/gco:Boolean = 'false'"> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/notConformant')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/notEvaluated')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="explanation"> + <xsl:value-of select="../../gmd:explanation/gco:CharacterString"/> + </xsl:variable> + <earl:Assertion> + <xsl:if test="$ResourceUri != ''"> + <earl:subject rdf:resource="{$ResourceUri}"/> + </xsl:if> + <xsl:choose> + <xsl:when test="../@xlink:href and ../@xlink:href != ''"> + <earl:test> + <rdf:Description rdf:about="{../@xlink:href}"> + <xsl:copy-of select="$specinfo"/> + </rdf:Description> + </earl:test> + </xsl:when> + <xsl:otherwise> + <earl:test rdf:parseType="Resource"> + <xsl:copy-of select="$specinfo"/> + </earl:test> + </xsl:otherwise> + </xsl:choose> + <earl:result> + <earl:TestResult> + <earl:outcome rdf:resource="{$degree}"/> + <xsl:if test="$explanation and $explanation != ''"> + <earl:info xml:lang="{$MetadataLanguage}"><xsl:value-of select="$explanation"/></earl:info> + </xsl:if> + </earl:TestResult> + </earl:result> + </earl:Assertion> + </xsl:for-each> + </xsl:param> + --> + <!-- Conformity, expressed by using a prov:Activity (only for the extended profile) --> + + <xsl:param name="Conformity"> + <xsl:for-each select="gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:specification/gmd:CI_Citation"> + <xsl:variable name="specUri" select="normalize-space(gmd:title/gmx:Anchor/@xlink:href)"/> + <xsl:variable name="specTitle"> + <xsl:for-each select="gmd:title"> + <!-- + <dct:title xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></dct:title> + --> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dct:title> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:title</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="specinfo"> + <!-- + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmd:title/gco:CharacterString"/> + </dct:title> + --> + <xsl:copy-of select="$specTitle"/> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:date/gmd:CI_Date"/> + </xsl:variable> + <xsl:variable name="degree"> + <xsl:choose> + <xsl:when test="../../gmd:pass/gco:Boolean = 'true'"> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/conformant')"/> + </xsl:when> + <xsl:when test="../../gmd:pass/gco:Boolean = 'false'"> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/notConformant')"/> + </xsl:when> + <xsl:otherwise> + <!-- + <xsl:when test="../../gmd:pass/gco:Boolean = ''"> + --> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/notEvaluated')"/> + <!-- + </xsl:when> + --> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- + <xsl:variable name="explanation"> + <xsl:value-of select="../../gmd:explanation/gco:CharacterString"/> + </xsl:variable> + --> + <xsl:variable name="explanation"> + <xsl:for-each select="../../gmd:explanation"> + <dct:description xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(gco:CharacterString)"/> + </dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="Activity"> + <prov:Activity> + <xsl:if test="$ResourceUri != ''"> + <prov:used> + <prov:Entity rdf:about="{$ResourceUri}"/> + </prov:used> + </xsl:if> + <prov:qualifiedAssociation rdf:parseType="Resource"> + <rdf:type rdf:resource="{$prov}Association"/> + <prov:hadPlan rdf:parseType="Resource"> + <rdf:type rdf:resource="{$prov}Plan"/> + <xsl:choose> + <xsl:when test="$specUri != ''"> + <prov:wasDerivedFrom> + <prov:Entity rdf:about="{$specUri}"/> + </prov:wasDerivedFrom> + <!-- + <prov:wasDerivedFrom> + <rdf:Description rdf:about="{$specUri}"> + <xsl:copy-of select="$specinfo"/> + </rdf:Description> + </prov:wasDerivedFrom> + --> + </xsl:when> + <xsl:when test="../@xlink:href and ../@xlink:href != ''"> + <prov:wasDerivedFrom> + <prov:Entity rdf:about="{../@xlink:href}"/> + </prov:wasDerivedFrom> + <!-- + <prov:wasDerivedFrom> + <rdf:Description rdf:about="{../@xlink:href}"> + <xsl:copy-of select="$specinfo"/> + </rdf:Description> + </prov:wasDerivedFrom> + --> + </xsl:when> + <xsl:otherwise> + <prov:wasDerivedFrom rdf:parseType="Resource"> + <rdf:type rdf:resource="{$prov}Entity"/> + <xsl:copy-of select="$specinfo"/> + </prov:wasDerivedFrom> + </xsl:otherwise> + </xsl:choose> + </prov:hadPlan> + </prov:qualifiedAssociation> + <prov:generated rdf:parseType="Resource"> + <rdf:type rdf:resource="{$prov}Entity"/> + <dct:type rdf:resource="{$degree}"/> + <!-- + <xsl:if test="$explanation and $explanation != ''"> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="$explanation"/></dct:description> + </xsl:if> + --> + <xsl:copy-of select="$explanation"/> + </prov:generated> + </prov:Activity> + </xsl:variable> + <!-- + <xsl:choose> + <xsl:when test="$ResourceUri != ''"> + <xsl:copy-of select="$Activity"/> + </xsl:when> + <xsl:otherwise> + --> + <prov:wasUsedBy> + <xsl:copy-of select="$Activity"/> + </prov:wasUsedBy> + <!-- + </xsl:otherwise> + </xsl:choose> + --> + </xsl:for-each> + </xsl:param> + + <!-- Metadata character encoding (only for the extended profile) --> + + <xsl:param name="MetadataCharacterEncoding"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:characterSet/gmd:MD_CharacterSetCode"/> + </xsl:param> + + <xsl:param name="ResourceCharacterEncoding"> + <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:characterSet/gmd:MD_CharacterSetCode"/> + </xsl:for-each> + </xsl:param> + + <!-- Metadata description (metadata on metadata) --> + + <xsl:param name="MetadataDescription"> + <rdf:type rdf:resource="{$dcat}CatalogRecord"/> + <xsl:if test="$ResourceUri != ''"> + <foaf:primaryTopic rdf:resource="{$ResourceUri}"/> + </xsl:if> + <!-- Metadata standard --> + <dct:conformsTo> + <dct:Standard rdf:about="{$selected-profile}"/> + </dct:conformsTo> + <!-- Metadata language --> + <xsl:if test="$ormlang != ''"> + <dct:language> + <dct:LinguisticSystem rdf:about="{concat($oplang,translate($ormlang,$lowercase,$uppercase))}"/> + </dct:language> + </xsl:if> + <!-- Metadata date --> + <xsl:if test="$MetadataDate != ''"> + <xsl:variable name="data-type"> + <xsl:call-template name="DateDataType"> + <xsl:with-param name="date" select="$MetadataDate"/> + </xsl:call-template> + </xsl:variable> + <dct:modified rdf:datatype="{$xsd}{$data-type}"> + <xsl:value-of select="$MetadataDate"/> + </dct:modified> + </xsl:if> + <!-- Metadata point of contact: only for the extended profile --> + <xsl:if test="$profile = $extended"> + <xsl:for-each select="gmd:contact"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:CI_ResponsibleParty"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + <xsl:with-param name="ResourceType" select="$ResourceType"/> + </xsl:apply-templates> + </xsl:for-each> + <!-- Old version + <xsl:apply-templates select="gmd:contact/gmd:CI_ResponsibleParty"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + --> + </xsl:if> + <!-- Metadata file identifier (tentative): only for the extended profile --> + <xsl:if test="$profile = $extended"> + <xsl:for-each select="gmd:fileIdentifier/gco:CharacterString"> + <dct:identifier rdf:datatype="{$xsd}string"><xsl:value-of select="."/></dct:identifier> + </xsl:for-each> + </xsl:if> + <!-- Metadata standard (tentative): only for the extended profile --> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <xsl:variable name="MetadataStandardURI" select="gmd:metadataStandardName/gmx:Anchor/@xlink:href"/> + <!-- + <xsl:variable name="MetadataStandardName" select="gmd:metadataStandardName/*[self::gco:CharacterString|self::gmx:Anchor]"/> + --> + <xsl:variable name="MetadataStandardName"> + <xsl:for-each select="gmd:metadataStandardName"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dct:title> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:title</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="MetadataStandardVersion" select="gmd:metadataStandardVersion/gco:CharacterString"/> + <xsl:if test="$MetadataCharacterEncoding != '' or $MetadataStandardURI != '' or $MetadataStandardName != ''"> + <dct:source rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dcat}CatalogRecord"/> + <!-- Metadata date --> + <xsl:if test="$MetadataDate != ''"> + <dct:modified rdf:datatype="{$xsd}date"> + <xsl:value-of select="$MetadataDate"/> + </dct:modified> + </xsl:if> + <xsl:if test="$MetadataCharacterEncoding != ''"> + <!-- Metadata character encoding (tentative): only for the extended profile --> + <xsl:copy-of select="$MetadataCharacterEncoding"/> + </xsl:if> + <xsl:choose> + <xsl:when test="$MetadataStandardURI != ''"> + <!-- Metadata standard, denoted by a URI --> + <dct:conformsTo> + <dct:Standard rdf:about="{$MetadataStandardURI}"/> + </dct:conformsTo> + </xsl:when> + <xsl:when test="$MetadataStandardName != ''"> + <dct:conformsTo rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}Standard"/> + <!-- Metadata standard name --> + <!-- + <dct:title xml:lang="{$MetadataLanguage}"><xsl:value-of select="$MetadataStandardName"/></dct:title> + --> + <xsl:copy-of select="$MetadataStandardName"/> + <xsl:if test="$MetadataStandardVersion != ''"> + <!-- Metadata standard version --> + <owl:versionInfo xml:lang="{$MetadataLanguage}"><xsl:value-of select="$MetadataStandardVersion"/></owl:versionInfo> + </xsl:if> + </dct:conformsTo> + </xsl:when> + </xsl:choose> + </dct:source> + </xsl:if> + <!-- Old version: + <xsl:for-each select="gmd:metadataStandardName/gco:CharacterString"> + <xsl:if test="text() != '' or ../../gmd:metadataStandardVersion/gco:CharacterString/text() != ''"> + <dct:source rdf:parseType="Resource"> + <xsl:if test="$MetadataCharacterEncoding != ''"> + <xsl:copy-of select="$MetadataCharacterEncoding"/> + </xsl:if> + <dct:conformsTo rdf:parseType="Resource"> + <xsl:if test="text() != ''"> + <dct:title xml:lang="{$MetadataLanguage}"><xsl:value-of select="."/></dct:title> + </xsl:if> + <xsl:if test="../../gmd:metadataStandardName/gco:CharacterString/text() != ''"> + <owl:versionInfo xml:lang="{$MetadataLanguage}"><xsl:value-of select="../../gmd:metadataStandardVersion/gco:CharacterString"/></owl:versionInfo> + </xsl:if> + </dct:conformsTo> + </dct:source> + </xsl:if> + </xsl:for-each> + --> + <!-- + </xsl:if> + --> + </xsl:param> + + <!-- Resource description (resource metadata) --> + + <xsl:param name="ResourceDescription"> + <xsl:choose> + <xsl:when test="$ResourceType = 'dataset'"> + <rdf:type rdf:resource="{$dcat}Dataset"/> + </xsl:when> + <xsl:when test="$ResourceType = 'series'"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v2.* and earlier versions --> + <xsl:if test="$include-deprecated = 'yes'"> + <rdf:type rdf:resource="{$dcat}Dataset"/> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 3 --> + <rdf:type rdf:resource="{$dcat}DatasetSeries"/> + </xsl:when> + <xsl:when test="$ResourceType = 'service'"> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <rdf:type rdf:resource="{$dctype}Service"/> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <rdf:type rdf:resource="{$dcat}DataService"/> + <!-- + </xsl:if> + --> + <xsl:if test="$ServiceType = 'discovery'"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <rdf:type rdf:resource="{$dcat}Catalog"/> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <!-- + <rdf:type rdf:resource="{$dcat}DataService"/> + --> + </xsl:if> + </xsl:when> + </xsl:choose> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <xsl:if test="$InspireResourceType != ''"> + <geodcatap:resourceType rdf:resource="{$ResourceTypeCodelistUri}/{$ResourceType}"/> + </xsl:if> + <!-- + </xsl:if> + --> + <!-- + <dct:title xml:lang="{$MetadataLanguage}"><xsl:value-of select="$ResourceTitle"/></dct:title> + --> + <xsl:copy-of select="$ResourceTitle"/> + <!-- + <dct:description xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space($ResourceAbstract)"/> + </dct:description> + --> + <xsl:copy-of select="$ResourceAbstract"/> + <!-- Maintenance information (tentative) --> + <xsl:for-each select="gmd:identificationInfo/*/gmd:resourceMaintenance"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/gmd:MD_MaintenanceFrequencyCode"/> + </xsl:for-each> + <!-- Topic category --> + <xsl:if test="$profile = $extended"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:topicCategory"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + </xsl:if> + <!-- Keyword --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:descriptiveKeywords/gmd:MD_Keywords"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + <xsl:with-param name="ResourceType" select="$ResourceType"/> + <xsl:with-param name="ServiceType" select="$ServiceType"/> + </xsl:apply-templates> + <!-- Identifier, 0..1 --> + <!-- + <xsl:apply-templates select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/*"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + --> + <!-- Resource locators --> + <!-- + <xsl:apply-templates select="gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage"> + <xsl:with-param name="ResourceType" select="$ResourceType"/> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + --> + <!-- Unique Resource Identifier --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:citation/*/gmd:identifier/*"/> + <!-- Coupled resources --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo[1]/*/srv:operatesOn"> + <xsl:with-param name="ResourceType" select="$ResourceType"/> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + <!-- Resource Language --> + <xsl:if test="$ResourceType = 'dataset' or $ResourceType = 'series'"> + <xsl:choose> + <xsl:when test="$orrlang != ''"> + <dct:language> + <dct:LinguisticSystem rdf:about="{concat($oplang,translate($orrlang,$lowercase,$uppercase))}"/> + </dct:language> + </xsl:when> + <xsl:otherwise> + <!-- To be decided (when the resource language is not specified, it defaults to the metadata language): --> + <!-- + <xsl:if test="$ormlang != ''"> + <dct:language rdf:resource="{concat($oplang,translate($ormlang,$lowercase,$uppercase))}"/> + </xsl:if> + --> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <!-- Spatial service type --> + <!-- Mapping added to the core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$ResourceType = 'service' and $profile = $extended"> + --> + <xsl:if test="$ResourceType = 'service'"> + <!-- Replaced by param $ServiceType --> + <!-- + <xsl:apply-templates select="gmd:identificationInfo/*/srv:serviceType"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + --> + <geodcatap:serviceType rdf:resource="{$SpatialDataServiceTypeCodelistUri}/{$ServiceType}"/> + </xsl:if> + <!-- Spatial extent --> + <!-- + <xsl:apply-templates select="gmd:identificationInfo[1]/*/*[self::gmd:extent|self::srv:extent]/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox"/> + --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo[1]/*/*[self::gmd:extent|self::srv:extent]/*/gmd:geographicElement"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + <!-- Temporal extent --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent"/> + <!-- Creation date, publication date, date of last revision --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation"/> + <!-- Lineage --> + <xsl:if test="$ResourceType != 'service' and $Lineage != ''"> + <!-- + <dct:provenance> + <dct:ProvenanceStatement> + <rdfs:label xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space($Lineage)"/> + </rdfs:label> + </dct:ProvenanceStatement> + </dct:provenance> + --> + <xsl:copy-of select="$Lineage"/> + </xsl:if> + <!-- Coordinate and temporal reference systems (tentative) --> + <!-- Mapping added to the core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + <!-- + </xsl:if> + --> + <!-- Spatial resolution --> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:spatialResolution/gmd:MD_Resolution"/> + <!-- + </xsl:if> + --> + <!-- Constraints related to access and use for services --> + <!-- Mapping moved to the core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$ResourceType = 'service' and ($ServiceType = 'discovery' or $profile = $extended)"> + --> + <xsl:if test="$ResourceType = 'service'"> + <xsl:copy-of select="$ConstraintsRelatedToAccessAndUse"/> + </xsl:if> + + <!-- Conformity --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:specification/gmd:CI_Citation"> + <xsl:with-param name="ResourceUri" select="$ResourceUri"/> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + <xsl:with-param name="Conformity" select="$Conformity"/> + </xsl:apply-templates> + + <!-- Spatial representation type --> + <xsl:variable name="SpatialRepresentationType"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:identificationInfo/*/gmd:spatialRepresentationType/gmd:MD_SpatialRepresentationTypeCode"/> + </xsl:variable> + + <xsl:for-each select="gmd:distributionInfo/gmd:MD_Distribution"> + <!-- Encoding --> + <xsl:variable name="Encoding"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:distributionFormat/gmd:MD_Format/gmd:name/*"/> + </xsl:variable> + <!-- Resource locators (access / download URLs) --> + <xsl:for-each select="gmd:transferOptions/*/gmd:onLine/*"> + + <xsl:variable name="url" select="gmd:linkage/gmd:URL"/> + + <xsl:variable name="protocol" select="gmd:protocol/*"/> + + <xsl:variable name="protocol-url" select="gmd:protocol/gmx:Anchor/@xlink:href"/> + + <xsl:variable name="function" select="gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue"/> + + <xsl:variable name="Title"> + <xsl:for-each select="gmd:name"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*)"/> + </dct:title> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:title</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="Description"> + <xsl:for-each select="gmd:description"> + <dct:description xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*)"/> + </dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="TitleAndDescription"> + <!-- + <xsl:for-each select="gmd:name/gco:CharacterString"> + <dct:title xml:lang="{$MetadataLanguage}"><xsl:value-of select="."/></dct:title> + </xsl:for-each> + <xsl:for-each select="gmd:description/gco:CharacterString"> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="."/></dct:description> + </xsl:for-each> + --> + <xsl:copy-of select="$Title"/> + <xsl:copy-of select="$Description"/> + </xsl:variable> + + <xsl:variable name="TitleOrDescriptionOrPlaceholder"> + <xsl:choose> + <xsl:when test="normalize-space(gmd:name/*) != ''"> + <xsl:value-of select="normalize-space(gmd:name/*)"/> + </xsl:when> + <xsl:when test="normalize-space(gmd:description/*) != ''"> + <xsl:value-of select="normalize-space(gmd:description)"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>N/A</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <!-- Mapping added to the core profile for compliance with DCAT-AP 2 --> + <xsl:when test="$ResourceType = 'service'"> + <xsl:call-template name="service-endpoint"> + <xsl:with-param name="function" select="$function"/> + <xsl:with-param name="protocol" select="$protocol"/> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + <xsl:if test="$profile = $extended"> + <xsl:call-template name="service-protocol"> + <xsl:with-param name="function" select="$function"/> + <xsl:with-param name="protocol" select="$protocol"/> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + <!-- Distributions --> + <xsl:when test="$ResourceType = 'dataset' or $ResourceType = 'series'"> + <xsl:variable name="points-to-service"> + <xsl:call-template name="detect-service"> + <xsl:with-param name="function" select="$function"/> + <xsl:with-param name="protocol" select="$protocol"/> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="$points-to-service = 'yes' or $function = 'download' or $function = 'offlineAccess' or $function = 'order'"> + <dcat:distribution> + <dcat:Distribution> + <!-- Title and description --> + <xsl:copy-of select="$TitleAndDescription"/> + <!-- Access URL --> + <!-- + <xsl:for-each select="gmd:linkage/gmd:URL"> + <dcat:accessURL rdf:resource="{.}"/> + </xsl:for-each> + --> + <xsl:choose> + <xsl:when test="$points-to-service = 'yes'"> + <dcat:accessService rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dcat}DataService"/> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$TitleOrDescriptionOrPlaceholder"/> + </dct:title> + <xsl:call-template name="service-endpoint"> + <xsl:with-param name="function" select="$function"/> + <xsl:with-param name="protocol" select="$protocol"/> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + <xsl:if test="$profile = $extended"> + <xsl:call-template name="service-protocol"> + <xsl:with-param name="function" select="$function"/> + <xsl:with-param name="protocol" select="$protocol"/> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + </xsl:if> + </dcat:accessService> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + <dcat:accessURL rdf:resource="{$url}"/> + <!-- Constraints related to access and use --> + <xsl:copy-of select="$ConstraintsRelatedToAccessAndUse"/> + <!-- Spatial representation type (tentative) --> + <xsl:if test="$profile = $extended"> + <xsl:copy-of select="$SpatialRepresentationType"/> + </xsl:if> + <!-- Encoding --> + <xsl:copy-of select="$Encoding"/> + <!-- Resource character encoding --> + <xsl:if test="$profile = $extended"> + <xsl:copy-of select="$ResourceCharacterEncoding"/> + </xsl:if> + </dcat:Distribution> + </dcat:distribution> + </xsl:when> + <xsl:when test="$function = 'information' or $function = 'search'"> + <!-- ?? Should foaf:page be detailed with title, description, etc.? --> + <xsl:for-each select="gmd:linkage/gmd:URL"> + <foaf:page> + <foaf:Document rdf:about="{.}"> + <xsl:copy-of select="$TitleAndDescription"/> + </foaf:Document> + </foaf:page> + </xsl:for-each> + </xsl:when> + <!-- ?? Should dcat:landingPage be detailed with title, description, etc.? --> + <xsl:otherwise> + <xsl:for-each select="gmd:linkage/gmd:URL"> + <dcat:landingPage> + <foaf:Document rdf:about="{.}"> + <xsl:copy-of select="$TitleAndDescription"/> + </foaf:Document> + </dcat:landingPage> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:for-each> + <!-- Responsible organisation --> + <xsl:for-each select="gmd:identificationInfo/*/gmd:pointOfContact"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:CI_ResponsibleParty"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + <xsl:with-param name="ResourceType" select="$ResourceType"/> + </xsl:apply-templates> + </xsl:for-each> + <!-- + <xsl:apply-templates select="gmd:identificationInfo/*/gmd:pointOfContact/gmd:CI_ResponsibleParty"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + <xsl:with-param name="ResourceType" select="$ResourceType"/> + </xsl:apply-templates> + --> + </xsl:param> + + <xsl:param name="Metadata"> + <xsl:if test="$MetadataUri != '' or normalize-space($MetadataDescription)"> + <foaf:isPrimaryTopicOf> + <xsl:choose> + <xsl:when test="$MetadataUri != ''"> + <rdf:Description rdf:about="{$MetadataUri}"> + <xsl:copy-of select="$MetadataDescription"/> + </rdf:Description> + </xsl:when> + <xsl:otherwise> + <xsl:if test="normalize-space($MetadataDescription)"> + <rdf:Description> + <xsl:copy-of select="$MetadataDescription"/> + </rdf:Description> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </foaf:isPrimaryTopicOf> + </xsl:if> + </xsl:param> + + <xsl:choose> + <xsl:when test="$ResourceUri != ''"> + <rdf:Description rdf:about="{$ResourceUri}"> + <xsl:copy-of select="$Metadata"/> + <xsl:copy-of select="$ResourceDescription"/> + </rdf:Description> + </xsl:when> + <xsl:otherwise> + <rdf:Description> + <xsl:copy-of select="$Metadata"/> + <xsl:copy-of select="$ResourceDescription"/> + </rdf:Description> + </xsl:otherwise> + </xsl:choose> + + <!-- Mapping added to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended and $ResourceUri != '' and $Conformity != ''"> + --> + <!-- + <xsl:if test="$ResourceUri != '' and $Conformity != ''"> + <xsl:copy-of select="$Conformity"/> + </xsl:if> + --> + + + </xsl:template> + + <!-- + + Templates for specific metadata elements + ======================================== + + --> + + <!-- Unique Resource Identifier --> + + <xsl:template mode="iso19139-to-dcatap" name="UniqueResourceIdentifier" match="gmd:identificationInfo/*/gmd:citation/*/gmd:identifier/*"> + <xsl:param name="ns"> + <xsl:value-of select="gmd:codeSpace/gco:CharacterString"/> + </xsl:param> + <xsl:param name="code"> + <xsl:value-of select="gmd:code/gco:CharacterString"/> + </xsl:param> + <xsl:param name="id"> + <xsl:choose> + <xsl:when test="$ns != ''"> + <xsl:choose> + <xsl:when test="substring($ns,string-length($ns),1) = '/'"> + <xsl:value-of select="concat($ns,$code)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($ns,'/',$code)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="idDatatypeURI"> + <xsl:choose> + <xsl:when test="starts-with($id, 'http://') or starts-with($id, 'https://') or starts-with($id, 'urn:')"> + <xsl:value-of select="concat($xsd,'anyURI')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($xsd,'string')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <dct:identifier rdf:datatype="{$idDatatypeURI}"><xsl:value-of select="$id"/></dct:identifier> + </xsl:template> + + <!-- Responsible Organisation --> + <!-- + <xsl:template name="ResponsibleOrganisation" match="gmd:identificationInfo/*/gmd:pointOfContact/gmd:CI_ResponsibleParty"> + --> + <xsl:template mode="iso19139-to-dcatap" name="ResponsibleOrganisation" match="gmd:CI_ResponsibleParty"> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="ResourceType"/> + + <xsl:param name="role"> + <xsl:value-of select="gmd:role/gmd:CI_RoleCode/@codeListValue"/> + </xsl:param> + + <xsl:param name="ResponsiblePartyRole"> + <xsl:value-of select="concat($ResponsiblePartyRoleCodelistUri,'/',$role)"/> + </xsl:param> + + <xsl:param name="IndividualURI"> + <xsl:value-of select="normalize-space(gmd:individualName/*/@xlink:href)"/> + </xsl:param> + + <xsl:param name="IndividualName"> + <xsl:value-of select="normalize-space(gmd:individualName/*)"/> + </xsl:param> + + <xsl:param name="IndividualName-FOAF"> + <xsl:for-each select="gmd:individualName"> + <foaf:name xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(*[self::gco:CharacterString|gmx:Anchor])"/></foaf:name> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">foaf:name</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + + <xsl:param name="IndividualName-vCard"> + <xsl:for-each select="gmd:individualName"> + <vcard:fn xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(*[self::gco:CharacterString|gmx:Anchor])"/></vcard:fn> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">vcard:fn</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + + <xsl:param name="OrganisationURI"> + <xsl:value-of select="normalize-space(gmd:organisationName/*/@xlink:href)"/> + </xsl:param> + + <xsl:param name="URI"> + <xsl:choose> + <xsl:when test="$IndividualURI != ''"> + <xsl:value-of select="$IndividualURI"/> + </xsl:when> + <xsl:when test="$OrganisationURI != ''"> + <xsl:value-of select="$OrganisationURI"/> + </xsl:when> + </xsl:choose> + </xsl:param> + + <xsl:param name="OrganisationName"> + <xsl:value-of select="string-join(gmd:organisationName/*[self::gco:CharacterString|gmx:Anchor], '')"/> + </xsl:param> + <xsl:param name="OrganisationName-FOAF"> + <xsl:for-each select="gmd:organisationName"> + <foaf:name xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(*[self::gco:CharacterString|gmx:Anchor])"/></foaf:name> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">foaf:name</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + + <xsl:param name="OrganisationName-vCard"> + <xsl:for-each select="gmd:organisationName"> + <vcard:organization-name xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(*[self::gco:CharacterString|gmx:Anchor])"/></vcard:organization-name> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">vcard:organization-name</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + + <xsl:param name="OrganisationNameAsIndividualName-vCard"> + <xsl:for-each select="gmd:organisationName"> + <vcard:fn xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(*[self::gco:CharacterString|gmx:Anchor])"/></vcard:fn> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">vcard:fn</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:param> + + <xsl:param name="Email"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/*[normalize-space() != '']"> + <foaf:mbox rdf:resource="mailto:{normalize-space(.)}"/> + </xsl:for-each> + </xsl:param> + + <xsl:param name="Email-vCard"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/*[normalize-space() != '']"> + <vcard:hasEmail rdf:resource="mailto:{normalize-space(.)}"/> + </xsl:for-each> + </xsl:param> + + <xsl:param name="URL"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL[normalize-space() != '']"> + <foaf:workplaceHomepage rdf:resource="{normalize-space(.)}"/> + </xsl:for-each> + </xsl:param> + + <xsl:param name="URL-vCard"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL[normalize-space() != '']"> + <vcard:hasURL rdf:resource="{normalize-space(.)}"/> + </xsl:for-each> + </xsl:param> + <xsl:param name="Telephone"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice/*[normalize-space() != '']"> + <foaf:phone rdf:resource="tel:+{translate(translate(translate(translate(translate(normalize-space(.),' ',''),'(',''),')',''),'+',''),'.','')}"/> + </xsl:for-each> + </xsl:param> + + <xsl:param name="Telephone-vCard"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice/*[normalize-space() != '']"> + <vcard:hasTelephone rdf:resource="tel:+{translate(translate(translate(translate(translate(normalize-space(.),' ',''),'(',''),')',''),'+',''),'.','')}"/> + </xsl:for-each> + </xsl:param> + + <xsl:param name="Address"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address"> + <xsl:variable name="deliveryPoint" select="normalize-space(string-join(gmd:deliveryPoint/*, ' '))"/> + <xsl:variable name="city" select="normalize-space(gmd:city/*)"/> + <xsl:variable name="administrativeArea" select="normalize-space(gmd:administrativeArea/*)"/> + <xsl:variable name="postalCode" select="normalize-space(gmd:postalCode/*)"/> + <xsl:variable name="country" select="normalize-space(gmd:country/*)"/> + <xsl:if test="$deliveryPoint != '' or $city != '' or $administrativeArea != '' or $postalCode != '' or $country != ''"> + <locn:address> + <locn:Address> + <xsl:if test="$deliveryPoint != ''"> + <locn:thoroughfare><xsl:value-of select="$deliveryPoint"/></locn:thoroughfare> + </xsl:if> + <xsl:if test="$city != ''"> + <locn:postName><xsl:value-of select="$city"/></locn:postName> + </xsl:if> + <xsl:if test="$administrativeArea != ''"> + <locn:adminUnitL2><xsl:value-of select="$administrativeArea"/></locn:adminUnitL2> + </xsl:if> + <xsl:if test="$postalCode != ''"> + <locn:postCode><xsl:value-of select="$postalCode"/></locn:postCode> + </xsl:if> + <xsl:if test="$country != ''"> + <locn:adminUnitL1><xsl:value-of select="$country"/></locn:adminUnitL1> + </xsl:if> + </locn:Address> + </locn:address> + </xsl:if> + </xsl:for-each> + </xsl:param> + + <xsl:param name="Address-vCard"> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address"> + <xsl:variable name="deliveryPoint" select="normalize-space(string-join(gmd:deliveryPoint/*, ' '))"/> + <xsl:variable name="city" select="normalize-space(gmd:city/*)"/> + <xsl:variable name="administrativeArea" select="normalize-space(gmd:administrativeArea/*)"/> + <xsl:variable name="postalCode" select="normalize-space(gmd:postalCode/*)"/> + <xsl:variable name="country" select="normalize-space(gmd:country/*)"/> + <xsl:if test="$deliveryPoint != '' or $city != '' or $administrativeArea != '' or $postalCode != '' or $country != ''"> + <vcard:hasAddress> + <vcard:Address> + <xsl:if test="$deliveryPoint != ''"> + <vcard:street-address><xsl:value-of select="$deliveryPoint"/></vcard:street-address> + </xsl:if> + <xsl:if test="$city != ''"> + <vcard:locality><xsl:value-of select="$city"/></vcard:locality> + </xsl:if> + <xsl:if test="$administrativeArea != ''"> + <vcard:region><xsl:value-of select="$administrativeArea"/></vcard:region> + </xsl:if> + <xsl:if test="$postalCode != ''"> + <vcard:postal-code><xsl:value-of select="$postalCode"/></vcard:postal-code> + </xsl:if> + <xsl:if test="$country != ''"> + <vcard:country-name><xsl:value-of select="$country"/></vcard:country-name> + </xsl:if> + </vcard:Address> + </vcard:hasAddress> + </xsl:if> + </xsl:for-each> + </xsl:param> + + <xsl:param name="ROInfo"> + <xsl:variable name="info"> + <xsl:choose> + <xsl:when test="$IndividualName != ''"> + <rdf:type rdf:resource="{$foaf}Person"/> + </xsl:when> + <xsl:when test="$OrganisationName != ''"> + <rdf:type rdf:resource="{$foaf}Organization"/> + </xsl:when> + <xsl:otherwise> + <rdf:type rdf:resource="{$foaf}Agent"/> + </xsl:otherwise> + </xsl:choose> + + <!-- CAVEAT: The following xsl:if ensures that the agent is typed also as prov:Agent for its + use with the PROV-based approach. The conditions MUST be aligned with the one used later + just before the statement with predicate prov:agent. --> + + <xsl:if test="($ResourceType != 'service' and $role != 'pointOfContact' and $role != 'publisher' and $role != 'author') or $profile = $extended"> + <rdf:type rdf:resource="{$prov}Agent"/> + </xsl:if> + + <xsl:if test="$IndividualName != ''"> + <!-- + <foaf:name xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$IndividualName"/> + </foaf:name> + --> + <xsl:copy-of select="$IndividualName-FOAF"/> + <xsl:if test="$OrganisationName != ''"> + <org:memberOf> + <xsl:choose> + <xsl:when test="$OrganisationURI != ''"> + <foaf:Organization rdf:about="{$OrganisationURI}"> + <!-- + <foaf:name xml:lang="{$MetadataLanguage}"><xsl:value-of select="$OrganisationName"/></foaf:name> + --> + <xsl:copy-of select="$OrganisationName-FOAF"/> + </foaf:Organization> + </xsl:when> + <xsl:otherwise> + <foaf:Organization> + <!-- + <foaf:name xml:lang="{$MetadataLanguage}"><xsl:value-of select="$OrganisationName"/></foaf:name> + --> + <xsl:copy-of select="$OrganisationName-FOAF"/> + </foaf:Organization> + </xsl:otherwise> + </xsl:choose> + </org:memberOf> + </xsl:if> + </xsl:if> + <xsl:if test="$IndividualName = '' and $OrganisationName != ''"> + <!-- + <foaf:name xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$OrganisationName"/> + </foaf:name> + --> + <xsl:copy-of select="$OrganisationName-FOAF"/> + </xsl:if> + <xsl:copy-of select="$Telephone"/> + <xsl:copy-of select="$Email"/> + <xsl:copy-of select="$URL"/> + <xsl:copy-of select="$Address"/> + <!-- + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString"> + <foaf:mbox rdf:resource="mailto:{.}"/> + </xsl:for-each> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL"> + --> + <!-- ?? Should another property be used instead? E.g., foaf:homepage? --> + <!-- + <foaf:workplaceHomepage rdf:resource="{.}"/> + </xsl:for-each> + --> + </xsl:variable> + <xsl:choose> + <xsl:when test="$IndividualURI != ''"> + <rdf:Description rdf:about="{$IndividualURI}"> + <xsl:copy-of select="$info"/> + </rdf:Description> + </xsl:when> + <xsl:when test="$OrganisationURI != ''"> + <rdf:Description rdf:about="{$OrganisationURI}"> + <xsl:copy-of select="$info"/> + </rdf:Description> + </xsl:when> + <xsl:otherwise> + <rdf:Description> + <xsl:copy-of select="$info"/> + </rdf:Description> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:param name="ResponsibleParty"> + <xsl:variable name="info"> + <xsl:choose> + <xsl:when test="$IndividualName != ''"> + <rdf:type rdf:resource="{$vcard}Individual"/> + </xsl:when> + <xsl:when test="$OrganisationName != ''"> + <rdf:type rdf:resource="{$vcard}Organization"/> + </xsl:when> + <xsl:otherwise> + <rdf:type rdf:resource="{$vcard}Kind"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$IndividualName != ''"> + <!-- + <vcard:fn xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$IndividualName"/> + </vcard:fn> + --> + <xsl:copy-of select="$IndividualName-vCard"/> + </xsl:if> + <xsl:if test="$IndividualName != '' and $OrganisationName != ''"> + <!-- + <vcard:organization-name xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$OrganisationName"/> + </vcard:organization-name> + --> + <xsl:copy-of select="$OrganisationName-vCard"/> + </xsl:if> + <xsl:if test="$IndividualName = '' and $OrganisationName != ''"> + <!-- + <vcard:fn xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$OrganisationName"/> + </vcard:fn> + --> + <xsl:copy-of select="$OrganisationNameAsIndividualName-vCard"/> + </xsl:if> + <xsl:copy-of select="$Telephone-vCard"/> + <xsl:copy-of select="$Email-vCard"/> + <xsl:copy-of select="$URL-vCard"/> + <xsl:copy-of select="$Address-vCard"/> + <!-- + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString"> + <vcard:hasEmail rdf:resource="mailto:{.}"/> + </xsl:for-each> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource/gmd:CI_OnlineResource/gmd:linkage/gmd:URL"> + <vcard:hasURL rdf:resource="{.}"/> + </xsl:for-each> + --> + </xsl:variable> + <xsl:choose> + <xsl:when test="$IndividualURI != ''"> + <rdf:Description rdf:about="{$IndividualURI}"> + <xsl:copy-of select="$info"/> + </rdf:Description> + </xsl:when> + <xsl:when test="$OrganisationURI != ''"> + <rdf:Description rdf:about="{$OrganisationURI}"> + <xsl:copy-of select="$info"/> + </rdf:Description> + </xsl:when> + <xsl:otherwise> + <rdf:Description> + <xsl:copy-of select="$info"/> + </rdf:Description> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:choose> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'resourceProvider' and $profile = $extended"> + <geodcatap:resourceProvider> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:resourceProvider> + </xsl:when> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'custodian' and $profile = $extended"> + <geodcatap:custodian> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:custodian> + </xsl:when> + <xsl:when test="$role = 'owner' and $profile = $extended"> + <dct:rightsHolder> + <xsl:copy-of select="$ROInfo"/> + </dct:rightsHolder> + </xsl:when> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'user' and $profile = $extended"> + <geodcatap:user> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:user> + </xsl:when> + <!-- + <xsl:when test="$role = 'user'"> + <prov:wasUsedBy> + <prov:Activity> + <prov:wasAssociatedWith> + <xsl:copy-of select="$ROInfo"/> + </prov:wasAssociatedWith> + </prov:Activity> + </prov:wasUsedBy> + </xsl:when> + --> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'distributor' and $profile = $extended"> + <geodcatap:distributor> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:distributor> + </xsl:when> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'originator' and $profile = $extended"> + <geodcatap:originator> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:originator> + </xsl:when> + <xsl:when test="$role = 'pointOfContact' and ($ResourceType != 'service' or $profile = $extended)"> + <dcat:contactPoint> + <xsl:copy-of select="$ResponsibleParty"/> + </dcat:contactPoint> + </xsl:when> + <!-- + <xsl:when test="$role = 'pointOfContact' and $ResourceType != 'service'"> + <dcat:contactPoint> + <xsl:copy-of select="$ResponsibleParty"/> + </dcat:contactPoint> + </xsl:when> + --> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'principalInvestigator' and $profile = $extended"> + <geodcatap:principalInvestigator> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:principalInvestigator> + </xsl:when> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="$role = 'processor' and $profile = $extended"> + <geodcatap:processor> + <xsl:copy-of select="$ROInfo"/> + </geodcatap:processor> + </xsl:when> + <!-- + <xsl:when test="$role = 'processor'"> + <prov:entityOfInfluence> + <prov:Derivation> + <prov:hadActivity> + <prov:Activity> + <prov:wasAssociatedWith> + <xsl:copy-of select="$ROInfo"/> + </prov:wasAssociatedWith> + </prov:Activity> + </prov:hadActivity> + </prov:Derivation> + </prov:entityOfInfluence> + </xsl:when> + --> + <xsl:when test="$role = 'publisher' and ($ResourceType != 'service' or $profile = $extended)"> + <dct:publisher> + <xsl:copy-of select="$ROInfo"/> + </dct:publisher> + </xsl:when> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <xsl:when test="$role = 'author' and ($ResourceType != 'service' or $profile = $extended)"> + <dct:creator> + <xsl:copy-of select="$ROInfo"/> + </dct:creator> + </xsl:when> + <!-- + <xsl:when test="$role = 'author' and $profile = $extended"> + <dct:creator> + <xsl:copy-of select="$ROInfo"/> + </dct:creator> + </xsl:when> + --> + </xsl:choose> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <xsl:if test="($ResourceType != 'service' and $role != 'pointOfContact' and $role != 'publisher' and $role != 'author') or $profile = $extended"> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <!-- + <xsl:copy-of select="$ResponsibleParty"/> + --> + <xsl:copy-of select="$ROInfo"/> + </prov:agent> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$profile = $extended"> + <xsl:if test="$include-deprecated = 'yes'"> + <dct:type rdf:resource="{$ResponsiblePartyRole}"/> + </xsl:if> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:hadRole> + <dcat:Role rdf:about="{$ResponsiblePartyRole}"/> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + </xsl:if> + + </xsl:template> + + <!-- Metadata point of contact --> + <!-- + <xsl:template name="MetadataPointOfContact" match="gmd:contact/gmd:CI_ResponsibleParty"> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="ResponsiblePartyRole"> + <xsl:value-of select="concat($ResponsiblePartyRoleCodelistUri,'/','pointOfContact')"/> + </xsl:param> + <xsl:param name="OrganisationName"> + <xsl:value-of select="gmd:organisationName/gco:CharacterString"/> + </xsl:param> + <xsl:param name="ResponsibleParty"> + <vcard:Kind> + <vcard:organization-name xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$OrganisationName"/> + </vcard:organization-name> + <xsl:for-each select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress/gco:CharacterString"> + <vcard:hasEmail rdf:resource="mailto:{.}"/> + </xsl:for-each> + </vcard:Kind> + </xsl:param> + <dcat:contactPoint> + <xsl:copy-of select="$ResponsibleParty"/> + </dcat:contactPoint> + <xsl:if test="$profile = $extended"> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <xsl:copy-of select="$ResponsibleParty"/> + </prov:agent> + <dct:type rdf:resource="{$ResponsiblePartyRole}"/> + </prov:Attribution> + </prov:qualifiedAttribution> + </xsl:if> + </xsl:template> + --> + <!-- Resource locator --> + <!-- Old version, applied to the resource (not to the resource distribution) + <xsl:template name="ResourceLocator" match="gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage"> + <xsl:param name="ResourceType"/> + <xsl:choose> + <xsl:when test="$ResourceType = 'dataset' or $ResourceType = 'series'"> + <dcat:landingPage rdf:resource="{gmd:URL}"/> + </xsl:when> + <xsl:when test="$ResourceType = 'service'"> + <foaf:homepage rdf:resource="{gmd:URL}"/> + </xsl:when> + </xsl:choose> + </xsl:template> + --> + <xsl:template mode="iso19139-to-dcatap" name="ResourceLocator" match="gmd:transferOptions/*/gmd:onLine/*/gmd:linkage"> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="ResourceType"/> + <xsl:choose> + <xsl:when test="$ResourceType = 'dataset' or $ResourceType = 'series'"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="../gmd:description/gco:CharacterString"/> + </dct:title> + <dcat:accessURL rdf:resource="{gmd:URL}"/> + </xsl:when> + <!-- + <xsl:when test="$ResourceType = 'service'"> + <foaf:homepage rdf:resource="{gmd:URL}"/> + </xsl:when> + --> + </xsl:choose> + </xsl:template> + + <!-- Coupled resource --> + + <xsl:template mode="iso19139-to-dcatap" name="CoupledResource" match="gmd:identificationInfo[1]/*/srv:operatesOn"> + <xsl:param name="href" select="@xlink:href"/> + <xsl:param name="code"> + <xsl:choose> + <xsl:when test="$CoupledResourceLookUp = 'enabled' and $href != '' and (starts-with($href, 'http://') or starts-with($href, 'https://'))"> + <xsl:value-of select="document($href)//gmd:identificationInfo/*/gmd:citation/*/gmd:identifier/*/gmd:code/gco:CharacterString"/> + </xsl:when> + <xsl:when test="*/gmd:citation/*/gmd:identifier/*/gmd:code/gco:CharacterString != ''"> + <xsl:value-of select="*/gmd:citation/*/gmd:identifier/*/gmd:code/gco:CharacterString"/> + </xsl:when> + <xsl:when test="@uuidref != ''"> + <xsl:value-of select="@uuidref"/> + </xsl:when> + </xsl:choose> + </xsl:param> + <xsl:param name="codespace"> + <xsl:choose> + <xsl:when test="$CoupledResourceLookUp = 'enabled' and $href != '' and (starts-with($href, 'http://') or starts-with($href, 'https://'))"> + <xsl:value-of select="document($href)//gmd:identificationInfo/*/gmd:citation/*/gmd:identifier/*/gmd:codeSpace/gco:CharacterString"/> + </xsl:when> + <xsl:when test="*/gmd:citation/*/gmd:identifier/*/gmd:codeSpace/gco:CharacterString != ''"> + <xsl:value-of select="*/gmd:citation/*/gmd:identifier/*/gmd:codeSpace/gco:CharacterString"/> + </xsl:when> + </xsl:choose> + </xsl:param> + <xsl:param name="resID" select="concat($codespace, $code)"/> + <xsl:param name="uriref" select="@uriref"/> + <xsl:choose> + <!-- The use of @uriref is still under discussion by the INSPIRE MIG. --> + <xsl:when test="$uriref != ''"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$profile = $extended"> + <xsl:if test="$include-deprecated = 'yes'"> + <dct:hasPart> + <dcat:Dataset rdf:about="{@uriref}"/> + </dct:hasPart> + </xsl:if> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:servesDataset> + <dcat:Dataset rdf:about="{@uriref}"/> + </dcat:servesDataset> + </xsl:when> + <xsl:when test="$code != ''"> + <xsl:choose> + <xsl:when test="starts-with($code, 'http://') or starts-with($code, 'https://')"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$profile = $extended"> + <xsl:if test="$include-deprecated = 'yes'"> + <dct:hasPart> + <dcat:Dataset rdf:about="{$code}"/> + </dct:hasPart> + </xsl:if> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:servesDataset> + <dcat:Dataset rdf:about="{$code}"/> + </dcat:servesDataset> + </xsl:when> + <xsl:otherwise> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$profile = $extended"> + <xsl:if test="$include-deprecated = 'yes'"> + <dct:hasPart rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dcat}Dataset"/> + <xsl:choose> + <xsl:when test="starts-with($resID, 'http://') or starts-with($resID, 'https://')"> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$resID"/></dct:identifier> + </xsl:when> + <xsl:otherwise> + <dct:identifier rdf:datatype="{$xsd}string"><xsl:value-of select="$resID"/></dct:identifier> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$href != '' and $href != '' and (starts-with($href, 'http://') or starts-with($href, 'https://'))"> + <foaf:isPrimaryTopicOf> + <dcat:CatalogRecord rdf:about="{$href}"/> + </foaf:isPrimaryTopicOf> + </xsl:if> + </dct:hasPart> + </xsl:if> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:servesDataset rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dcat}Dataset"/> + <xsl:choose> + <xsl:when test="starts-with($resID, 'http://') or starts-with($resID, 'https://')"> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$resID"/></dct:identifier> + </xsl:when> + <xsl:otherwise> + <dct:identifier rdf:datatype="{$xsd}string"><xsl:value-of select="$resID"/></dct:identifier> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$href != '' and $href != '' and (starts-with($href, 'http://') or starts-with($href, 'https://'))"> + <foaf:isPrimaryTopicOf> + <dcat:CatalogRecord rdf:about="{$href}"/> + </foaf:isPrimaryTopicOf> + </xsl:if> + </dcat:servesDataset> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- Spatial data service type --> + <!-- Replaced by param $ServiceType --> + <!-- + <xsl:template match="gmd:identificationInfo/*/srv:serviceType"> + <dct:type rdf:resource="{$SpatialDataServiceTypeCodelistUri}/{gco:LocalName}"/> + </xsl:template> + --> + <!-- Conformity --> + <xsl:template mode="iso19139-to-dcatap" name="Conformity" match="gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:specification/gmd:CI_Citation"> + <xsl:param name="ResourceUri"/> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="Conformity"/> + + <xsl:variable name="specUri" select="normalize-space(gmd:title/gmx:Anchor/@xlink:href)"/> + <xsl:variable name="specTitle"> + <xsl:for-each select="gmd:title"> + <!-- + <dct:title xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></dct:title> + --> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dct:title> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:title</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="specinfo"> + <!-- + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmd:title/gco:CharacterString"/> + </dct:title> + --> + <xsl:copy-of select="$specTitle"/> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:date/gmd:CI_Date"/> + </xsl:variable> + <!-- + <xsl:variable name="specinfo"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmd:title/gco:CharacterString"/> + </dct:title> + <xsl:apply-templates select="gmd:date/gmd:CI_Date"/> + </xsl:variable> + --> + <!-- + <xsl:variable name="degree"> + <xsl:choose> + <xsl:when test="../../gmd:pass/gco:Boolean = 'true'"> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/conformant')"/> + </xsl:when> + <xsl:when test="../../gmd:pass/gco:Boolean = 'false'"> + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/notConformant')"/> + </xsl:when> + <xsl:otherwise> + + <xsl:when test="../../gmd:pass/gco:Boolean = ''"> + + <xsl:value-of select="concat($DegreeOfConformityCodelistUri,'/notEvaluated')"/> + + </xsl:when> + + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + --> + <xsl:if test="../../gmd:pass/gco:Boolean = 'true'"> + <xsl:choose> + <xsl:when test="$specUri != ''"> + <dct:conformsTo> + <dct:Standard rdf:about="{$specUri}"/> + </dct:conformsTo> + <!-- + <dct:conformsTo> + <rdf:Description rdf:about="{$specUri}"> + <xsl:copy-of select="$specinfo"/> + </rdf:Description> + </dct:conformsTo> + --> + </xsl:when> + <xsl:when test="../@xlink:href and ../@xlink:href != ''"> + <dct:conformsTo> + <dct:Standard rdf:about="{../@xlink:href}"/> + </dct:conformsTo> + <!-- + <dct:conformsTo> + <rdf:Description rdf:about="{../@xlink:href}"> + <xsl:copy-of select="$specinfo"/> + </rdf:Description> + </dct:conformsTo> + --> + </xsl:when> + <xsl:otherwise> + <dct:conformsTo rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}Standard"/> + <xsl:copy-of select="$specinfo"/> + </dct:conformsTo> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <!-- + <xsl:if test="$Conformity != '' and $ResourceUri = ''"> + --> + <xsl:copy-of select="$Conformity"/> + <!-- + </xsl:if> + --> + <!-- + <xsl:choose> + <xsl:when test="../@xlink:href and ../@xlink:href != ''"> + <wdrs:describedby> + <earl:Assertion> + <earl:test> + <rdf:Description rdf:about="{../@xlink:href}"> + <xsl:copy-of select="$specinfo"/> + </rdf:Description> + </earl:test> + <earl:result> + <earl:TestResult> + <earl:outcome rdf:resource="{$degree}"/> + </earl:TestResult> + </earl:result> + </earl:Assertion> + </wdrs:describedby> + </xsl:when> + <xsl:otherwise> + <wdrs:describedby> + <earl:Assertion> + <earl:test rdf:parseType="Resource"> + <xsl:copy-of select="$specinfo"/> + </earl:test> + <earl:result> + <earl:TestResult> + <earl:outcome rdf:resource="{$degree}"/> + </earl:TestResult> + </earl:result> + </earl:Assertion> + </wdrs:describedby> + </xsl:otherwise> + </xsl:choose> + --> + <!-- + </xsl:if> + --> + </xsl:template> + + <!-- Geographic extent --> + + <xsl:template mode="iso19139-to-dcatap" name="GeographicExtent" match="gmd:identificationInfo[1]/*/*[self::gmd:extent|self::srv:extent]/*/gmd:geographicElement"> + <xsl:param name="MetadataLanguage"/> + <!-- + + <xsl:otherwise> + <dct:spatial> + <dct:Location> + <xsl:for-each select="gmd:description"> + <rdfs:label xml:lang="{$MetadataLanguage}"><xsl:value-of select="gco:CharacterString"/></rdfs:label> + </xsl:for-each> + --> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:EX_GeographicDescription/gmd:geographicIdentifier/*"> + <xsl:with-param name="MetadataLanguage" select="$MetadataLanguage"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:EX_GeographicBoundingBox"/> + <!-- + </dct:Location> + </dct:spatial> + </xsl:otherwise> + </xsl:choose> + --> + </xsl:template> + + <!-- Geographic identifier --> + + <xsl:template mode="iso19139-to-dcatap" name="GeographicIdentifier" match="gmd:EX_GeographicDescription/gmd:geographicIdentifier/*"> + <xsl:param name="MetadataLanguage"/> + <!-- + <xsl:param name="GeoCode" select="gmd:code/*[self::gco:CharacterString|self::gmx:Anchor/@xlink:href]"/> + <xsl:param name="GeoURI" select="gmd:code/gmx:Anchor/@xlink:href"/> + --> + <xsl:param name="GeoCode"> + <xsl:choose> + <xsl:when test="gmd:code/gco:CharacterString"> + <xsl:value-of select="gmd:code/gco:CharacterString"/> + </xsl:when> + <xsl:when test="gmd:code/gmx:Anchor"> + <xsl:value-of select="gmd:code/gmx:Anchor/@xlink:href"/> + </xsl:when> + </xsl:choose> + </xsl:param> + + <xsl:param name="GeoURI"> + <xsl:if test="starts-with($GeoCode,'http://') or starts-with($GeoCode,'https://')"> + <xsl:value-of select="$GeoCode"/> + </xsl:if> + </xsl:param> + <xsl:param name="GeoURN"> + <xsl:if test="starts-with($GeoCode,'urn:')"> + <xsl:value-of select="$GeoCode"/> + </xsl:if> + </xsl:param> + + <xsl:choose> + <xsl:when test="$GeoURI != ''"> + <!-- + <xsl:choose> + <xsl:when test="gmd:EX_GeographicBoundingBox"> + <dct:spatial> + <dct:Location rdf:about="{$GeoURI}"> + <xsl:if test="$GeoCode != ''"> + <rdfs:label xml:lang="{$MetadataLanguage}"><xsl:value-of select="$GeoCode"/></rdfs:label> + </xsl:if> + <xsl:apply-templates select="gmd:EX_GeographicBoundingBox"/> + </dct:Location> + </dct:spatial> + </xsl:when> + <xsl:otherwise> + --> + <dct:spatial> + <dct:Location rdf:about="{$GeoURI}"/> + </dct:spatial> + <!-- + </xsl:otherwise> + </xsl:choose> + --> + </xsl:when> + <xsl:when test="$GeoCode != ''"> + <dct:spatial rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}Location"/> + <!-- + <rdfs:seeAlso rdf:parseType="Resource"> + --> + <xsl:choose> + <xsl:when test="$GeoURN != ''"> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$GeoURN"/></dct:identifier> + </xsl:when> + <xsl:otherwise> + <skos:prefLabel xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$GeoCode"/> + </skos:prefLabel> + </xsl:otherwise> + </xsl:choose> + <xsl:for-each select="gmd:authority/gmd:CI_Citation"> + <skos:inScheme> + <skos:ConceptScheme> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmd:title/*[self::gco:CharacterString|self::gmx:Anchor]"/> + </dct:title> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:date/gmd:CI_Date"/> + </skos:ConceptScheme> + </skos:inScheme> + </xsl:for-each> + <!-- + </rdfs:seeAlso> + --> + </dct:spatial> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- Geographic bounding box --> + + <!-- + <xsl:template name="GeographicBoundingBox" match="gmd:identificationInfo[1]/*/*[self::gmd:extent|self::srv:extent]/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox"> + --> + <xsl:template mode="iso19139-to-dcatap" name="GeographicBoundingBox" match="gmd:EX_GeographicBoundingBox"> + <xsl:param name="north" select="gmd:northBoundLatitude/gco:Decimal"/> + <xsl:param name="east" select="gmd:eastBoundLongitude/gco:Decimal"/> + <xsl:param name="south" select="gmd:southBoundLatitude/gco:Decimal"/> + <xsl:param name="west" select="gmd:westBoundLongitude/gco:Decimal"/> + + <!-- Bbox as a dct:Box --> + <!-- Need to check whether this is correct - in particular, the "projection" parameter --> + <!-- + <xsl:param name="DCTBox">northlimit=<xsl:value-of select="$north"/>; eastlimit=<xsl:value-of select="$east"/>; southlimit=<xsl:value-of select="$south"/>; westlimit=<xsl:value-of select="$west"/>; projection=EPSG:<xsl:value-of select="$srid"/></xsl:param> + --> + + <!-- Bbox as GML (GeoSPARQL) --> + + <xsl:param name="GMLLiteral"> + <xsl:choose> + <xsl:when test="$SrsUri = $Crs84Uri"><gml:Envelope srsName="<xsl:value-of select="$SrsUri"/>"><gml:lowerCorner><xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$south"/></gml:lowerCorner><gml:upperCorner><xsl:value-of select="$east"/><xsl:text> </xsl:text><xsl:value-of select="$north"/></gml:upperCorner></gml:Envelope></xsl:when> + <xsl:when test="$SrsAxisOrder = 'LonLat'"><gml:Envelope srsName="<xsl:value-of select="$SrsUri"/>"><gml:lowerCorner><xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$south"/></gml:lowerCorner><gml:upperCorner><xsl:value-of select="$east"/><xsl:text> </xsl:text><xsl:value-of select="$north"/></gml:upperCorner></gml:Envelope></xsl:when> + <xsl:when test="$SrsAxisOrder = 'LatLon'"><gml:Envelope srsName="<xsl:value-of select="$SrsUri"/>"><gml:lowerCorner><xsl:value-of select="$south"/><xsl:text> </xsl:text><xsl:value-of select="$west"/></gml:lowerCorner><gml:upperCorner><xsl:value-of select="$north"/><xsl:text> </xsl:text><xsl:value-of select="$east"/></gml:upperCorner></gml:Envelope></xsl:when> + </xsl:choose> + </xsl:param> + + <!-- Bbox as WKT (GeoSPARQL) --> + + <xsl:param name="WKTLiteral"> + <xsl:choose> + <xsl:when test="$SrsUri = $Crs84Uri">POLYGON((<xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$north"/>,<xsl:value-of select="$east"/><xsl:text> </xsl:text><xsl:value-of select="$north"/>,<xsl:value-of select="$east"/><xsl:text> </xsl:text><xsl:value-of select="$south"/>,<xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$south"/>,<xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$north"/>))</xsl:when> + <xsl:when test="$SrsAxisOrder = 'LonLat'"><<xsl:value-of select="$SrsUri"/>> POLYGON((<xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$north"/>,<xsl:value-of select="$east"/><xsl:text> </xsl:text><xsl:value-of select="$north"/>,<xsl:value-of select="$east"/><xsl:text> </xsl:text><xsl:value-of select="$south"/>,<xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$south"/>,<xsl:value-of select="$west"/><xsl:text> </xsl:text><xsl:value-of select="$north"/>))</xsl:when> + <xsl:when test="$SrsAxisOrder = 'LatLon'"><<xsl:value-of select="$SrsUri"/>> POLYGON((<xsl:value-of select="$north"/><xsl:text> </xsl:text><xsl:value-of select="$west"/>,<xsl:value-of select="$north"/><xsl:text> </xsl:text><xsl:value-of select="$east"/>,<xsl:value-of select="$south"/><xsl:text> </xsl:text><xsl:value-of select="$east"/>,<xsl:value-of select="$south"/><xsl:text> </xsl:text><xsl:value-of select="$west"/>,<xsl:value-of select="$north"/><xsl:text> </xsl:text><xsl:value-of select="$west"/>))</xsl:when> + </xsl:choose> + </xsl:param> + + <!-- Bbox as GeoJSON --> + + <!-- Revised to ensure compliance with RFC 7946 --> + <xsl:param name="GeoJSONLiteral"> + <xsl:choose> + <!-- GeoJSON compliant with RFC 7946 --> + <xsl:when test="$SrsUri = $Crs84Uri">{"type":"Polygon","coordinates":[[[<xsl:value-of select="$west"/><xsl:text>,</xsl:text><xsl:value-of select="$north"/>],[<xsl:value-of select="$east"/><xsl:text>,</xsl:text><xsl:value-of select="$north"/>],[<xsl:value-of select="$east"/><xsl:text>,</xsl:text><xsl:value-of select="$south"/>],[<xsl:value-of select="$west"/><xsl:text>,</xsl:text><xsl:value-of select="$south"/>],[<xsl:value-of select="$west"/><xsl:text>,</xsl:text><xsl:value-of select="$north"/>]]]}</xsl:when> + <!-- GeoJSON compliant with original specification, where CRSs different from CRS84 were supported --> + <xsl:otherwise>{"type":"Polygon","crs":{"type":"name","properties":{"name":"<xsl:value-of select="$SrsUrn"/>"}},"coordinates":[[[<xsl:value-of select="$west"/><xsl:text>,</xsl:text><xsl:value-of select="$north"/>],[<xsl:value-of select="$east"/><xsl:text>,</xsl:text><xsl:value-of select="$north"/>],[<xsl:value-of select="$east"/><xsl:text>,</xsl:text><xsl:value-of select="$south"/>],[<xsl:value-of select="$west"/><xsl:text>,</xsl:text><xsl:value-of select="$south"/>],[<xsl:value-of select="$west"/><xsl:text>,</xsl:text><xsl:value-of select="$north"/>]]]}</xsl:otherwise> + </xsl:choose> + </xsl:param> + + <dct:spatial rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}Location"/> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <!-- Recommended geometry encodings --> + <locn:geometry rdf:datatype="{$gsp}wktLiteral"><xsl:value-of select="$WKTLiteral"/></locn:geometry> + <locn:geometry rdf:datatype="{$gsp}gmlLiteral"><xsl:value-of select="$GMLLiteral"/></locn:geometry> + <!-- Additional geometry encodings --> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <locn:geometry rdf:datatype="{$geojsonMediaTypeUri}"><xsl:value-of select="$GeoJSONLiteral"/></locn:geometry> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <locn:geometry rdf:datatype="{$gsp}geoJSONLiteral"><xsl:value-of select="$GeoJSONLiteral"/></locn:geometry> + <!-- + <locn:geometry rdf:datatype="{$dct}Box"><xsl:value-of select="$DCTBox"/></locn:geometry> + --> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <!-- Recommended geometry encodings --> + <dcat:bbox rdf:datatype="{$gsp}wktLiteral"><xsl:value-of select="$WKTLiteral"/></dcat:bbox> + <dcat:bbox rdf:datatype="{$gsp}gmlLiteral"><xsl:value-of select="$GMLLiteral"/></dcat:bbox> + <!-- Additional geometry encodings --> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <dcat:bbox rdf:datatype="{$geojsonMediaTypeUri}"><xsl:value-of select="$GeoJSONLiteral"/></dcat:bbox> + </xsl:if> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <dcat:bbox rdf:datatype="{$gsp}geoJSONLiteral"><xsl:value-of select="$GeoJSONLiteral"/></dcat:bbox> + </dct:spatial> + + </xsl:template> + + <!-- Temporal extent --> + + <xsl:template mode="iso19139-to-dcatap" name="TemporalExtent" match="gmd:identificationInfo/*/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent"> + <!-- + <xsl:for-each select="gmd:extent/gml:TimeInstant|gmd:extent/gml:TimePeriod"> + <xsl:if test="local-name(.) = 'TimeInstant' or ( local-name(.) = 'TimePeriod' and gml:beginPosition and gml:endPosition )"> + --> + <xsl:for-each select="gmd:extent/*[local-name() = 'TimeInstant']|gmd:extent/*[local-name() = 'TimePeriod']"> + <xsl:if test="local-name(.) = 'TimeInstant' or ( local-name(.) = 'TimePeriod' and *[local-name() = 'beginPosition'] and *[local-name() = 'endPosition'] )"> + <!-- + <xsl:variable name="dctperiod"> + <xsl:choose> + <xsl:when test="local-name(.) = 'TimeInstant'">start=<xsl:value-of select="gml:timePosition"/>; end=<xsl:value-of select="gml:timePosition"/></xsl:when> + <xsl:otherwise>start=<xsl:value-of select="gml:beginPosition"/>; end=<xsl:value-of select="gml:endPosition"/></xsl:otherwise> + </xsl:choose> + </xsl:variable> + --> + <xsl:variable name="dateStart"> + <xsl:choose> + <!-- + <xsl:when test="local-name(.) = 'TimeInstant'"><xsl:value-of select="gml:timePosition"/></xsl:when> + <xsl:otherwise><xsl:value-of select="gml:beginPosition"/></xsl:otherwise> + --> + <xsl:when test="local-name(.) = 'TimeInstant'"><xsl:value-of select="normalize-space(*[local-name() = 'timePosition'])"/></xsl:when> + <xsl:otherwise><xsl:value-of select="normalize-space(*[local-name() = 'beginPosition'])"/></xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="dateStart-data-type"> + <xsl:call-template name="DateDataType"> + <xsl:with-param name="date" select="$dateStart"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="dateEnd"> + <xsl:choose> + <!-- + <xsl:when test="local-name(.) = 'TimeInstant'"><xsl:value-of select="gml:timePosition"/></xsl:when> + <xsl:otherwise><xsl:value-of select="gml:endPosition"/></xsl:otherwise> + --> + <xsl:when test="local-name(.) = 'TimeInstant'"><xsl:value-of select="normalize-space(*[local-name() = 'timePosition'])"/></xsl:when> + <xsl:otherwise><xsl:value-of select="normalize-space(*[local-name() = 'endPosition'])"/></xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="dateEnd-data-type"> + <xsl:call-template name="DateDataType"> + <xsl:with-param name="date" select="$dateEnd"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="$dateStart != '' or $dateEnd != ''"> + <dct:temporal> + <dct:PeriodOfTime> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <xsl:if test="$dateStart != ''"> + <schema:startDate rdf:datatype="{$xsd}{$dateStart-data-type}"><xsl:value-of select="$dateStart"/></schema:startDate> + </xsl:if> + <xsl:if test="$dateEnd != ''"> + <schema:endDate rdf:datatype="{$xsd}{$dateStart-data-type}"><xsl:value-of select="$dateEnd"/></schema:endDate> + </xsl:if> + </xsl:if> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <xsl:if test="$dateStart != ''"> + <dcat:startDate rdf:datatype="{$xsd}{$dateEnd-data-type}"><xsl:value-of select="$dateStart"/></dcat:startDate> + </xsl:if> + <xsl:if test="$dateEnd != ''"> + <dcat:endDate rdf:datatype="{$xsd}{$dateEnd-data-type}"><xsl:value-of select="$dateEnd"/></dcat:endDate> + </xsl:if> + </dct:PeriodOfTime> + </dct:temporal> + </xsl:if> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- Dates of publication, last revision, creation --> + + <xsl:template mode="iso19139-to-dcatap" name="ResourceDates" match="gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:date/gmd:CI_Date"/> + </xsl:template> + + <!-- Generic date template --> + + <xsl:template mode="iso19139-to-dcatap" name="Dates" match="gmd:date/gmd:CI_Date"> + <xsl:param name="date"> + <xsl:value-of select="normalize-space(gmd:date/gco:Date)"/> + </xsl:param> + <xsl:param name="type"> + <xsl:value-of select="gmd:dateType/gmd:CI_DateTypeCode/@codeListValue"/> + </xsl:param> + <xsl:param name="data-type"> + <xsl:call-template name="DateDataType"> + <xsl:with-param name="date" select="$date"/> + </xsl:call-template> + </xsl:param> + <xsl:if test="$date != ''"> + <xsl:choose> + <xsl:when test="$type = 'publication'"> + <dct:issued rdf:datatype="{$xsd}{$data-type}"> + <xsl:value-of select="$date"/> + </dct:issued> + </xsl:when> + <xsl:when test="$type = 'revision'"> + <dct:modified rdf:datatype="{$xsd}{$data-type}"> + <xsl:value-of select="$date"/> + </dct:modified> + </xsl:when> + <xsl:when test="$type = 'creation' and $profile = $extended"> + <dct:created rdf:datatype="{$xsd}{$data-type}"> + <xsl:value-of select="$date"/> + </dct:created> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:template> + + <!-- Generic date data type template --> + + <xsl:template name="DateDataType"> + <xsl:param name="date"/> + <xsl:choose> + <xsl:when test="string-length($date) = 4"> + <xsl:text>gYear</xsl:text> + </xsl:when> + <xsl:when test="string-length($date) = 10"> + <xsl:text>date</xsl:text> + </xsl:when> + <xsl:when test="string-length($date) > 10"> + <xsl:text>dateTime</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>date</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Constraints related to access and use --> + + <xsl:template mode="iso19139-to-dcatap" name="ConstraintsRelatedToAccessAndUse" match="gmd:identificationInfo[1]/*/gmd:resourceConstraints/*"> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="LimitationsOnPublicAccess"> + <xsl:value-of select="gmd:MD_LegalConstraints/gmd:otherConstraints/*"/> + </xsl:param> + <xsl:param name="LimitationsOnPublicAccessCode"> + <xsl:value-of select="gmd:MD_LegalConstraints/gmd:otherConstraints/*/@codeListValue"/> + </xsl:param> + <xsl:param name="LimitationsOnPublicAccessURL"> + <xsl:value-of select="gmd:MD_LegalConstraints/gmd:otherConstraints/*/@xlink:href"/> + </xsl:param> + + <!-- DEPRECATED: This mapping is not compliant with the 2017 edition of the INSPIRE Metadata + Technical Guidelines, where use conditions are specified instead by element + gmd:useConstraints (the use of gmd:useLimitation for this purpose has been + recognised as an error, as this element is rather about "fit for purpose"). + + The mapping has been however kept active for backward compatibility, waiting + for being revised (e.g., mapped to a usage note) or dropped. + --> + + <xsl:if test="$include-deprecated = 'yes'"> + + <xsl:for-each select="gmd:useLimitation"> + <xsl:choose> + <!-- In case the rights/licence URL IS NOT provided --> + <xsl:when test="normalize-space(gco:CharacterString) != ''"> + <dct:license> + <dct:LicenseDocument> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:LicenseDocument> + </dct:license> + <!-- + <dct:rights> + <dct:RightsStatement> + <rdfs:label xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></rdfs:label> + </dct:RightsStatement> + </dct:rights> + --> + </xsl:when> + <xsl:when test="gmd:MD_RestrictionCode"> + <xsl:variable name="use-limitation-code" select="normalize-space(@codeListValue)"/> + <xsl:variable name="use-limitation-text"> + <xsl:choose> + <xsl:when test="normalize-space(.) != ''"> + <xsl:value-of select="normalize-space(.)"/> + </xsl:when> + <xsl:when test="$use-limitation-code != ''"> + <xsl:value-of select="$use-limitation-code"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + <dct:license> + <dct:LicenseDocument> + <xsl:if test="$use-limitation-code != ''"> + <dct:identifier rdf:datatype="{$xsd}string"><xsl:value-of select="$use-limitation-code"/></dct:identifier> + </xsl:if> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="$use-limitation-text"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:LicenseDocument> + </dct:license> + <!-- + <dct:rights> + <dct:RightsStatement> + <rdfs:label xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></rdfs:label> + </dct:RightsStatement> + </dct:rights> + --> + </xsl:when> + <!-- In case the rights/licence URL IS provided --> + <xsl:when test="gmx:Anchor/@xlink:href"> + <dct:license> + <dct:LicenseDocument rdf:about="{gmx:Anchor/@xlink:href}"/> + </dct:license> + <!-- + <dct:license> + <dct:LicenseDocument rdf:about="{gmx:Anchor/@xlink:href}"> + <rdfs:label xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gmx:Anchor)"/></rdfs:label> + </dct:LicenseDocument> + </dct:license> + --> + </xsl:when> + </xsl:choose> + </xsl:for-each> + + </xsl:if> + + <!-- Mapping added for compliance with the 2017 edition of the INSPIRE Metadata Technical Guidelines --> + <xsl:for-each select="gmd:otherConstraints[../gmd:useConstraints]"> + <xsl:choose> + <!-- In case the rights/licence URL IS NOT provided --> + <xsl:when test="normalize-space(gco:CharacterString) != ''"> + <dct:license> + <dct:LicenseDocument> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:LicenseDocument> + </dct:license> + </xsl:when> + <xsl:when test="gmd:MD_RestrictionCode"> + <xsl:variable name="use-constraints-code" select="normalize-space(@codeListValue)"/> + <xsl:variable name="use-constraints-text"> + <xsl:choose> + <xsl:when test="normalize-space(.) != ''"> + <xsl:value-of select="normalize-space(.)"/> + </xsl:when> + <xsl:when test="$use-constraints-code != ''"> + <xsl:value-of select="$use-constraints-code"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + <dct:license> + <dct:LicenseDocument> + <xsl:if test="$use-constraints-code != ''"> + <dct:identifier rdf:datatype="{$xsd}string"><xsl:value-of select="$use-constraints-code"/></dct:identifier> + </xsl:if> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="$use-constraints-text"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:LicenseDocument> + </dct:license> + </xsl:when> + <!-- In case the rights/licence URL IS provided --> + <xsl:when test="gmx:Anchor/@xlink:href"> + <dct:license> + <dct:LicenseDocument rdf:about="{gmx:Anchor/@xlink:href}"/> + </dct:license> + </xsl:when> + </xsl:choose> + </xsl:for-each> + + <!-- Mapping revised for compliance with the 2017 edition of the INSPIRE Metadata Technical Guidelines --> + <xsl:for-each select="gmd:otherConstraints[../gmd:accessConstraints]"> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- + <xsl:if test="$profile = $extended"> + --> + <xsl:choose> + <!-- In case the rights/licence URL IS NOT provided --> + <xsl:when test="normalize-space(gco:CharacterString) != ''"> + <dct:accessRights> + <dct:RightsStatement> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="normalize-space(gco:CharacterString)"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:RightsStatement> + </dct:accessRights> + </xsl:when> + <xsl:when test="gmd:MD_RestrictionCode"> + <xsl:variable name="access-constraints-code" select="normalize-space(@codeListValue)"/> + <xsl:variable name="access-constraints-text"> + <xsl:choose> + <xsl:when test="normalize-space(.) != ''"> + <xsl:value-of select="normalize-space(.)"/> + </xsl:when> + <xsl:when test="$access-constraints-code != ''"> + <xsl:value-of select="$access-constraints-code"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + <dct:accessRights> + <dct:RightsStatement> + <xsl:if test="$access-constraints-code != ''"> + <dct:identifier rdf:datatype="{$xsd}string"><xsl:value-of select="$access-constraints-code"/></dct:identifier> + </xsl:if> + <dct:description xml:lang="{$MetadataLanguage}"><xsl:value-of select="$access-constraints-text"/></dct:description> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:description</xsl:with-param> + </xsl:call-template> + </dct:RightsStatement> + </dct:accessRights> + </xsl:when> + <!-- In case the rights/licence URL IS provided --> + <xsl:when test="gmx:Anchor/@xlink:href"> + <dct:accessRights> + <dct:RightsStatement rdf:about="{gmx:Anchor/@xlink:href}"/> + </dct:accessRights> + </xsl:when> + </xsl:choose> + <!-- + </xsl:if> + --> + </xsl:for-each> + <!-- + <xsl:for-each select="gmd:accessConstraints"> + <dct:accessRights rdf:resource="{$MD_RestrictionCode}_{gmd:MD_RestrictionCode/@codeListValue}"/> + </xsl:for-each> + <xsl:for-each select="gmd:classification"> + <dct:accessRights rdf:resource="{$MD_ClassificationCode}_{gmd:MD_ClassificationCode/@codeListValue}"/> + </xsl:for-each> + --> + </xsl:template> + + <!-- Keyword --> + + <xsl:template mode="iso19139-to-dcatap" name="Keyword" match="gmd:identificationInfo/*/gmd:descriptiveKeywords/gmd:MD_Keywords"> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="ResourceType"/> + <xsl:param name="ServiceType"/> + <xsl:param name="OriginatingControlledVocabularyURI" select="normalize-space(gmd:thesaurusName/gmd:CI_Citation/gmd:title/gmx:Anchor/@xlink:href)"/> + <xsl:param name="OriginatingControlledVocabulary"> + <!-- + <xsl:for-each select="gmd:thesaurusName/gmd:CI_Citation"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmd:title/gco:CharacterString"/> + </dct:title> + <xsl:apply-templates select="gmd:date/gmd:CI_Date"/> + </xsl:for-each> + --> + <xsl:for-each select="gmd:thesaurusName/gmd:CI_Citation"> + <xsl:for-each select="gmd:title"> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dct:title> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dct:title</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + <xsl:if test="$profile = $extended"> + <xsl:apply-templates mode="iso19139-to-dcatap" + select="gmd:date/gmd:CI_Date"/> + </xsl:if> + </xsl:for-each> + </xsl:param> + <xsl:param name="ConceptScheme"> + <xsl:choose> + <xsl:when test="$OriginatingControlledVocabularyURI != ''"> + <skos:ConceptScheme rdf:about="{$OriginatingControlledVocabularyURI}"> + <xsl:copy-of select="$OriginatingControlledVocabulary"/> + </skos:ConceptScheme> + </xsl:when> + <xsl:otherwise> + <skos:ConceptScheme> + <xsl:copy-of select="$OriginatingControlledVocabulary"/> + </skos:ConceptScheme> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="inScheme"> + <xsl:choose> + <xsl:when test="$OriginatingControlledVocabularyURI != ''"> + <skos:inScheme rdf:resource="{$OriginatingControlledVocabularyURI}"/> + </xsl:when> + <xsl:otherwise> + <skos:inScheme> + <xsl:copy-of select="$ConceptScheme"/> + </skos:inScheme> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:for-each select="gmd:keyword[normalize-space(gco:CharacterString) != '' or normalize-space(gmx:Anchor/@xlink:href) != '']"> + <xsl:variable name="lckw" select="translate(*[self::gco:CharacterString|self::gmx:Anchor],$uppercase,$lowercase)"/> + <xsl:choose> + <xsl:when test="normalize-space($OriginatingControlledVocabulary) = '' and not( gmx:Anchor/@xlink:href and ( starts-with(gmx:Anchor/@xlink:href, 'http://') or starts-with(gmx:Anchor/@xlink:href, 'https://') ) )"> + <xsl:choose> + <xsl:when test="$ResourceType = 'service'"> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:keyword xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dcat:keyword> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dcat:keyword</xsl:with-param> + </xsl:call-template> + <xsl:if test="$profile = $extended"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <dc:subject xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dc:subject> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dc:subject</xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <dcat:keyword xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(*[self::gco:CharacterString|self::gmx:Anchor])"/> + </dcat:keyword> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">dcat:keyword</xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <!-- In case the concept's URI is NOT provided --> + <xsl:when test="gco:CharacterString"> + <xsl:choose> + <xsl:when test="$ResourceType != 'service'"> + <dcat:theme rdf:parseType="Resource"> + <rdf:type rdf:resource="{$skos}Concept"/> + <skos:prefLabel xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(gco:CharacterString)"/> + </skos:prefLabel> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">skos:prefLabel</xsl:with-param> + </xsl:call-template> + <xsl:copy-of select="$inScheme"/> + <!-- + <skos:inScheme> + <skos:ConceptScheme> + <xsl:copy-of select="$OriginatingControlledVocabulary"/> + </skos:ConceptScheme> + </skos:inScheme> + --> + </dcat:theme> + </xsl:when> + <xsl:otherwise> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:theme rdf:parseType="Resource"> + <rdf:type rdf:resource="{$skos}Concept"/> + <skos:prefLabel xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(gco:CharacterString)"/> + </skos:prefLabel> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">skos:prefLabel</xsl:with-param> + </xsl:call-template> + <xsl:copy-of select="$inScheme"/> + <!-- + <skos:inScheme> + <skos:ConceptScheme> + <xsl:copy-of select="$OriginatingControlledVocabulary"/> + </skos:ConceptScheme> + </skos:inScheme> + --> + </dcat:theme> + <xsl:if test="$profile = $extended"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <dct:subject rdf:parseType="Resource"> + <rdf:type rdf:resource="{$skos}Concept"/> + <skos:prefLabel xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="normalize-space(gco:CharacterString)"/> + </skos:prefLabel> + <xsl:call-template name="LocalisedString"> + <xsl:with-param name="term">skos:prefLabel</xsl:with-param> + </xsl:call-template> + <xsl:copy-of select="$inScheme"/> + <!-- + <skos:inScheme> + <skos:ConceptScheme> + <xsl:copy-of select="$OriginatingControlledVocabulary"/> + </skos:ConceptScheme> + </skos:inScheme> + --> + </dct:subject> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- In case the concept's URI is provided --> + <xsl:when test="gmx:Anchor/@xlink:href"> + <xsl:choose> + <xsl:when test="$ResourceType != 'service'"> + <dcat:theme rdf:resource="{gmx:Anchor/@xlink:href}"/> + <!-- + <skos:Concept rdf:about="{gmx:Anchor/@xlink:href}"> + <skos:prefLabel xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="gmx:Anchor"/> + </skos:prefLabel> + <skos:inScheme> + <skos:ConceptScheme> + <xsl:copy-of select="$OriginatingControlledVocabulary"/> + </skos:ConceptScheme> + </skos:inScheme> + </skos:Concept> + --> + </xsl:when> + <xsl:otherwise> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <dcat:theme rdf:resource="{gmx:Anchor/@xlink:href}"/> + <xsl:if test="$profile = $extended"> + <!-- DEPRECATED: Mapping kept for backward compatibility with GeoDCAT-AP v1.* --> + <xsl:if test="$include-deprecated = 'yes'"> + <dct:subject rdf:resource="{gmx:Anchor/@xlink:href}"/> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <!-- Topic category --> + + <xsl:template mode="iso19139-to-dcatap" name="TopicCategory" match="gmd:identificationInfo/*/gmd:topicCategory"> + <xsl:param name="TopicCategory"><xsl:value-of select="normalize-space(gmd:MD_TopicCategoryCode)"/></xsl:param> + <xsl:if test="$TopicCategory != ''"> + <geodcatap:topicCategory rdf:resource="{$TopicCategoryCodelistUri}/{$TopicCategory}"/> + </xsl:if> + </xsl:template> + + <!-- Spatial resolution (unstable - to be replaced with a standard-based solution, when available) --> + + <xsl:template mode="iso19139-to-dcatap" name="SpatialResolution" match="gmd:identificationInfo/*/gmd:spatialResolution/gmd:MD_Resolution"> + <!-- dcat:granularity is deprecated --> + <!-- + <xsl:for-each select="gmd:distance/gco:Distance"> + <dcat:granularity rdf:datatype="{$xsd}string"><xsl:value-of select="."/> <xsl:value-of select="@uom"/></dcat:granularity> + </xsl:for-each> + <xsl:for-each select="gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator"> + <dcat:granularity rdf:datatype="{$xsd}string">1/<xsl:value-of select="gco:Integer"/></dcat:granularity> + </xsl:for-each> + --> + <xsl:for-each select="gmd:distance/gco:Distance"> + <xsl:variable name="UoM"> + <xsl:choose> + <xsl:when test="@uom = 'EPSG::9001' or @uom = 'urn:ogc:def:uom:EPSG::9001' or @uom = 'urn:ogc:def:uom:UCUM::m' or @uom = 'urn:ogc:def:uom:OGC::m'"> + <xsl:value-of select="concat('m',' (',@uom,')')"/> + </xsl:when> + <xsl:when test="@uom = 'EPSG::9002' or @uom = 'urn:ogc:def:uom:EPSG::9002' or @uom = 'urn:ogc:def:uom:UCUM::[ft_i]' or @uom = 'urn:ogc:def:uom:OGC::[ft_i]'"> + <xsl:value-of select="concat('ft',' (',@uom,')')"/> + </xsl:when> + <xsl:when test="starts-with(@uom, 'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/uom/ML_gmxUom.xml#')"> + <xsl:value-of select="concat(substring-after(@uom, 'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/uom/ML_gmxUom.xml#'),' (',@uom,')')"/> + </xsl:when> + <!-- To be completed --> + <xsl:otherwise> + <xsl:value-of select="normalize-space(@uom)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- + <xsl:if test="$profile = $extended"> + <rdfs:comment xml:lang="en">Spatial resolution (distance): <xsl:value-of select="."/> <xsl:value-of select="$UoM"/></rdfs:comment> + </xsl:if> + --> + <!-- Mapping moved to core profile for compliance with DCAT-AP 2 --> + <!-- Mapping added for compliance with DCAT-AP 2 --> + <xsl:choose> + <xsl:when test="($UoM = 'm' or starts-with($UoM, 'm ')) and number(.) = number(.)"> + <dcat:spatialResolutionInMeters rdf:datatype="{$xsd}decimal"> + <xsl:value-of select="."/> + </dcat:spatialResolutionInMeters> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:if test="$profile = 'extended'"> + <dqv:hasQualityMeasurement> + <dqv:QualityMeasurement> + <dqv:isMeasurementOf> + <dqv:Metric rdf:about="{$geodcatap}spatialResolutionAsDistance"/> + </dqv:isMeasurementOf> + <dqv:value rdf:datatype="{$xsd}decimal"><xsl:value-of select="."/></dqv:value> + <sdmx-attribute:unitMeasure rdf:resource="{$uom-m}"/> + </dqv:QualityMeasurement> + </dqv:hasQualityMeasurement> + </xsl:if> + </xsl:when> + <xsl:when test="($UoM = 'km' or starts-with($UoM, 'km ')) and number(.) = number(.)"> + <dcat:spatialResolutionInMeters rdf:datatype="{$xsd}decimal"> + <xsl:value-of select="(. * 1000)"/> + </dcat:spatialResolutionInMeters> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:if test="$profile = 'extended'"> + <dqv:hasQualityMeasurement> + <dqv:QualityMeasurement> + <dqv:isMeasurementOf> + <dqv:Metric rdf:about="{$geodcatap}spatialResolutionAsDistance"/> + </dqv:isMeasurementOf> + <dqv:value rdf:datatype="{$xsd}decimal"><xsl:value-of select="."/></dqv:value> + <sdmx-attribute:unitMeasure rdf:resource="{$uom-km}"/> + </dqv:QualityMeasurement> + </dqv:hasQualityMeasurement> + </xsl:if> + </xsl:when> + <xsl:when test="($UoM = 'ft' or starts-with($UoM, 'ft ')) and number(.) = number(.)"> + <dcat:spatialResolutionInMeters rdf:datatype="{$xsd}decimal"> + <xsl:value-of select="(. * 0.3048)"/> + </dcat:spatialResolutionInMeters> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:if test="$profile = 'extended'"> + <dqv:hasQualityMeasurement> + <dqv:QualityMeasurement> + <dqv:isMeasurementOf> + <dqv:Metric rdf:about="{$geodcatap}spatialResolutionAsDistance"/> + </dqv:isMeasurementOf> + <dqv:value rdf:datatype="{$xsd}decimal"><xsl:value-of select="."/></dqv:value> + <sdmx-attribute:unitMeasure rdf:resource="{$uom-ft}"/> + </dqv:QualityMeasurement> + </dqv:hasQualityMeasurement> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$profile = $extended"> + <rdfs:comment xml:lang="en"> + Spatial resolution (distance): <xsl:value-of select="."/> <xsl:value-of select="$UoM"/> + </rdfs:comment> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:if test="$profile = $extended"> + <xsl:for-each select="gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator"> + <!-- + <rdfs:comment xml:lang="en">Spatial resolution (equivalent scale): 1:<xsl:value-of select="gco:Integer"/></rdfs:comment> + --> + <xsl:choose> + <!-- Mapping added for compliance with GeoDCAT-AP 2 --> + <xsl:when test="number(gco:Integer) = number(gco:Integer)"> + <dqv:hasQualityMeasurement> + <dqv:QualityMeasurement> + <dqv:isMeasurementOf> + <dqv:Metric rdf:about="{$geodcatap}spatialResolutionAsScale"/> + </dqv:isMeasurementOf> + <dqv:value rdf:datatype="{$xsd}decimal"> + <xsl:value-of select="format-number((1 div gco:Integer), '0.########################')"/> + </dqv:value> + </dqv:QualityMeasurement> + </dqv:hasQualityMeasurement> + </xsl:when> + <xsl:otherwise> + <rdfs:comment xml:lang="en"> + Spatial resolution (equivalent scale): <xsl:value-of select="gco:Integer"/> + </rdfs:comment> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:if> + </xsl:template> + + <!-- Character encoding --> + + <xsl:template mode="iso19139-to-dcatap" name="CharacterEncoding" match="gmd:characterSet/gmd:MD_CharacterSetCode"> + <xsl:variable name="CharSetCode"> + <xsl:choose> + <xsl:when test="@codeListValue = 'ucs2'"> + <xsl:text>ISO-10646-UCS-2</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'ucs4'"> + <xsl:text>ISO-10646-UCS-4</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'utf7'"> + <xsl:text>UTF-7</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'utf8'"> + <xsl:text>UTF-8</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'utf16'"> + <xsl:text>UTF-16</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part1'"> + <xsl:text>ISO-8859-1</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part2'"> + <xsl:text>ISO-8859-2</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part3'"> + <xsl:text>ISO-8859-3</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part4'"> + <xsl:text>ISO-8859-4</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part5'"> + <xsl:text>ISO-8859-5</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part6'"> + <xsl:text>ISO-8859-6</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part7'"> + <xsl:text>ISO-8859-7</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part8'"> + <xsl:text>ISO-8859-8</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part9'"> + <xsl:text>ISO-8859-9</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part10'"> + <xsl:text>ISO-8859-10</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part11'"> + <xsl:text>ISO-8859-11</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part12'"> + <xsl:text>ISO-8859-12</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part13'"> + <xsl:text>ISO-8859-13</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part14'"> + <xsl:text>ISO-8859-14</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part15'"> + <xsl:text>ISO-8859-15</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = '8859part16'"> + <xsl:text>ISO-8859-16</xsl:text> + </xsl:when> + <!-- Mapping to be verified: multiple candidates are available in the IANA register for jis --> + <xsl:when test="@codeListValue = 'jis'"> + <xsl:text>JIS_Encoding</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'shiftJIS'"> + <xsl:text>Shift_JIS</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'eucJP'"> + <xsl:text>EUC-JP</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'usAscii'"> + <xsl:text>US-ASCII</xsl:text> + </xsl:when> + <!-- Mapping to be verified: multiple candidates are available in the IANA register ebcdic --> + <xsl:when test="@codeListValue = 'ebcdic'"> + <xsl:text>IBM037</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'eucKR'"> + <xsl:text>EUC-KR</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'big5'"> + <xsl:text>Big5</xsl:text> + </xsl:when> + <xsl:when test="@codeListValue = 'GB2312'"> + <xsl:text>GB2312</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:variable> + <cnt:characterEncoding rdf:datatype="{$xsd}string"><xsl:value-of select="$CharSetCode"/></cnt:characterEncoding> + <!-- + <cnt:characterEncoding rdf:datatype="{$xsd}string"><xsl:value-of select="@codeListValue"/></cnt:characterEncoding> + --> + </xsl:template> + + <!-- Encoding --> + + <xsl:template mode="iso19139-to-dcatap" name="Encoding" match="gmd:distributionFormat/gmd:MD_Format/gmd:name/*"> + <xsl:param name="format-label"> + <xsl:value-of select="normalize-space(.)"/> + </xsl:param> + <xsl:param name="format-uri"> + <xsl:choose> + <xsl:when test="@xlink:href and @xlink:href != ''"> + <xsl:value-of select="@xlink:href"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="EncodingLabelToUri"> + <xsl:with-param name="label" select="normalize-space(.)"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="media-type"> + <xsl:choose> + <xsl:when test="$format-uri != ''"> + <dct:MediaType rdf:about="{$format-uri}"/> + </xsl:when> + <xsl:when test="$format-label != ''"> + <dct:MediaType> + <rdfs:label><xsl:value-of select="$format-label"/></rdfs:label> + </dct:MediaType> + </xsl:when> + </xsl:choose> + </xsl:param> + <xsl:choose> + <xsl:when test="starts-with($format-uri,$iana-mt)"> + <dcat:mediaType> + <xsl:copy-of select="$media-type"/> + </dcat:mediaType> + </xsl:when> + <xsl:otherwise> + <dct:format> + <xsl:copy-of select="$media-type"/> + </dct:format> + </xsl:otherwise> + </xsl:choose> + <!-- + <dct:format> + <rdf:Description rdf:about="{$format-uri}"> + <rdf:type rdf:resource="{$dct}MediaType"/> + <xsl:if test="$format-uri = concat($opft,'OP_DATPRO') and $format-label != ''"> + <rdfs:label><xsl:value-of select="."/></rdfs:label> + </xsl:if> + </rdf:Description> + </dct:format> + --> + <!-- + <xsl:choose> + <xsl:when test="@xlink:href and @xlink:href != ''"> + <dct:format> + <dct:MediaType rdf:about="{@xlink:href}"/> + </dct:format> + </xsl:when> + <xsl:otherwise> + <dct:format rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}MediaType"/> + <rdfs:label><xsl:value-of select="."/></rdfs:label> + </dct:format> + </xsl:otherwise> + </xsl:choose> + --> + </xsl:template> + + <!-- Encoding: Label to URI --> + + <!-- CAVEAT: This template attempts to map textual description + of a distribution encoding, based on the most frequently + used labels from the European Data Portal. --> + + <xsl:template name="EncodingLabelToUri"> + <xsl:param name="label"/> + <xsl:param name="norm-label"> + <xsl:choose> + <xsl:when test="starts-with(normalize-space($label),$opft)"> + <xsl:value-of select="translate(substring-after(normalize-space($label),$opft),$uppercase,$lowercase)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="translate(normalize-space($label),$uppercase,$lowercase)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:choose> + <xsl:when test="$norm-label = 'aaigrid'"> + <xsl:value-of select="concat($opft,'GRID_ASCII')"/> + </xsl:when> + <xsl:when test="$norm-label = 'aig'"> + <xsl:value-of select="concat($opft,'GRID')"/> + </xsl:when> + <xsl:when test="$norm-label = 'atom'"> + <xsl:value-of select="concat($opft,'ATOM')"/> + </xsl:when> + <xsl:when test="$norm-label = 'csv'"> + <xsl:value-of select="concat($opft,'CSV')"/> + </xsl:when> + <xsl:when test="$norm-label = 'csw'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'dbf'"> + <xsl:value-of select="concat($opft,'DBF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'dgn'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'BIN')"/> + </xsl:when> + <xsl:when test="$norm-label = 'djvu'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'image/vn.djvu')"/> + </xsl:when> + <xsl:when test="$norm-label = 'doc'"> + <xsl:value-of select="concat($opft,'DOC')"/> + </xsl:when> + <xsl:when test="$norm-label = 'docx'"> + <xsl:value-of select="concat($opft,'DOCX')"/> + </xsl:when> + <xsl:when test="$norm-label = 'dxf'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'image/vn.dxf')"/> + </xsl:when> + <xsl:when test="$norm-label = 'dwg'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'image/vn.dwg')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ecw'"> + <xsl:value-of select="concat($opft,'ECW')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ecwp'"> + <xsl:value-of select="concat($opft,'ECW')"/> + </xsl:when> + <xsl:when test="$norm-label = 'elp'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'EXE')"/> + </xsl:when> + <xsl:when test="$norm-label = 'epub'"> + <xsl:value-of select="concat($opft,'EPUB')"/> + </xsl:when> + <xsl:when test="$norm-label = 'fgeo'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GDB')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gdb'"> + <xsl:value-of select="concat($opft,'GDB')"/> + </xsl:when> + <xsl:when test="$norm-label = 'geojson'"> + <xsl:value-of select="concat($opft,'GEOJSON')"/> + </xsl:when> + <xsl:when test="$norm-label = 'geopackage'"> + <xsl:value-of select="concat($opft,'GPKG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'georss'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'RSS')"/> + </xsl:when> + <xsl:when test="$norm-label = 'geotiff'"> + <xsl:value-of select="concat($opft,'TIFF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gif'"> + <xsl:value-of select="concat($opft,'GIF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gml'"> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gmz'"> + <xsl:value-of select="concat($opft,'GMZ')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gpkg'"> + <xsl:value-of select="concat($opft,'GPKG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gpx'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'grid'"> + <xsl:value-of select="concat($opft,'GRID')"/> + </xsl:when> + <xsl:when test="$norm-label = 'grid_ascii'"> + <xsl:value-of select="concat($opft,'GRID_ASCII')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gtfs'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'CSV')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gtiff'"> + <xsl:value-of select="concat($opft,'TIFF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'gzip'"> + <xsl:value-of select="concat($opft,'GZIP')"/> + </xsl:when> + <xsl:when test="$norm-label = 'html'"> + <xsl:value-of select="concat($opft,'HTML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'jpeg'"> + <xsl:value-of select="concat($opft,'JPEG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'jpg'"> + <xsl:value-of select="concat($opft,'JPEG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'json'"> + <xsl:value-of select="concat($opft,'JSON')"/> + </xsl:when> + <xsl:when test="$norm-label = 'json-ld'"> + <xsl:value-of select="concat($opft,'JSON_LD')"/> + </xsl:when> + <xsl:when test="$norm-label = 'json_ld'"> + <xsl:value-of select="concat($opft,'JSON_LD')"/> + </xsl:when> + <xsl:when test="$norm-label = 'jsonld'"> + <xsl:value-of select="concat($opft,'JSON_LD')"/> + </xsl:when> + <xsl:when test="$norm-label = 'kml'"> + <xsl:value-of select="concat($opft,'KML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'kmz'"> + <xsl:value-of select="concat($opft,'KMZ')"/> + </xsl:when> + <xsl:when test="$norm-label = 'las'"> + <xsl:value-of select="concat($opft,'LAS')"/> + </xsl:when> + <xsl:when test="$norm-label = 'laz'"> + <xsl:value-of select="concat($opft,'LAZ')"/> + </xsl:when> + <xsl:when test="$norm-label = 'marc'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'application/marc')"/> + </xsl:when> + <xsl:when test="$norm-label = 'mdb'"> + <xsl:value-of select="concat($opft,'MDB')"/> + </xsl:when> + <xsl:when test="$norm-label = 'mxd'"> + <xsl:value-of select="concat($opft,'MXD')"/> + </xsl:when> + <xsl:when test="$norm-label = 'n-triples'"> + <xsl:value-of select="concat($opft,'RDF_N_TRIPLES')"/> + </xsl:when> + <xsl:when test="$norm-label = 'n3'"> + <xsl:value-of select="concat($opft,'N3')"/> + </xsl:when> + <xsl:when test="$norm-label = 'netcdf'"> + <xsl:value-of select="concat($opft,'NETCDF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ods'"> + <xsl:value-of select="concat($opft,'ODS')"/> + </xsl:when> + <xsl:when test="$norm-label = 'odt'"> + <xsl:value-of select="concat($opft,'ODT')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:csw'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:sos'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wcs'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'TIFF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wfs'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wfs-g'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wmc'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wms'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'PNG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wmts'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'PNG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ogc:wps'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'oracledump'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($inspire-mt,'application/x-oracledump')"/> + </xsl:when> + <xsl:when test="$norm-label = 'pc-axis'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'TXT')"/> + </xsl:when> + <xsl:when test="$norm-label = 'pdf'"> + <xsl:value-of select="concat($opft,'PDF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'pgeo'"> + <xsl:value-of select="concat($opft,'MDB')"/> + </xsl:when> + <xsl:when test="$norm-label = 'png'"> + <xsl:value-of select="concat($opft,'PNG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rar'"> + <xsl:value-of select="concat($opft,'RAR')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf/xml'"> + <xsl:value-of select="concat($opft,'RDF_XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf-n3'"> + <xsl:value-of select="concat($opft,'N3')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf-turtle'"> + <xsl:value-of select="concat($opft,'RDF_TURTLE')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf-xml'"> + <xsl:value-of select="concat($opft,'RDF_XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf_n_triples'"> + <xsl:value-of select="concat($opft,'RDF_N_TRIPLES')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf_n3'"> + <xsl:value-of select="concat($opft,'N3')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf_turtle'"> + <xsl:value-of select="concat($opft,'RDF_TURTLE')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rdf_xml'"> + <xsl:value-of select="concat($opft,'RDF_XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rss'"> + <xsl:value-of select="concat($opft,'RSS')"/> + </xsl:when> + <xsl:when test="$norm-label = 'rtf'"> + <xsl:value-of select="concat($opft,'RTF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'scorm'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'ZIP')"/> + </xsl:when> + <xsl:when test="$norm-label = 'shp'"> + <xsl:value-of select="concat($opft,'SHP')"/> + </xsl:when> + <xsl:when test="$norm-label = 'sos'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'spatialite'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'application/vnd.sqlite3')"/> + </xsl:when> + <xsl:when test="$norm-label = 'sqlite'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'application/vnd.sqlite3')"/> + </xsl:when> + <xsl:when test="$norm-label = 'sqlite3'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($iana-mt,'application/vnd.sqlite3')"/> + </xsl:when> + <xsl:when test="$norm-label = 'svg'"> + <xsl:value-of select="concat($opft,'SVG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'text'"> + <xsl:value-of select="concat($opft,'TXT')"/> + </xsl:when> + <xsl:when test="$norm-label = 'tiff'"> + <xsl:value-of select="concat($opft,'TIFF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'tmx'"> + <xsl:value-of select="concat($opft,'TMX')"/> + </xsl:when> + <xsl:when test="$norm-label = 'tsv'"> + <xsl:value-of select="concat($opft,'TSV')"/> + </xsl:when> + <xsl:when test="$norm-label = 'ttl'"> + <xsl:value-of select="concat($opft,'RDF_TURTLE')"/> + </xsl:when> + <xsl:when test="$norm-label = 'turtle'"> + <xsl:value-of select="concat($opft,'RDF_TURTLE')"/> + </xsl:when> + <xsl:when test="$norm-label = 'txt'"> + <xsl:value-of select="concat($opft,'TXT')"/> + </xsl:when> + <xsl:when test="$norm-label = 'vcard-json'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'JSON')"/> + </xsl:when> + <xsl:when test="$norm-label = 'vcard-xml'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'xbrl'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'xhtml'"> + <xsl:value-of select="concat($opft,'XHTML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'xls'"> + <xsl:value-of select="concat($opft,'XLS')"/> + </xsl:when> + <xsl:when test="$norm-label = 'xlsx'"> + <xsl:value-of select="concat($opft,'XLSX')"/> + </xsl:when> + <xsl:when test="$norm-label = 'xml'"> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wcs'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'TIFF')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wfs'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wfs-g'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wmc'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'XML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wms'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'PNG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wmts'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'PNG')"/> + </xsl:when> + <xsl:when test="$norm-label = 'wps'"> + <!-- PROVISIONAL --> + <xsl:value-of select="concat($opft,'GML')"/> + </xsl:when> + <xsl:when test="$norm-label = 'zip'"> + <xsl:value-of select="concat($opft,'ZIP')"/> + </xsl:when> + <xsl:otherwise> + <!-- + <xsl:value-of select="concat($opft,'OP_DATPRO')"/> + --> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Maintenance information --> + + <xsl:template mode="iso19139-to-dcatap" name="MaintenanceInformation" match="gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/gmd:MD_MaintenanceFrequencyCode"> + <!-- The following parameter maps frequency codes used in ISO 19139 metadata to the corresponding ones of the Dublin Core Collection Description Frequency Vocabulary (when available). --> + <xsl:param name="FrequencyCodeURI"> + <xsl:if test="@codeListValue != ''"> + <xsl:choose> + <xsl:when test="@codeListValue = 'continual'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'continuous')"/> + --> + <xsl:value-of select="concat($opfq,'CONT')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'daily'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'daily')"/> + --> + <xsl:value-of select="concat($opfq,'DAILY')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'weekly'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'weekly')"/> + --> + <xsl:value-of select="concat($opfq,'WEEKLY')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'fortnightly'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'biweekly')"/> + --> + <xsl:value-of select="concat($opfq,'BIWEEKLY')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'monthly'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'monthly')"/> + --> + <xsl:value-of select="concat($opfq,'MONTHLY')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'quarterly'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'quarterly')"/> + --> + <xsl:value-of select="concat($opfq,'QUARTERLY')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'biannually'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'semiannual')"/> + --> + <xsl:value-of select="concat($opfq,'ANNUAL_2')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'annually'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'annual')"/> + --> + <xsl:value-of select="concat($opfq,'ANNUAL')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'asNeeded'"> + <!-- A mapping is missing in Dublin Core --> + <!-- A mapping is missing in MDR Freq NAL --> + <xsl:value-of select="concat($MaintenanceFrequencyCodelistUri,'/',@codeListValue)"/> + </xsl:when> + <xsl:when test="@codeListValue = 'irregular'"> + <!-- DC Freq voc + <xsl:value-of select="concat($cldFrequency,'irregular')"/> + --> + <xsl:value-of select="concat($opfq,'IRREG')"/> + </xsl:when> + <xsl:when test="@codeListValue = 'notPlanned'"> + <!-- A mapping is missing in Dublin Core --> + <!-- A mapping is missing in MDR Freq NAL --> + <xsl:value-of select="concat($MaintenanceFrequencyCodelistUri,'/',@codeListValue)"/> + </xsl:when> + <xsl:when test="@codeListValue = 'unknown'"> + <!-- A mapping is missing in Dublin Core --> + <!-- INSPIRE Freq code list (not yet available) + <xsl:value-of select="concat($MaintenanceFrequencyCodelistUri,'/',@codeListValue)"/> + --> + <xsl:value-of select="concat($opfq,'UNKNOWN')"/> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:param> + <xsl:if test="$FrequencyCodeURI != ''"> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="{$FrequencyCodeURI}"/> + </dct:accrualPeriodicity> + </xsl:if> + </xsl:template> + + <!-- Coordinate and temporal reference system (tentative) --> + + <xsl:template mode="iso19139-to-dcatap" name="ReferenceSystem" match="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier"> + <xsl:param name="MetadataLanguage"/> + <xsl:param name="code" select="gmd:code/*[self::gco:CharacterString|gmx:Anchor]"/> + <xsl:param name="link" select="gmd:code/gmx:Anchor/@xlink:href"/> + <xsl:param name="codespace" select="gmd:codeSpace/*[self::gco:CharacterString|gmx:Anchor]"/> + <xsl:param name="version" select="gmd:version/*[self::gco:CharacterString|gmx:Anchor]"/> + <xsl:param name="version-statement"> + <xsl:if test="$profile = $extended"> + <xsl:if test="$version != ''"> + <owl:versionInfo xml:lang="{$MetadataLanguage}"><xsl:value-of select="$version"/></owl:versionInfo> + </xsl:if> + </xsl:if> + </xsl:param> + + <xsl:choose> + <xsl:when test="starts-with($link, 'http://') or starts-with($link, 'https://')"> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="{$link}"> + <rdf:type rdf:resource="{$dct}Standard"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + </rdf:Description> + </geodcatap:referenceSystem> + </xsl:when> + <xsl:when test="starts-with($code, 'http://') or starts-with($code, 'https://')"> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="{$code}"> + <rdf:type rdf:resource="{$dct}Standard"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + </rdf:Description> + </geodcatap:referenceSystem> + </xsl:when> + <xsl:when test="starts-with($code, 'urn:')"> + <xsl:variable name="srid"> + <xsl:if test="starts-with(translate($code,$uppercase,$lowercase), translate($EpsgSrsBaseUrn,$uppercase,$lowercase))"> + <xsl:value-of select="substring-after(substring-after(substring-after(substring-after(substring-after(substring-after($code,':'),':'),':'),':'),':'),':')"/> + </xsl:if> + </xsl:variable> + <xsl:variable name="sridVersion" select="substring-before(substring-after(substring-after(substring-after(substring-after(substring-after($code,':'),':'),':'),':'),':'),':')"/> + <xsl:choose> + <xsl:when test="$srid != '' and string(number($srid)) != 'NaN'"> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="{$EpsgSrsBaseUri}/{$srid}"> + <rdf:type rdf:resource="{$dct}Standard"/> + <rdf:type rdf:resource="{$skos}Concept"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$code"/></dct:identifier> + <skos:notation rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$code"/></skos:notation> + <skos:inScheme> + <skos:ConceptScheme rdf:about="{$EpsgSrsBaseUri}"> + <dct:title xml:lang="en"> + <xsl:value-of select="$EpsgSrsName"/> + </dct:title> + </skos:ConceptScheme> + </skos:inScheme> + <xsl:copy-of select="$version-statement"/> + </rdf:Description> + </geodcatap:referenceSystem> + </xsl:when> + <xsl:otherwise> + <geodcatap:referenceSystem rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}Standard"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$code"/></dct:identifier> + <xsl:if test="$codespace != ''"> + <rdf:type rdf:resource="{$skos}Concept"/> + <skos:notation rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$code"/></skos:notation> + <skos:inScheme> + <skos:ConceptScheme> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$codespace"/> + </dct:title> + </skos:ConceptScheme> + </skos:inScheme> + </xsl:if> + <xsl:copy-of select="$version-statement"/> + </geodcatap:referenceSystem> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$code castable as xs:double and $code = number($code) and (translate($codespace,$uppercase,$lowercase) = 'epsg' or starts-with(translate($codespace,$uppercase,$lowercase),translate($EpsgSrsBaseUrn,$uppercase,$lowercase)))"> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="{$EpsgSrsBaseUri}/{$code}"> + <rdf:type rdf:resource="{$dct}Standard"/> + <rdf:type rdf:resource="{$skos}Concept"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="concat($EpsgSrsBaseUrn,':',$version,':',$code)"/></dct:identifier> + <skos:notation rdf:datatype="{$xsd}anyURI"><xsl:value-of select="concat($EpsgSrsBaseUrn,':',$version,':',$code)"/></skos:notation> + <skos:inScheme> + <skos:ConceptScheme rdf:about="{$EpsgSrsBaseUri}"> + <dct:title xml:lang="en"> + <xsl:value-of select="$EpsgSrsName"/> + </dct:title> + </skos:ConceptScheme> + </skos:inScheme> + <xsl:copy-of select="$version-statement"/> + </rdf:Description> + </geodcatap:referenceSystem> + </xsl:when> + <xsl:when test="translate(normalize-space(translate($code,$uppercase,$lowercase)),': ','') = 'etrs89'"> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="{$Etrs89Uri}"> + <rdf:type rdf:resource="{$dct}Standard"/> + <rdf:type rdf:resource="{$skos}Concept"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$Etrs89Urn"/></dct:identifier> + <skos:notation rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$Etrs89Urn"/></skos:notation> + <dct:title xml:lang="en">ETRS89 - European Terrestrial Reference System 1989</dct:title> + <skos:prefLabel xml:lang="en">ETRS89 - European Terrestrial Reference System 1989</skos:prefLabel> + <skos:inScheme> + <skos:ConceptScheme rdf:about="{$EpsgSrsBaseUri}"> + <dct:title xml:lang="en"> + <xsl:value-of select="$EpsgSrsName"/> + </dct:title> + </skos:ConceptScheme> + </skos:inScheme> + <xsl:copy-of select="$version-statement"/> + </rdf:Description> + </geodcatap:referenceSystem> + </xsl:when> + <xsl:when test="translate(normalize-space(translate($code,$uppercase,$lowercase)),': ','') = 'crs84'"> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="{$Crs84Uri}"> + <rdf:type rdf:resource="{$dct}Standard"/> + <rdf:type rdf:resource="{$skos}Concept"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + <dct:identifier rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$Crs84Urn"/></dct:identifier> + <skos:notation rdf:datatype="{$xsd}anyURI"><xsl:value-of select="$Crs84Urn"/></skos:notation> + <dct:title xml:lang="en">CRS84</dct:title> + <skos:prefLabel xml:lang="en">CRS84</skos:prefLabel> + <skos:inScheme> + <skos:ConceptScheme rdf:about="{$OgcSrsBaseUri}"> + <dct:title xml:lang="en"> + <xsl:value-of select="$OgcSrsName"/> + </dct:title> + </skos:ConceptScheme> + </skos:inScheme> + <xsl:copy-of select="$version-statement"/> + </rdf:Description> + </geodcatap:referenceSystem> + </xsl:when> + <xsl:otherwise> + <geodcatap:referenceSystem rdf:parseType="Resource"> + <rdf:type rdf:resource="{$dct}Standard"/> + <rdf:type rdf:resource="{$skos}Concept"/> + <dct:type rdf:resource="{$INSPIREGlossaryUri}SpatialReferenceSystem"/> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$code"/> + </dct:title> + <xsl:if test="$codespace != ''"> + <skos:prefLabel xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$code"/> + </skos:prefLabel> + <skos:inScheme> + <skos:ConceptScheme> + <dct:title xml:lang="{$MetadataLanguage}"> + <xsl:value-of select="$codespace"/> + </dct:title> + </skos:ConceptScheme> + </skos:inScheme> + </xsl:if> + <xsl:copy-of select="$version-statement"/> + </geodcatap:referenceSystem> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Spatial representation type (tentative) --> + + <xsl:template mode="iso19139-to-dcatap" name="SpatialRepresentationType" match="gmd:identificationInfo/*/gmd:spatialRepresentationType/gmd:MD_SpatialRepresentationTypeCode"> + <adms:representationTechnique rdf:resource="{$SpatialRepresentationTypeCodelistUri}/{@codeListValue}"/> + </xsl:template> + + <!-- Multilingual text --> + + <xsl:template name="LocalisedString"> + <xsl:param name="term"/> + <xsl:for-each select="gmd:PT_FreeText/*/gmd:LocalisedCharacterString"> + <xsl:variable name="value" select="normalize-space(.)"/> + <xsl:variable name="langs"> + <xsl:call-template name="Alpha3-to-Alpha2"> + <xsl:with-param name="lang" select="translate(translate(@locale, $uppercase, $lowercase), '#', '')"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="$value != ''"> + <xsl:element name="{$term}"> + <xsl:attribute name="xml:lang"><xsl:value-of select="$langs"/></xsl:attribute> + <xsl:value-of select="$value"/> + </xsl:element> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="Alpha3-to-Alpha2"> + <xsl:param name="lang"/> + <xsl:choose> + <xsl:when test="$lang = 'bul'"> + <xsl:text>bg</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'cze'"> + <xsl:text>cs</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'dan'"> + <xsl:text>da</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'ger'"> + <xsl:text>de</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'gre'"> + <xsl:text>el</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'eng'"> + <xsl:text>en</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'spa'"> + <xsl:text>es</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'est'"> + <xsl:text>et</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'fin'"> + <xsl:text>fi</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'fre'"> + <xsl:text>fr</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'gle'"> + <xsl:text>ga</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'hrv'"> + <xsl:text>hr</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'ita'"> + <xsl:text>it</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'lav'"> + <xsl:text>lv</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'lit'"> + <xsl:text>lt</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'hun'"> + <xsl:text>hu</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'mlt'"> + <xsl:text>mt</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'dut'"> + <xsl:text>nl</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'pol'"> + <xsl:text>pl</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'por'"> + <xsl:text>pt</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'rum'"> + <xsl:text>ru</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'slo'"> + <xsl:text>sk</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'slv'"> + <xsl:text>sl</xsl:text> + </xsl:when> + <xsl:when test="$lang = 'swe'"> + <xsl:text>sv</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$lang"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Templates for services and distributions pointing to services --> + + <xsl:template name="detect-service"> + <xsl:param name="function"/> + <xsl:param name="protocol"/> + <xsl:param name="url"/> + <xsl:choose> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'request=getcapabilities')"> + <xsl:text>yes</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>no</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="service-protocol-code"> + <xsl:param name="function"/> + <xsl:param name="protocol"/> + <xsl:param name="url"/> + <xsl:choose> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=csw')"> + <xsl:text>csw</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:csw'"> + <xsl:text>csw</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=sos')"> + <xsl:text>sos</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:sos'"> + <xsl:text>sos</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=sps')"> + <xsl:text>sps</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:sps'"> + <xsl:text>sps</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=wcs')"> + <xsl:text>wcs</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:wcs'"> + <xsl:text>wcs</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=wfs')"> + <xsl:text>wfs</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:wfs'"> + <xsl:text>wfs</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=wms')"> + <xsl:text>wms</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:wms'"> + <xsl:text>wms</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=wmts')"> + <xsl:text>wmts</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:wmts'"> + <xsl:text>wmts</xsl:text> + </xsl:when> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'service=wps')"> + <xsl:text>wps</xsl:text> + </xsl:when> + <xsl:when test="translate($protocol, $uppercase, $lowercase) = 'ogc:wps'"> + <xsl:text>wps</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="service-protocol-url"> + <xsl:param name="protocol"/> + <xsl:choose> + <xsl:when test="$protocol = 'csw'"> + <xsl:text>http://www.opengeospatial.org/standards/cat</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'sos'"> + <xsl:text>http://www.opengeospatial.org/standards/sos</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'sps'"> + <xsl:text>http://www.opengeospatial.org/standards/sps</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'wcs'"> + <xsl:text>http://www.opengeospatial.org/standards/wcs</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'wfs'"> + <xsl:text>http://www.opengeospatial.org/standards/wfs</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'wms'"> + <xsl:text>http://www.opengeospatial.org/standards/wms</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'wmts'"> + <xsl:text>http://www.opengeospatial.org/standards/wmts</xsl:text> + </xsl:when> + <xsl:when test="$protocol = 'wps'"> + <xsl:text>http://www.opengeospatial.org/standards/wps</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="service-protocol"> + <xsl:param name="function"/> + <xsl:param name="protocol"/> + <xsl:param name="url"/> + <xsl:param name="protocol-url"> + <xsl:call-template name="service-protocol-url"> + <xsl:with-param name="protocol"> + <xsl:call-template name="service-protocol-code"> + <xsl:with-param name="function" select="$function"/> + <xsl:with-param name="protocol" select="$protocol"/> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:param> + <xsl:if test="$protocol-url != ''"> + <geodcatap:serviceProtocol> + <dct:Standard rdf:about="{$protocol-url}"/> + </geodcatap:serviceProtocol> + </xsl:if> + </xsl:template> + + <xsl:template name="service-endpoint"> + <xsl:param name="function"/> + <xsl:param name="protocol"/> + <xsl:param name="url"/> + <xsl:param name="endpoint-url"> + <xsl:choose> + <xsl:when test="contains($url, '?')"> + <xsl:value-of select="substring-before($url, '?')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$url"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="endpoint-description"> + <xsl:choose> + <xsl:when test="contains(substring-after(translate($url, $uppercase, $lowercase), '?'), 'request=getcapabilities')"> + <xsl:value-of select="$url"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$url"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="service-type"> + </xsl:param> + <xsl:if test="$endpoint-url != ''"> + <dcat:endpointURL rdf:resource="{$endpoint-url}"/> + </xsl:if> + <xsl:if test="$endpoint-description != ''"> + <dcat:endpointDescription rdf:resource="{$endpoint-description}"/> + </xsl:if> + </xsl:template> + +</xsl:transform> \ No newline at end of file diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-geodcat-ap/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-geodcat-ap/view.xsl new file mode 100644 index 00000000000..cfc878ef7de --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/eu-geodcat-ap/view.xsl @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:import href="../../../iso19115-3.2018/convert/ISO19139/fromISO19139.xsl"/> + <xsl:import href="../../../iso19115-3.2018/formatter/eu-geodcat-ap/eu-geodcat-ap-core.xsl"/> + <xsl:import href="../dcat/dcat-utils.xsl"/> + + <xsl:template match="/"> + <xsl:apply-templates mode="dcat" select="root[gmd:MD_Metadata]|/gmd:MD_Metadata"/> + </xsl:template> + + <xsl:template mode="dcat" match="*"> + <xsl:variable name="iso19115-3metadata"> + <xsl:for-each select="."> + <xsl:call-template name="to-iso19115-3"/> + </xsl:for-each> + </xsl:variable> + + <rdf:RDF> + <xsl:call-template name="create-namespaces"/> + <xsl:apply-templates mode="iso19115-3-to-dcat" + select="$iso19115-3metadata"/> + </rdf:RDF> + </xsl:template> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/xsl-view/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/xsl-view/view.xsl index 65dc278704e..4f5f259dc21 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/formatter/xsl-view/view.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/xsl-view/view.xsl @@ -193,23 +193,25 @@ </xsl:template> <xsl:template mode="getExtent" match="gmd:MD_Metadata|*[@gco:isoType = 'gmd:MD_Metadata']"> - <section class="gn-md-side-extent"> - <h2> - <i class="fa fa-fw fa-map-marker"></i> - <span> - <xsl:value-of select="$schemaStrings/spatialExtent"/> - </span> - </h2> - - <xsl:choose> - <xsl:when test=".//gmd:EX_BoundingPolygon"> - <xsl:copy-of select="gn-fn-render:extent($metadataUuid)"/> - </xsl:when> - <xsl:otherwise> - <xsl:copy-of select="gn-fn-render:bboxes(.//gmd:EX_GeographicBoundingBox)"/> - </xsl:otherwise> - </xsl:choose> - </section> + <xsl:if test=".//gmd:identificationInfo/*/gmd:extent/*/gmd:geographicElement[gmd:EX_GeographicBoundingBox or gmd:EX_BoundingPolygon]"> + <section class="gn-md-side-extent"> + <h2> + <i class="fa fa-fw fa-map-marker"></i> + <span> + <xsl:value-of select="$schemaStrings/spatialExtent"/> + </span> + </h2> + + <xsl:choose> + <xsl:when test=".//gmd:EX_BoundingPolygon"> + <xsl:copy-of select="gn-fn-render:extent($metadataUuid)"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="gn-fn-render:bboxes(.//gmd:EX_GeographicBoundingBox)"/> + </xsl:otherwise> + </xsl:choose> + </section> + </xsl:if> </xsl:template> <xsl:template mode="getOverviews" match="gmd:MD_Metadata|*[@gco:isoType = 'gmd:MD_Metadata']"> diff --git a/schemas/iso19139/src/main/plugin/iso19139/index-fields/index.xsl b/schemas/iso19139/src/main/plugin/iso19139/index-fields/index.xsl index d2fdc3f4a78..6f711e96804 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/index-fields/index.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/index-fields/index.xsl @@ -34,7 +34,6 @@ xmlns:gn-fn-index="http://geonetwork-opensource.org/xsl/functions/index" xmlns:index="java:org.fao.geonet.kernel.search.EsSearchManager" xmlns:digestUtils="java:org.apache.commons.codec.digest.DigestUtils" - xmlns:exslt="http://exslt.org/common" xmlns:util="java:org.fao.geonet.util.XslUtil" xmlns:date-util="java:org.fao.geonet.utils.DateUtil" xmlns:daobs="http://daobs.org" @@ -193,19 +192,6 @@ </xsl:for-each> <!-- # Resource type --> - <xsl:choose> - <xsl:when test="$isDataset"> - <resourceType>dataset</resourceType> - </xsl:when> - <xsl:otherwise> - <xsl:for-each select="gmd:hierarchyLevel/*/@codeListValue[normalize-space(.) != '']"> - <resourceType> - <xsl:value-of select="."/> - </resourceType> - </xsl:for-each> - </xsl:otherwise> - </xsl:choose> - <xsl:variable name="isMapDigital" select="count(gmd:identificationInfo/*/gmd:citation/*/gmd:presentationForm[*/@codeListValue = 'mapDigital']) > 0"/> <xsl:variable name="isStatic" @@ -218,16 +204,25 @@ <xsl:choose> <xsl:when test="$isDataset and $isMapDigital and ($isStatic or $isInteractive or $isPublishedWithWMCProtocol)"> - <resourceType>map</resourceType> <xsl:choose> <xsl:when test="$isStatic"> - <resourceType>map/static</resourceType> + <resourceType>map-static</resourceType> </xsl:when> <xsl:when test="$isInteractive or $isPublishedWithWMCProtocol"> - <resourceType>map/interactive</resourceType> + <resourceType>map-interactive</resourceType> </xsl:when> </xsl:choose> </xsl:when> + <xsl:when test="$isDataset"> + <resourceType>dataset</resourceType> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="gmd:hierarchyLevel/*/@codeListValue[normalize-space(.) != '']"> + <resourceType> + <xsl:value-of select="."/> + </resourceType> + </xsl:for-each> + </xsl:otherwise> </xsl:choose> @@ -288,14 +283,16 @@ <xsl:choose> <xsl:when test="$zuluDateTime != ''"> + <!-- Store original date information for the resource, instead of $zuluDateTime, + to avoid timezone shifts when used for facet filters --> <xsl:element name="{$dateType}DateForResource"> - <xsl:value-of select="$zuluDateTime"/> + <xsl:value-of select="$date"/> </xsl:element> <xsl:element name="{$dateType}YearForResource"> - <xsl:value-of select="substring($zuluDateTime, 0, 5)"/> + <xsl:value-of select="substring($date, 0, 5)"/> </xsl:element> <xsl:element name="{$dateType}MonthForResource"> - <xsl:value-of select="substring($zuluDateTime, 0, 8)"/> + <xsl:value-of select="substring($date, 0, 8)"/> </xsl:element> </xsl:when> <xsl:otherwise> @@ -384,7 +381,7 @@ <xsl:for-each select="$overviews"> <!-- TODO can be multilingual desc and name --> <overview type="object">{ - "url": "<xsl:value-of select="normalize-space(.)"/>" + "url": "<xsl:value-of select="util:escapeForJson(normalize-space(.))"/>" <xsl:if test="normalize-space(../../gmd:fileDescription) != ''">, "nameObject": <xsl:value-of select="gn-fn-index:add-multilingual-field('name', ../../gmd:fileDescription, $allLanguages, true())"/> </xsl:if> @@ -657,6 +654,22 @@ </xsl:for-each> + <xsl:for-each select="gmd:resourceMaintenance/*"> + <maintenance type="object">{ + "frequency": "<xsl:value-of select="*:maintenanceAndUpdateFrequency/*/@codeListValue"/>" + <xsl:for-each select="gmd:dateOfNextUpdate[*/text() != '']"> + ,"nextUpdateDate": "<xsl:value-of select="*/text()"/>" + </xsl:for-each> + <xsl:for-each select="gmd:userDefinedMaintenanceFrequency[*/text() != '']"> + ,"userDefinedFrequency": "<xsl:value-of select="*/text()"/>" + </xsl:for-each> + <xsl:for-each select="gmd:maintenanceNote[*/text() != '']"> + ,"noteObject": + <xsl:value-of select="gn-fn-index:add-multilingual-field('maintenanceNote', ., $allLanguages, true())"/> + </xsl:for-each> + }</maintenance> + </xsl:for-each> + <xsl:for-each select="gmd:resourceConstraints/*"> <xsl:variable name="fieldPrefix" select="local-name()"/> <xsl:for-each select="gmd:otherConstraints"> @@ -1122,8 +1135,7 @@ <xsl:copy-of select="gn-fn-index:add-multilingual-field('orderingInstructions', ., $allLanguages)"/> </xsl:for-each> - <xsl:for-each select="gmd:transferOptions/*/ - gmd:onLine/*[gmd:linkage/gmd:URL != '']"> + <xsl:for-each select=".//gmd:onLine/*[gmd:linkage/gmd:URL != '']"> <xsl:variable name="transferGroup" select="count(ancestor::gmd:transferOptions/preceding-sibling::gmd:transferOptions)"/> @@ -1147,7 +1159,7 @@ <atomfeed><xsl:value-of select="gmd:linkage/gmd:URL"/></atomfeed> </xsl:if> <link type="object">{ - "hash": "<xsl:value-of select="digestUtils:md5Hex(string(exslt:node-set(normalize-space(.))))"/>", + "hash": "<xsl:value-of select="digestUtils:md5Hex(normalize-space(.))"/>", "idx": <xsl:value-of select="position()"/>, "protocol":"<xsl:value-of select="util:escapeForJson((gmd:protocol/*/text())[1])"/>", "mimeType":"<xsl:value-of select="if (*/gmx:MimeFileType) diff --git a/schemas/iso19139/src/main/plugin/iso19139/loc/fre/labels.xml b/schemas/iso19139/src/main/plugin/iso19139/loc/fre/labels.xml index b2e388944d9..ff12a90122d 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/loc/fre/labels.xml +++ b/schemas/iso19139/src/main/plugin/iso19139/loc/fre/labels.xml @@ -359,7 +359,10 @@ n’est pas respectée. </help> <condition/> - + </element> + <element name="gmd:DQ_EvaluationMethodTypeCode"> + <label>Code du type de méthode d'évaluation</label> + <description>Type de méthode d'évaluation d'une mesure de qualité de données identifiée</description> </element> <element name="gmd:DQ_FormatConsistency" id="114.0"> <label>Cohérence du format</label> diff --git a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-summary.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/dcat-core.xsl similarity index 88% rename from schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-summary.xsl rename to schemas/iso19139/src/main/plugin/iso19139/present/csw/dcat-core.xsl index 534d8dabef3..2dbaa3c0dd3 100644 --- a/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/present/csw/dcat-summary.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/dcat-core.xsl @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- - ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ Copyright (C) 2001-2024 Food and Agriculture Organization of the ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) ~ and United Nations Environment Programme (UNEP) ~ @@ -22,9 +21,7 @@ ~ 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" version="1.0" -> - - <xsl:import href="dcat-brief.xsl"/> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="2.0"> + <xsl:import href="../../formatter/dcat/view.xsl"/> </xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap-hvd.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap-hvd.xsl new file mode 100644 index 00000000000..5fa84c146f1 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap-hvd.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-dcat-ap-hvd/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap-mobility.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap-mobility.xsl new file mode 100644 index 00000000000..b9168b58b97 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap-mobility.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-dcat-ap-mobility/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap.xsl new file mode 100644 index 00000000000..1541e24dae0 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-dcat-ap.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-dcat-ap/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-geodcat-ap-semiceu.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-geodcat-ap-semiceu.xsl new file mode 100644 index 00000000000..f6a3f2910a2 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-geodcat-ap-semiceu.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-geodcat-ap-semiceu/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-geodcat-ap.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-geodcat-ap.xsl new file mode 100644 index 00000000000..e0578159f69 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/eu-geodcat-ap.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2024 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" + version="2.0"> + <xsl:import href="../../formatter/eu-geodcat-ap/view.xsl"/> +</xsl:stylesheet> diff --git a/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-add.xsl b/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-add.xsl index 0afe80eaa3d..e9c86757ca4 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-add.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-add.xsl @@ -187,19 +187,29 @@ Note: It assumes that it will be adding new items in <!-- Updating the gmd:onLine based on update parameters --> <!-- Note: first part of the match needs to match the xsl:for-each select from extract-relations.xsl in order to get the position() to match --> <!-- The unique identifier is marked with resourceIdx which is the position index and resourceHash which is hash code of the current node (combination of url, resource name, and description) --> - <xsl:template - match="*//gmd:MD_DigitalTransferOptions/gmd:onLine - [gmd:CI_OnlineResource[gmd:linkage/gmd:URL!=''] and ($resourceIdx = '' or position() = xs:integer($resourceIdx))] - [($resourceHash != '' or ($updateKey != '' and normalize-space($updateKey) = concat( + <!-- Template to match all gmd:onLine elements --> + <xsl:template match="//gmd:MD_DigitalTransferOptions/gmd:onLine" priority="2"> + <!-- Calculate the global position of the current gmd:onLine element --> + <xsl:variable name="position" select="count(//gmd:MD_DigitalTransferOptions/gmd:onLine[current() >> .]) + 1" /> + + <xsl:choose> + <xsl:when test="gmd:CI_OnlineResource[gmd:linkage/gmd:URL != ''] and + ($resourceIdx = '' or $position = xs:integer($resourceIdx)) and + ($resourceHash != '' or ($updateKey != '' and normalize-space($updateKey) = concat( gmd:CI_OnlineResource/gmd:linkage/gmd:URL, gmd:CI_OnlineResource/gmd:protocol/*, gmd:CI_OnlineResource/gmd:name/gco:CharacterString))) - and ($resourceHash = '' or digestUtils:md5Hex(string(exslt:node-set(normalize-space(.)))) = $resourceHash)]" - priority="2"> - <xsl:call-template name="createOnlineSrc"/> + and ($resourceHash = '' or digestUtils:md5Hex(normalize-space(.)) = $resourceHash)"> + <xsl:call-template name="createOnlineSrc"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> </xsl:template> - <xsl:template name="createOnlineSrc"> <!-- Add all online source from the target metadata to the current one --> @@ -243,7 +253,7 @@ Note: It assumes that it will be adding new items in </gmd:URL> </gmd:linkage> <gmd:protocol> - <xsl:call-template name="setProtocol"/> + <xsl:call-template name="setProtocol"/> </gmd:protocol> <xsl:if test="$applicationProfile != ''"> diff --git a/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-remove.xsl b/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-remove.xsl index 718f483eced..5ea7b210773 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-remove.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/process/onlinesrc-remove.xsl @@ -53,15 +53,25 @@ Stylesheet used to remove a reference to a online resource. <!-- Remove the gmd:onLine define in url parameter --> <!-- Note: first part of the match needs to match the xsl:for-each select from extract-relations.xsl in order to get the position() to match --> <!-- The unique identifier is marked with resourceIdx which is the position index and resourceHash which is hash code of the current node (combination of url, resource name, and description) --> - <xsl:template - match="*//gmd:MD_DigitalTransferOptions/gmd:onLine - [gmd:CI_OnlineResource[gmd:linkage/gmd:URL!=''] and ($resourceIdx = '' or (count(preceding::gmd:onLine) + 1) = xs:integer($resourceIdx))] - [($resourceHash != '' or ($url != null and (normalize-space(gmd:CI_OnlineResource/gmd:linkage/gmd:URL) = $url and normalize-space(gmd:CI_OnlineResource/gmd:name/gco:CharacterString) = normalize-space($name) + <xsl:template match="//gmd:MD_DigitalTransferOptions/gmd:onLine" priority="2"> + + <!-- Calculate the global position of the current gmd:onLine element --> + <xsl:variable name="position" select="count(//gmd:MD_DigitalTransferOptions/gmd:onLine[current() >> .]) + 1" /> + + <xsl:if test="not( + gmd:CI_OnlineResource[gmd:linkage/gmd:URL != ''] and + ($resourceIdx = '' or $position = xs:integer($resourceIdx)) and + ($resourceHash != '' or ($url != null and (normalize-space(gmd:CI_OnlineResource/gmd:linkage/gmd:URL) = $url and normalize-space(gmd:CI_OnlineResource/gmd:name/gco:CharacterString) = normalize-space($name) or normalize-space(gmd:CI_OnlineResource/gmd:linkage/gmd:URL) = $url and count(gmd:CI_OnlineResource/gmd:name/gmd:PT_FreeText/gmd:textGroup[gmd:LocalisedCharacterString = $name]) > 0 or normalize-space(gmd:CI_OnlineResource/gmd:linkage/gmd:URL) = $url and normalize-space(gmd:CI_OnlineResource/gmd:protocol/*) = 'WWW:DOWNLOAD-1.0-http--download')) ) - and ($resourceHash = '' or digestUtils:md5Hex(string(exslt:node-set(normalize-space(.)))) = $resourceHash)]" - priority="2"/> + and ($resourceHash = '' or digestUtils:md5Hex(normalize-space(.)) = $resourceHash) + )"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:if> + </xsl:template> <!-- Do a copy of every node and attribute --> <xsl:template match="@*|node()"> diff --git a/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-add.xsl b/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-add.xsl index 16b975a837c..4c173556039 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-add.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-add.xsl @@ -27,7 +27,9 @@ xmlns:srv="http://www.isotc211.org/2005/srv" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:geonet="http://www.fao.org/geonetwork" - exclude-result-prefixes="#all" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:digestUtils="java:org.apache.commons.codec.digest.DigestUtils" + exclude-result-prefixes="#all" version="2.0"> <!-- @@ -41,11 +43,22 @@ <xsl:param name="thumbnail_desc" select="''"/> <xsl:param name="thumbnail_type" select="''"/> - <!-- Target element to update. The key is based on the concatenation - of URL+Name --> - <xsl:param name="updateKey"/> - - <xsl:template match="gmd:identificationInfo/*"> + <!-- Target element to update. + updateKey is used to identify the resource name to be updated - it is for backwards compatibility. Will not be used if resourceHash is set. + The key is based on the concatenation of URL+Name + resourceHash is hash value of the object to be removed which will ensure the correct value is removed. It will override the usage of updateKey + resourceIdx is the index location of the object to be removed - can be used when duplicate entries exists to ensure the correct one is removed. +--> + <xsl:param name="updateKey" select="''"/> + <xsl:param name="resourceHash" select="''"/> + <xsl:param name="resourceIdx" select="''"/> + + <xsl:variable name="update_flag"> + <xsl:value-of select="boolean($updateKey != '' or $resourceHash != '' or $resourceIdx != '')"/> + </xsl:variable> + + <!-- Add new gmd:graphicOverview --> + <xsl:template match="gmd:identificationInfo/*[$update_flag = false()]"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates select="gmd:citation"/> @@ -56,9 +69,7 @@ <xsl:apply-templates select="gmd:pointOfContact"/> <xsl:apply-templates select="gmd:resourceMaintenance"/> - <xsl:if test="$updateKey = ''"> - <xsl:call-template name="fill"/> - </xsl:if> + <xsl:call-template name="fill"/> <xsl:apply-templates select="gmd:graphicOverview"/> @@ -83,12 +94,19 @@ </xsl:copy> </xsl:template> - - <xsl:template match="gmd:graphicOverview[concat( - */gmd:fileName/gco:CharacterString, - */gmd:fileName/gmd:PT_FreeText/gmd:textGroup/gmd:LocalisedCharacterString[@locale = '#DE'], - */gmd:fileDescription/gmd:PT_FreeText/gmd:textGroup/gmd:LocalisedCharacterString[@locale = '#DE'], - */gmd:fileDescription/gco:CharacterString) = normalize-space($updateKey)]"> + <!-- Updating the gmd:graphicOverview based on update parameters --> + <!-- Note: first part of the match needs to match the xsl:for-each select from extract-relations.xsl in order to get the position() to match --> + <!-- The unique identifier is marked with resourceIdx which is the position index and resourceHash which is hash code of the current node (combination of url, resource name, and description) --> + <xsl:template + priority="2" + match="*//gmd:graphicOverview + [$resourceIdx = '' or position() = xs:integer($resourceIdx)] + [ ($resourceHash != '' or ($updateKey != '' and normalize-space($updateKey) = concat( + */gmd:fileName/gco:CharacterString, + */gmd:fileName/gmd:PT_FreeText/gmd:textGroup/gmd:LocalisedCharacterString[@locale = '#DE'], + */gmd:fileDescription/gmd:PT_FreeText/gmd:textGroup/gmd:LocalisedCharacterString[@locale = '#DE'], + */gmd:fileDescription/gco:CharacterString))) + and ($resourceHash = '' or digestUtils:md5Hex(normalize-space(.)) = $resourceHash)]"> <xsl:call-template name="fill"/> </xsl:template> diff --git a/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-remove.xsl b/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-remove.xsl index a856ed23dd1..cd20ebb8147 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-remove.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/process/thumbnail-remove.xsl @@ -25,22 +25,47 @@ <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:xs="http://www.w3.org/2001/XMLSchema" xmlns:geonet="http://www.fao.org/geonetwork" exclude-result-prefixes="#all" + xmlns:digestUtils="java:org.apache.commons.codec.digest.DigestUtils" version="2.0"> <!-- Usage: + thumbnail_url is the url to be removed - it is for backwards compatibility. Will not be used if resourceHash is set. + resourceHash is hash value of the object to be removed which will ensure the correct value is removed. It will override the usage of thumbnail_url + resourceIdx is the index location of the object to be removed - can be used when duplicate entries exists to ensure the correct one is removed. + + example: thumbnail-from-url-remove?thumbnail_url=http://geonetwork.org/thumbnails/image.png --> - <xsl:param name="thumbnail_url"/> + <xsl:param name="thumbnail_url" select="''"/> + <xsl:param name="resourceHash" select="''"/> + <xsl:param name="resourceIdx" select="''"/> <!-- Remove the thumbnail define in thumbnail_url parameter --> - <xsl:template - priority="2" - match="gmd:graphicOverview[normalize-space(gmd:MD_BrowseGraphic/gmd:fileName/gco:CharacterString) = normalize-space($thumbnail_url)]"/> + <!-- Note: first part of the match needs to match the xsl:for-each select from extract-relations.xsl in order to get the position() to match --> + <!-- The unique identifier is marked with resourceIdx which is the position index and resourceHash which is hash code of the current node (combination of url, resource name, and description) --> + + <xsl:template match="//gmd:graphicOverview" priority="2"> + + <!-- Calculate the global position of the current gmd:onLine element --> + <xsl:variable name="position" select="count(//gmd:graphicOverview[current() >> .]) + 1" /> + + <xsl:if test="not( + ($resourceIdx = '' or $position = xs:integer($resourceIdx)) and + ($resourceHash != '' or ($thumbnail_url != null and (normalize-space(gmd:MD_BrowseGraphic/gmd:fileName/gco:CharacterString) = normalize-space($thumbnail_url)))) + and ($resourceHash = '' or digestUtils:md5Hex(normalize-space(.)) = $resourceHash) + )"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:if> + </xsl:template> + - <!-- Do a copy of every nodes and attributes --> + <!-- Do a copy of every node and attribute --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> diff --git a/schemas/iso19139/src/main/resources/config-spring-geonetwork.xml b/schemas/iso19139/src/main/resources/config-spring-geonetwork.xml index 2f93be95697..97e8f27ea91 100644 --- a/schemas/iso19139/src/main/resources/config-spring-geonetwork.xml +++ b/schemas/iso19139/src/main/resources/config-spring-geonetwork.xml @@ -31,6 +31,21 @@ <bean id="iso19139SchemaPlugin" class="org.fao.geonet.schema.iso19139.ISO19139SchemaPlugin"> + <property name="outputSchemas"> + <util:map key-type="java.lang.String" value-type="java.lang.String"> + <entry key="csw" value="http://www.opengis.net/cat/csw/2.0.2"/> + <entry key="mdb" value="http://standards.iso.org/iso/19115/-3/mdb/2.0"/> + <entry key="gmd" value="http://www.isotc211.org/2005/gmd"/> + <entry key="dcat" value="http://www.w3.org/ns/dcat#"/> + <entry key="dcat-core" value="http://www.w3.org/ns/dcat#core"/> + <entry key="eu-dcat-ap" value="http://data.europa.eu/r5r/"/> + <!-- EU DCAT HVD does not define a particular namespace --> + <entry key="eu-dcat-ap-hvd" value="https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd/"/> + <entry key="eu-dcat-ap-mobility" value="https://w3id.org/mobilitydcat-ap"/> + <entry key="eu-geodcat-ap" value="http://data.europa.eu/930/"/> + <entry key="eu-geodcat-ap-semiceu" value="http://data.europa.eu/930/#semiceu"/> + </util:map> + </property> <property name="xpathTitle"> <util:list value-type="java.lang.String"> <value>gmd:identificationInfo/*/gmd:citation/*/gmd:title/gco:CharacterString</value> diff --git a/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/CSWPlugin.java b/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/CSWPlugin.java index 02d8a1d8dfb..260acdb957a 100644 --- a/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/CSWPlugin.java +++ b/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/CSWPlugin.java @@ -23,7 +23,6 @@ package org.fao.geonet.kernel.schema; -import org.jdom.Element; import org.jdom.Namespace; import java.util.Map; @@ -33,4 +32,5 @@ public interface CSWPlugin { * Return the list of typenames and corresponding namespace for the plugin. */ Map<String, Namespace> getCswTypeNames(); + } diff --git a/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/SchemaPlugin.java b/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/SchemaPlugin.java index a2396ae937a..605358b1a45 100644 --- a/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/SchemaPlugin.java +++ b/schemas/schema-core/src/main/java/org/fao/geonet/kernel/schema/SchemaPlugin.java @@ -29,17 +29,18 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; +import java.util.*; -/** - * Created by francois on 6/16/14. - */ public abstract class SchemaPlugin implements CSWPlugin { public static final String LOGGER_NAME = "geonetwork.schema-plugin"; + /** + * List of output schemas supported by the CSW for this plugin. + * The key correspond to the XSLT filename to use for the corresponding value (usually URI). + * XSLT are in the folder present/csw/{key-?(brief|summary|full)?}.xsl + */ + private Map<String, String> outputSchemas = new HashMap<>(); + protected SchemaPlugin(String identifier, ImmutableSet<Namespace> allNamespaces) { this.identifier = identifier; @@ -126,4 +127,12 @@ public List<HttpLink> getAnalyzedLinks() { public Element processElement(Element el, String attributeName, String parsedAttributeName, String attributeValue) { return el; }; + + public Map<String, String> getOutputSchemas() { + return outputSchemas; + } + + public void setOutputSchemas(Map<String, String> outputSchemas) { + this.outputSchemas = outputSchemas; + } } diff --git a/services/pom.xml b/services/pom.xml index e0ccd7873f1..c0c9b6071ad 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -116,6 +116,11 @@ <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> + <dependency> + <groupId>org.xmlunit</groupId> + <artifactId>xmlunit-core</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> @@ -232,11 +237,14 @@ <artifactId>powermock-api-mockito</artifactId> <scope>test</scope> </dependency> - <!-- Apache commons csv --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> </dependency> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </dependency> <dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> diff --git a/services/src/main/java/org/fao/geonet/api/categories/TagsApi.java b/services/src/main/java/org/fao/geonet/api/categories/TagsApi.java index d87bab7908a..3447a171fac 100644 --- a/services/src/main/java/org/fao/geonet/api/categories/TagsApi.java +++ b/services/src/main/java/org/fao/geonet/api/categories/TagsApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.categories; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -180,7 +182,7 @@ public org.fao.geonet.domain.MetadataCategory getTag( @PreAuthorize("hasAuthority('UserAdmin')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Tag updated."), + @ApiResponse(responseCode = "204", description = "Tag updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @ResponseBody @@ -239,7 +241,7 @@ private void updateCategory( method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Tag removed."), + @ApiResponse(responseCode = "204", description = "Tag removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @PreAuthorize("hasAuthority('UserAdmin')") diff --git a/services/src/main/java/org/fao/geonet/api/doiservers/DoiServersApi.java b/services/src/main/java/org/fao/geonet/api/doiservers/DoiServersApi.java new file mode 100644 index 00000000000..68f248c0ffa --- /dev/null +++ b/services/src/main/java/org/fao/geonet/api/doiservers/DoiServersApi.java @@ -0,0 +1,327 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.api.doiservers; + +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.fao.geonet.api.ApiParams; +import org.fao.geonet.api.doiservers.model.AnonymousDoiServer; +import org.fao.geonet.api.doiservers.model.DoiServerDto; +import org.fao.geonet.api.exception.ResourceNotFoundException; +import org.fao.geonet.domain.AbstractMetadata; +import org.fao.geonet.domain.DoiServer; +import org.fao.geonet.kernel.datamanager.IMetadataUtils; +import org.fao.geonet.repository.DoiServerRepository; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.stream.Collectors; + +@RequestMapping(value = { + "/{portal}/api/doiservers" +}) +@Tag(name = "doiservers", + description = "DOI servers related operations") +@RestController("doiservers") +public class DoiServersApi { + private static final String API_PARAM_DOISERVER_IDENTIFIER = "DOI server identifier"; + + private static final String API_PARAM_DOISERVER_DETAILS = "DOI server details"; + + public static final String MSG_DOISERVER_WITH_ID_NOT_FOUND = "DOI server with id '%s' not found."; + + + private final DoiServerRepository doiServerRepository; + + private final IMetadataUtils metadataUtils; + + DoiServersApi(final DoiServerRepository doiServerRepository, final IMetadataUtils metadataUtils) { + this.doiServerRepository = doiServerRepository; + this.metadataUtils = metadataUtils; + + } + + @io.swagger.v3.oas.annotations.Operation( + summary = "Get DOI servers" + ) + @GetMapping( + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + public + @ResponseStatus(HttpStatus.OK) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "List of all DOI servers."), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) + }) + List<AnonymousDoiServer> getDoiServers() { + List<DoiServer> doiServers = doiServerRepository.findAll(); + List<AnonymousDoiServer> list = new ArrayList<>(doiServers.size()); + doiServers.stream().forEach(e -> list.add(new AnonymousDoiServer(DoiServerDto.from(e)))); + return list; + } + + + @io.swagger.v3.oas.annotations.Operation( + summary = "Get DOI servers that can be used with a metadata" + ) + @GetMapping(value = "metadata/{metadataId}", + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + public + @ResponseStatus(HttpStatus.OK) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "List of all DOI servers where a metadata can be published."), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) + }) + List<AnonymousDoiServer> getDoiServers( + @Parameter(description = "Metadata UUID", + required = true, + example = "") + @PathVariable Integer metadataId) { + + List<DoiServer> doiServers = doiServerRepository.findAll(); + List<AnonymousDoiServer> list = new ArrayList<>(doiServers.size()); + + AbstractMetadata metadata = metadataUtils.findOne(metadataId); + Integer groupOwner = metadata.getSourceInfo().getGroupOwner(); + + // Find servers related to the metadata groups owner + List<DoiServer> doiServersForMetadata = doiServers.stream().filter( + s -> s.getPublicationGroups().stream().anyMatch(g -> g.getId() == groupOwner)).collect(Collectors.toList()); + + if (doiServersForMetadata.isEmpty()) { + // If no servers related to the metadata groups owner, + // find the servers that are not related to any metadata group + doiServersForMetadata = doiServers.stream() + .filter(s -> s.getPublicationGroups().isEmpty()) + .collect(Collectors.toList()); + } + + doiServersForMetadata.forEach(s -> { + DoiServerDto doiServerDto = DoiServerDto.from(s); + list.add(new AnonymousDoiServer(doiServerDto)); + }); + + Collections.sort(list, Comparator.comparing(DoiServerDto::getName)); + + return list; + } + + @io.swagger.v3.oas.annotations.Operation( + summary = "Get a DOI Server" + ) + @GetMapping(value = "/{doiServerId}", + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_EDITOR) + }) + public AnonymousDoiServer getDoiServer( + @Parameter(description = API_PARAM_DOISERVER_IDENTIFIER, + required = true, + example = "") + @PathVariable String doiServerId + ) throws ResourceNotFoundException { + Optional<DoiServer> doiServerOpt = doiServerRepository.findOneById(Integer.parseInt(doiServerId)); + if (doiServerOpt.isEmpty()) { + throw new ResourceNotFoundException(String.format( + MSG_DOISERVER_WITH_ID_NOT_FOUND, + doiServerId + )); + } else { + return new AnonymousDoiServer(DoiServerDto.from(doiServerOpt.get())); + } + } + + @io.swagger.v3.oas.annotations.Operation( + summary = "Add a DOI server", + description = "Return the id of the newly created DOI server." + ) + @PutMapping( + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "201", description = "DOI server created."), + @ApiResponse(responseCode = "400", description = "Bad parameters."), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) + }) + @ResponseStatus(HttpStatus.CREATED) + public ResponseEntity<Integer> addDoiServer( + @Parameter( + description = API_PARAM_DOISERVER_DETAILS, + required = true + ) + @RequestBody + DoiServerDto doiServerDto + ) { + Optional<DoiServer> existingDoiServerOpt = doiServerRepository.findOneById(doiServerDto.getId()); + if (existingDoiServerOpt.isPresent()) { + throw new IllegalArgumentException(String.format( + "DOI server with id '%d' already exists.", + doiServerDto.getId() + )); + } else { + DoiServer doiServer = doiServerDto.asDoiServer(); + doiServerRepository.save(doiServer); + + return new ResponseEntity<>(doiServer.getId(), HttpStatus.CREATED); + } + } + + @io.swagger.v3.oas.annotations.Operation( + summary = "Update a DOI server" + ) + @PutMapping( + value = "/{doiServerId}", + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "DOI server updated."), + @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void updateDoiServer( + @Parameter(description = API_PARAM_DOISERVER_IDENTIFIER, + required = true, + example = "") + @PathVariable Integer doiServerId, + @Parameter(description = API_PARAM_DOISERVER_DETAILS, + required = true) + @RequestBody + DoiServerDto doiServerDto + ) throws ResourceNotFoundException { + Optional<DoiServer> existingMapserverOpt = doiServerRepository.findOneById(doiServerId); + if (existingMapserverOpt.isPresent()) { + DoiServer doiServer = doiServerDto.asDoiServer(); + + doiServerRepository.update(doiServerId, entity -> { + entity.setName(doiServer.getName()); + entity.setDescription(doiServer.getDescription()); + entity.setUrl(doiServer.getUrl()); + entity.setUsername(doiServer.getUsername()); + entity.setPublicUrl(doiServer.getPublicUrl()); + entity.setLandingPageTemplate(doiServer.getLandingPageTemplate()); + entity.setPattern(doiServer.getPattern()); + entity.setPrefix(doiServer.getPrefix()); + entity.setPublicationGroups(doiServer.getPublicationGroups()); + }); + } else { + throw new ResourceNotFoundException(String.format( + MSG_DOISERVER_WITH_ID_NOT_FOUND, + doiServerId + )); + } + } + + @io.swagger.v3.oas.annotations.Operation( + summary = "Remove a DOI server" + ) + @DeleteMapping( + value = "/{doiServerId}", + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "DOI server removed."), + @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void deleteMapserver( + @Parameter(description = API_PARAM_DOISERVER_IDENTIFIER, + required = true + ) + @PathVariable Integer doiServerId + ) throws ResourceNotFoundException { + Optional<DoiServer> existingMapserverOpt = doiServerRepository.findOneById(doiServerId); + if (existingMapserverOpt.isPresent()) { + doiServerRepository.delete(existingMapserverOpt.get()); + } else { + throw new ResourceNotFoundException(String.format( + MSG_DOISERVER_WITH_ID_NOT_FOUND, + doiServerId + )); + } + } + + + @io.swagger.v3.oas.annotations.Operation( + summary = "Update a DOI server authentication" + ) + @PostMapping( + value = "/{doiServerId}/auth", + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + @PreAuthorize("hasAuthority('Administrator')") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "DOI server updated."), + @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), + @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void updateDoiServerAuth( + @Parameter( + description = API_PARAM_DOISERVER_IDENTIFIER, + required = true, + example = "") + @PathVariable Integer doiServerId, + @Parameter( + description = "Password", + required = true) + @RequestParam + String password + ) throws ResourceNotFoundException { + Optional<DoiServer> existingMapserverOpt = doiServerRepository.findOneById(doiServerId); + if (existingMapserverOpt.isPresent()) { + doiServerRepository.update(doiServerId, entity -> { + entity.setPassword(password); + }); + } else { + throw new ResourceNotFoundException(String.format( + MSG_DOISERVER_WITH_ID_NOT_FOUND, + doiServerId + )); + } + } +} diff --git a/services/src/main/java/org/fao/geonet/api/doiservers/model/AnonymousDoiServer.java b/services/src/main/java/org/fao/geonet/api/doiservers/model/AnonymousDoiServer.java new file mode 100644 index 00000000000..7760a19b932 --- /dev/null +++ b/services/src/main/java/org/fao/geonet/api/doiservers/model/AnonymousDoiServer.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.api.doiservers.model; + +public class AnonymousDoiServer extends DoiServerDto { + + public AnonymousDoiServer(DoiServerDto doiServer) { + super(); + this + .setId(doiServer.getId()) + .setName(doiServer.getName()) + .setUsername(doiServer.getUsername()) + .setDescription(doiServer.getDescription()) + .setUrl(doiServer.getUrl()) + .setLandingPageTemplate(doiServer.getLandingPageTemplate()) + .setPattern(doiServer.getPattern()) + .setPublicUrl(doiServer.getPublicUrl()) + .setPrefix(doiServer.getPrefix()) + .setPublicationGroups(doiServer.getPublicationGroups()); + } + + @Override + public String getPassword() { + return "***"; + } +} diff --git a/services/src/main/java/org/fao/geonet/api/doiservers/model/DoiServerDto.java b/services/src/main/java/org/fao/geonet/api/doiservers/model/DoiServerDto.java new file mode 100644 index 00000000000..f20514181c1 --- /dev/null +++ b/services/src/main/java/org/fao/geonet/api/doiservers/model/DoiServerDto.java @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.api.doiservers.model; + +import org.fao.geonet.ApplicationContextHolder; +import org.fao.geonet.domain.DoiServer; +import org.fao.geonet.domain.Group; +import org.fao.geonet.repository.GroupRepository; + +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +public class DoiServerDto { + private int id; + private String name; + private String description; + private String url; + private String username; + private String password; + private String landingPageTemplate; + private String publicUrl; + private String pattern = "{{uuid}}"; + private String prefix; + private Set<Integer> publicationGroups = new HashSet<>(); + + + public int getId() { + return id; + } + + public DoiServerDto setId(int id) { + this.id = id; + return this; + } + + public String getName() { + return name; + } + + public DoiServerDto setName(String name) { + this.name = name; + return this; + } + + public String getDescription() { + return description; + } + + public DoiServerDto setDescription(String description) { + this.description = description; + return this; + } + + public String getUrl() { + return url; + } + + public DoiServerDto setUrl(String url) { + this.url = url; + return this; + } + + public String getUsername() { + return username; + } + + public DoiServerDto setUsername(String username) { + this.username = username; + return this; + } + + public String getPassword() { + return password; + } + + public DoiServerDto setPassword(String password) { + this.password = password; + return this; + } + + public String getLandingPageTemplate() { + return landingPageTemplate; + } + + public DoiServerDto setLandingPageTemplate(String landingPageTemplate) { + this.landingPageTemplate = landingPageTemplate; + return this; + } + + public String getPublicUrl() { + return publicUrl; + } + + public DoiServerDto setPublicUrl(String publicUrl) { + this.publicUrl = publicUrl; + return this; + } + + public String getPattern() { + return pattern; + } + + public DoiServerDto setPattern(String pattern) { + this.pattern = pattern; + return this; + } + + public String getPrefix() { + return prefix; + } + + public DoiServerDto setPrefix(String prefix) { + this.prefix = prefix; + return this; + } + + public Set<Integer> getPublicationGroups() { + return publicationGroups; + } + + public DoiServerDto setPublicationGroups(Set<Integer> publicationGroups) { + this.publicationGroups = publicationGroups; + return this; + } + + public static DoiServerDto from(DoiServer doiServer) { + DoiServerDto doiServerDto = new DoiServerDto(); + + doiServerDto.setId(doiServer.getId()); + doiServerDto.setName(doiServer.getName()); + doiServerDto.setDescription(doiServer.getDescription()); + doiServerDto.setUrl(doiServer.getUrl()); + doiServerDto.setUsername(doiServer.getUsername()); + doiServerDto.setPassword(doiServer.getPassword()); + doiServerDto.setPattern(doiServer.getPattern()); + doiServerDto.setLandingPageTemplate(doiServer.getLandingPageTemplate()); + doiServerDto.setPublicUrl(doiServer.getPublicUrl()); + doiServerDto.setPrefix(doiServer.getPrefix()); + doiServerDto.setPublicationGroups(doiServer.getPublicationGroups().stream().map(Group::getId).collect(Collectors.toSet())); + + return doiServerDto; + } + + public DoiServer asDoiServer() { + DoiServer doiServer = new DoiServer(); + + doiServer.setId(getId()); + doiServer.setName(getName()); + doiServer.setDescription(getDescription()); + doiServer.setUrl(getUrl()); + doiServer.setUsername(getUsername()); + doiServer.setPassword(getPassword()); + doiServer.setPattern(getPattern()); + doiServer.setLandingPageTemplate(getLandingPageTemplate()); + doiServer.setPublicUrl(getPublicUrl()); + doiServer.setPrefix(getPrefix()); + + GroupRepository groupRepository = ApplicationContextHolder.get().getBean(GroupRepository.class); + Set<Group> groups = new HashSet<>(); + getPublicationGroups().forEach(groupId -> { + if (groupId != null) { + Optional<Group> g = groupRepository.findById(groupId); + + if (g.isPresent()) { + groups.add(g.get()); + } + } + }); + doiServer.setPublicationGroups(groups); + + return doiServer; + } +} diff --git a/services/src/main/java/org/fao/geonet/api/es/EsHTTPProxy.java b/services/src/main/java/org/fao/geonet/api/es/EsHTTPProxy.java index a2a0cd1bcb2..caf3c9ea8ad 100644 --- a/services/src/main/java/org/fao/geonet/api/es/EsHTTPProxy.java +++ b/services/src/main/java/org/fao/geonet/api/es/EsHTTPProxy.java @@ -330,11 +330,15 @@ public void search( description = "The multi search API executes several searches from a single API request. See https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html for search parameters, and https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html Query DSL.") @RequestMapping(value = "/search/records/_msearch", method = RequestMethod.POST, - produces = MediaType.APPLICATION_JSON_VALUE, - consumes = MediaType.APPLICATION_JSON_VALUE) + produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_NDJSON_VALUE}, + consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_NDJSON_VALUE}) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Search results.", - content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, schema = @Schema(type = "string"))) + content = { + @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, schema = @Schema(type = "string")), + @Content(mediaType = MediaType.APPLICATION_NDJSON_VALUE, schema = @Schema(type = "string")) + } + ) }) @ResponseStatus(value = HttpStatus.OK) @ResponseBody diff --git a/services/src/main/java/org/fao/geonet/api/groups/GroupsApi.java b/services/src/main/java/org/fao/geonet/api/groups/GroupsApi.java index 0b0fb4980d2..12479f28e49 100644 --- a/services/src/main/java/org/fao/geonet/api/groups/GroupsApi.java +++ b/services/src/main/java/org/fao/geonet/api/groups/GroupsApi.java @@ -26,6 +26,8 @@ import com.google.common.base.Functions; import com.google.common.collect.Lists; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -430,7 +432,7 @@ public List<User> getGroupUsers( @ResponseStatus(value = HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('UserAdmin')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Group updated."), + @ApiResponse(responseCode = "204", description = "Group updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @@ -485,7 +487,7 @@ public void updateGroup( @ResponseStatus(value = HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('Administrator')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Group removed."), + @ApiResponse(responseCode = "204", description = "Group removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) diff --git a/services/src/main/java/org/fao/geonet/api/harvesting/HarvestersApi.java b/services/src/main/java/org/fao/geonet/api/harvesting/HarvestersApi.java index ca2b45d30f7..1e6973dde27 100644 --- a/services/src/main/java/org/fao/geonet/api/harvesting/HarvestersApi.java +++ b/services/src/main/java/org/fao/geonet/api/harvesting/HarvestersApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.harvesting; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -98,7 +100,7 @@ public class HarvestersApi { @ResponseStatus(value = HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('UserAdmin')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Harvester records transfered to new source."), + @ApiResponse(responseCode = "204", description = "Harvester records transfered to new source.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) diff --git a/services/src/main/java/org/fao/geonet/api/identifiers/IdentifiersApi.java b/services/src/main/java/org/fao/geonet/api/identifiers/IdentifiersApi.java index ddf0c3be357..b658f37e006 100644 --- a/services/src/main/java/org/fao/geonet/api/identifiers/IdentifiersApi.java +++ b/services/src/main/java/org/fao/geonet/api/identifiers/IdentifiersApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.identifiers; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -61,9 +63,9 @@ public class IdentifiersApi { @io.swagger.v3.oas.annotations.Operation( summary = "Get identifier templates", description = "Identifier templates are used to create record UUIDs " + - "havind a particular structure. The template will be used " + - "when user creates a new record. The template identifier to " + - "use is defined in the administration > settings." + "having a particular structure. The template will be used " + + "when user creates a new record. The identifier template to " + + "use is defined in the admin console > metadata and templates." // authorizations = { // @Authorization(value = "basicAuth") // }) @@ -153,7 +155,7 @@ public ResponseEntity<Integer> addIdentifier( ) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Identifier template updated."), + @ApiResponse(responseCode = "204", description = "Identifier template updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Resource not found."), @ApiResponse(responseCode = "403", description = "Operation not allowed. Only Editor can access it.") }) @@ -198,7 +200,7 @@ public void updateIdentifier( ) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Template identifier removed."), + @ApiResponse(responseCode = "204", description = "Template identifier removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Resource not found."), @ApiResponse(responseCode = "403", description = "Operation not allowed. Only Editor can access it.") }) diff --git a/services/src/main/java/org/fao/geonet/api/languages/LanguagesApi.java b/services/src/main/java/org/fao/geonet/api/languages/LanguagesApi.java index e62541f05a4..c9cbcc7d59d 100644 --- a/services/src/main/java/org/fao/geonet/api/languages/LanguagesApi.java +++ b/services/src/main/java/org/fao/geonet/api/languages/LanguagesApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.languages; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -185,7 +187,7 @@ public void addLanguages( @PreAuthorize("hasAuthority('Administrator')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Language translations removed."), + @ApiResponse(responseCode = "204", description = "Language translations removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Resource not found."), @ApiResponse(responseCode = "403", description = "Operation not allowed. Only Administrator can access it.") }) diff --git a/services/src/main/java/org/fao/geonet/api/mapservers/GeoServerRest.java b/services/src/main/java/org/fao/geonet/api/mapservers/GeoServerRest.java index a6f4d19a446..d7d347cbd4f 100644 --- a/services/src/main/java/org/fao/geonet/api/mapservers/GeoServerRest.java +++ b/services/src/main/java/org/fao/geonet/api/mapservers/GeoServerRest.java @@ -346,11 +346,14 @@ public boolean createDatastore(String ws, String ds, String file) throws IOExcep } else if (file.startsWith("file://")) { type = "external"; } + boolean isZip = ".zip".equals(extension); Log.debug(Geonet.GEOPUBLISH, "Creating datastore " + ds + " in workspace " + ws + " from file " + file); - int status = sendREST(GeoServerRest.METHOD_PUT, "/workspaces/" + ws - + "/datastores/" + ds + "/" + type + extension, file, null, - "text/plain", false); + int status = sendREST(GeoServerRest.METHOD_PUT, + "/workspaces/" + ws + "/datastores/" + ds + "/" + type + (isZip ? ".shp" : extension), + file, null, + (isZip ? "application/zip" : "text/plain"), + false); return status == 201; } @@ -473,18 +476,20 @@ public boolean createStyle(String ws, String layer, String sldbody) { } if (sldbody.isEmpty() || (!sldbody.isEmpty() && status != 200)) { String info = getLayerInfo(layer); - Element layerProperties = Xml.loadString(info, false); - String styleName = layerProperties.getChild("defaultStyle") - .getChild("name").getText(); - - Log.debug(Geonet.GEOPUBLISH, "Getting default style for " + styleName + " to apply to layer " + layer + " in workspace " + ws); - /* get the default style (polygon, line, point) from the global styles */ - status = sendREST(GeoServerRest.METHOD_GET, "/styles/" + styleName - + ".sld?quietOnNotFound=true", null, null, null, true); - - status = sendREST(GeoServerRest.METHOD_PUT, url + "/" + layer - + "_style", getResponse(), null, - "application/vnd.ogc.sld+xml", true); + if (info != null) { + Element layerProperties = Xml.loadString(info, false); + String styleName = layerProperties.getChild("defaultStyle") + .getChild("name").getText(); + + Log.debug(Geonet.GEOPUBLISH, "Getting default style for " + styleName + " to apply to layer " + layer + " in workspace " + ws); + /* get the default style (polygon, line, point) from the global styles */ + status = sendREST(GeoServerRest.METHOD_GET, "/styles/" + styleName + + ".sld?quietOnNotFound=true", null, null, null, true); + + status = sendREST(GeoServerRest.METHOD_PUT, url + "/" + layer + + "_style", getResponse(), null, + "application/vnd.ogc.sld+xml", true); + } } checkResponseCode(status); diff --git a/services/src/main/java/org/fao/geonet/api/mapservers/MapServersApi.java b/services/src/main/java/org/fao/geonet/api/mapservers/MapServersApi.java index f6a86262247..db1f0814de1 100644 --- a/services/src/main/java/org/fao/geonet/api/mapservers/MapServersApi.java +++ b/services/src/main/java/org/fao/geonet/api/mapservers/MapServersApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.mapservers; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -209,7 +211,7 @@ public ResponseEntity<Integer> addMapserver( }) @PreAuthorize("hasAuthority('Reviewer')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Mapserver updated."), + @ApiResponse(responseCode = "204", description = "Mapserver updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_REVIEWER) }) @@ -253,7 +255,7 @@ public void updateMapserver( }) @PreAuthorize("hasAuthority('Reviewer')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Mapserver updated."), + @ApiResponse(responseCode = "204", description = "Mapserver updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_REVIEWER) }) @@ -323,7 +325,7 @@ private void updateMapserver( }) @PreAuthorize("hasAuthority('Reviewer')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Mapserver removed."), + @ApiResponse(responseCode = "204", description = "Mapserver removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_REVIEWER) }) diff --git a/services/src/main/java/org/fao/geonet/api/mapservers/MapServersUtils.java b/services/src/main/java/org/fao/geonet/api/mapservers/MapServersUtils.java index 57c4aa03f54..83a19c251a8 100644 --- a/services/src/main/java/org/fao/geonet/api/mapservers/MapServersUtils.java +++ b/services/src/main/java/org/fao/geonet/api/mapservers/MapServersUtils.java @@ -259,7 +259,10 @@ public static boolean publishExternal(String file, GeoServerRest g, ACTION actio if (!g.deleteLayer(dsName)) report += "Layer: " + g.getStatus(); if (isRaster) { - + if (!g.deleteCoverage(dsName, dsName)) + report += "Coverage: " + g.getStatus(); + if (!g.deleteCoverageStore(dsName)) + report += "Coveragestore: " + g.getStatus(); } else { if (!g.deleteFeatureType(dsName, dsName)) report += "Feature type: " + g.getStatus(); diff --git a/services/src/main/java/org/fao/geonet/api/processing/ProcessApi.java b/services/src/main/java/org/fao/geonet/api/processing/ProcessApi.java index 775874d572d..94a7ed8ca86 100644 --- a/services/src/main/java/org/fao/geonet/api/processing/ProcessApi.java +++ b/services/src/main/java/org/fao/geonet/api/processing/ProcessApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.processing; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -99,7 +101,7 @@ public List<ProcessingReport> getProcessReport() throws Exception { MediaType.APPLICATION_JSON_VALUE }) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Report registry cleared."), + @ApiResponse(responseCode = "204", description = "Report registry cleared.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_AUTHENTICATED) }) @ResponseBody diff --git a/services/src/main/java/org/fao/geonet/api/records/CatalogApi.java b/services/src/main/java/org/fao/geonet/api/records/CatalogApi.java index e7547678245..08d060e3ca5 100644 --- a/services/src/main/java/org/fao/geonet/api/records/CatalogApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/CatalogApi.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2023 Food and Agriculture Organization of the + * Copyright (C) 2001-2024 Food and Agriculture Organization of the * United Nations (FAO-UN), United Nations World Food Programme (WFP) * and United Nations Environment Programme (UNEP) * @@ -125,8 +125,8 @@ public class CatalogApi { .add("geom") .add(SOURCE_CATALOGUE) .add(Geonet.IndexFieldNames.DATABASE_CHANGE_DATE) - .add("resourceTitleObject.default") // TODOES multilingual - .add("resourceAbstractObject.default").build(); + .add(Geonet.IndexFieldNames.RESOURCETITLE + "Object") + .add(Geonet.IndexFieldNames.RESOURCEABSTRACT + "Object").build(); } @Autowired @@ -167,7 +167,7 @@ private static String paramsAsString(Map<String, String> requestParams) { StringBuilder paramNonPaging = new StringBuilder(); for (Entry<String, String> pair : requestParams.entrySet()) { if (!pair.getKey().equals("from") && !pair.getKey().equals("to")) { - paramNonPaging.append(paramNonPaging.toString().equals("") ? "" : "&").append(pair.getKey()).append("=").append(pair.getValue()); + paramNonPaging.append(paramNonPaging.toString().isEmpty() ? "" : "&").append(pair.getKey()).append("=").append(pair.getValue()); } } return paramNonPaging.toString(); @@ -364,6 +364,11 @@ public void exportAsPdf( required = false ) String bucket, + @RequestParam( + required = false, + defaultValue = "eng" + ) + String language, @Parameter(hidden = true) @RequestParam Map<String, String> allRequestParams, @@ -384,76 +389,82 @@ public void exportAsPdf( final SearchResponse searchResponse = searchManager.query( String.format( - "uuid:(\"%s\")", - String.join("\" or \"", uuidList)), + "uuid:(\"%s\") AND NOT draft:\"y\"", // Skip working copies as duplicate UUIDs cause the PDF xslt to fail + String.join("\" OR \"", uuidList)), EsFilterBuilder.buildPermissionsFilter(ApiUtils.createServiceContext(httpRequest)), searchFieldsForPdf, 0, maxhits); Map<String, Object> params = new HashMap<>(); Element request = new Element("request"); - allRequestParams.entrySet().forEach(e -> { - Element n = new Element(e.getKey()); - n.setText(e.getValue()); + allRequestParams.forEach((key, value) -> { + Element n = new Element(key); + n.setText(value); request.addContent(n); }); + if (!languageUtils.getUiLanguages().contains(language)) { + language = languageUtils.getDefaultUiLanguage(); + } + + String langCode = "lang" + language; + Element response = new Element("response"); ObjectMapper objectMapper = new ObjectMapper(); searchResponse.hits().hits().forEach(h1 -> { Hit h = (Hit) h1; Element r = new Element("metadata"); final Map<String, Object> source = objectMapper.convertValue(h.source(), Map.class); - source.entrySet().forEach(e -> { - Object v = e.getValue(); + source.forEach((key, v) -> { if (v instanceof String) { - Element t = new Element(e.getKey()); + Element t = new Element(key); t.setText((String) v); r.addContent(t); - } else if (v instanceof HashMap && e.getKey().endsWith("Object")) { - Element t = new Element(e.getKey()); - Map<String, String> textFields = (HashMap) e.getValue(); - t.setText(textFields.get("default")); + } else if (v instanceof HashMap && key.endsWith("Object")) { + Element t = new Element(key); + Map<String, String> textFields = (HashMap) v; + String textValue = textFields.get(langCode) != null ? textFields.get(langCode) : textFields.get("default"); + t.setText(textValue); r.addContent(t); - } else if (v instanceof ArrayList && e.getKey().equals("link")) { + } else if (v instanceof ArrayList && key.equals("link")) { //landform|Physiography of North and Central Eurasia Landform|http://geonetwork3.fao.org/ows/7386_landf|OGC:WMS-1.1.1-http-get-map|application/vnd.ogc.wms_xml ((ArrayList) v).forEach(i -> { - Element t = new Element(e.getKey()); + Element t = new Element(key); Map<String, String> linkProperties = (HashMap) i; t.setText(linkProperties.get("description") + "|" + linkProperties.get("name") + "|" + linkProperties.get("url") + "|" + linkProperties.get("protocol")); r.addContent(t); }); - } else if (v instanceof HashMap && e.getKey().equals("overview")) { - Element t = new Element(e.getKey()); + } else if (v instanceof HashMap && key.equals("overview")) { + Element t = new Element(key); Map<String, String> overviewProperties = (HashMap) v; t.setText(overviewProperties.get("url") + "|" + overviewProperties.get("name")); r.addContent(t); } else if (v instanceof ArrayList) { ((ArrayList) v).forEach(i -> { - if (i instanceof HashMap && e.getKey().equals("overview")) { - Element t = new Element(e.getKey()); + if (i instanceof HashMap && key.equals("overview")) { + Element t = new Element(key); Map<String, String> overviewProperties = (HashMap) i; t.setText(overviewProperties.get("url") + "|" + overviewProperties.get("name")); r.addContent(t); } else if (i instanceof HashMap) { - Element t = new Element(e.getKey()); + Element t = new Element(key); Map<String, String> tags = (HashMap) i; t.setText(tags.get("default")); // TODOES: Multilingual support r.addContent(t); } else { - Element t = new Element(e.getKey()); + Element t = new Element(key); t.setText((String) i); r.addContent(t); } }); - } else if (v instanceof HashMap && e.getKey().equals("geom")) { - Element t = new Element(e.getKey()); + } else if (v instanceof HashMap && key.equals("geom")) { + Element t = new Element(key); t.setText(((HashMap) v).get("coordinates").toString()); r.addContent(t); } else if (v instanceof HashMap) { // Skip. } else { - Element t = new Element(e.getKey()); + Element t = new Element(key); t.setText(v.toString()); r.addContent(t); } @@ -461,14 +472,13 @@ public void exportAsPdf( response.addContent(r); }); - Locale locale = languageUtils.parseAcceptLanguage(httpRequest.getLocales()); - String language = IsoLanguagesMapper.iso639_2T_to_iso639_2B(locale.getISO3Language()); - language = XslUtil.twoCharLangCode(language, "eng").toLowerCase(); - new XsltResponseWriter("env", "search") - .withJson(String.format("catalog/locales/%s-v4.json", language)) - .withJson(String.format("catalog/locales/%s-core.json", language)) - .withJson(String.format("catalog/locales/%s-search.json", language)) + String language2Code = XslUtil.twoCharLangCode(language, "eng").toLowerCase(); + + new XsltResponseWriter("env", "search", language) + .withJson(String.format("catalog/locales/%s-v4.json", language2Code)) + .withJson(String.format("catalog/locales/%s-core.json", language2Code)) + .withJson(String.format("catalog/locales/%s-search.json", language2Code)) .withXml(response) .withParams(params) .withXsl("xslt/services/pdf/portal-present-fop.xsl") @@ -504,6 +514,11 @@ public void exportAsCsv( required = false ) String bucket, + @RequestParam( + required = false, + defaultValue = "eng" + ) + String language, @Parameter(description = "XPath pointing to the XML element to loop on.", required = false, example = "Use . for the metadata, " + @@ -575,7 +590,11 @@ public void exportAsCsv( } }); - Element r = new XsltResponseWriter(null, "search") + if (!languageUtils.getUiLanguages().contains(language)) { + language = languageUtils.getDefaultUiLanguage(); + } + + Element r = new XsltResponseWriter(null, "search", language) .withParams(allRequestParams.entrySet().stream() .collect(Collectors.toMap( Entry::getKey, diff --git a/services/src/main/java/org/fao/geonet/api/records/DoiApi.java b/services/src/main/java/org/fao/geonet/api/records/DoiApi.java index ce59aa1d8e4..f786642641a 100644 --- a/services/src/main/java/org/fao/geonet/api/records/DoiApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/DoiApi.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2016 Food and Agriculture Organization of the + * Copyright (C) 2001-2024 Food and Agriculture Organization of the * United Nations (FAO-UN), United Nations World Food Programme (WFP) * and United Nations Environment Programme (UNEP) * @@ -23,34 +23,35 @@ package org.fao.geonet.api.records; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import jeeves.server.context.ServiceContext; import jeeves.services.ReadWriteController; -import org.fao.geonet.api.API; import org.fao.geonet.api.ApiParams; import org.fao.geonet.api.ApiUtils; +import org.fao.geonet.api.exception.ResourceNotFoundException; import org.fao.geonet.doi.client.DoiManager; import org.fao.geonet.domain.AbstractMetadata; -import org.springframework.beans.factory.annotation.Autowired; +import org.fao.geonet.domain.DoiServer; +import org.fao.geonet.repository.DoiServerRepository; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Map; +import java.util.Optional; import static org.fao.geonet.api.ApiParams.API_CLASS_RECORD_OPS; import static org.fao.geonet.api.ApiParams.API_CLASS_RECORD_TAG; import static org.fao.geonet.api.ApiParams.API_PARAM_RECORD_UUID; +import static org.fao.geonet.api.doiservers.DoiServersApi.MSG_DOISERVER_WITH_ID_NOT_FOUND; /** * Handle DOI creation. @@ -60,19 +61,24 @@ }) @Tag(name = API_CLASS_RECORD_TAG, description = API_CLASS_RECORD_OPS) -@Controller("doi") +@RestController("doi") @PreAuthorize("hasAuthority('Editor')") @ReadWriteController public class DoiApi { - @Autowired - private DoiManager doiManager; + private final DoiManager doiManager; + + private final DoiServerRepository doiServerRepository; + + DoiApi(final DoiManager doiManager, final DoiServerRepository doiServerRepository) { + this.doiManager = doiManager; + this.doiServerRepository = doiServerRepository; + } @io.swagger.v3.oas.annotations.Operation( summary = "Check that a record can be submitted to DataCite for DOI creation. " + "DataCite requires some fields to be populated.") - @RequestMapping(value = "/{metadataUuid}/doi/checkPreConditions", - method = RequestMethod.GET, + @GetMapping(value = "/{metadataUuid}/doi/{doiServerId}/checkPreConditions", produces = { MediaType.APPLICATION_JSON_VALUE } @@ -86,27 +92,31 @@ public class DoiApi { @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) public - @ResponseBody ResponseEntity<Map<String, Boolean>> checkDoiStatus( @Parameter( description = API_PARAM_RECORD_UUID, required = true) @PathVariable String metadataUuid, + @Parameter( + description = "DOI server identifier", + required = true) + @PathVariable + Integer doiServerId, @Parameter(hidden = true) HttpServletRequest request ) throws Exception { AbstractMetadata metadata = ApiUtils.canEditRecord(metadataUuid, request); ServiceContext serviceContext = ApiUtils.createServiceContext(request); - final Map<String, Boolean> reportStatus = doiManager.check(serviceContext, metadata, null); + DoiServer doiServer = retrieveDoiServer(doiServerId); + final Map<String, Boolean> reportStatus = doiManager.check(serviceContext, doiServer, metadata, null); return new ResponseEntity<>(reportStatus, HttpStatus.OK); } @io.swagger.v3.oas.annotations.Operation( summary = "Check the DOI URL created based on current configuration and pattern.") - @RequestMapping(value = "/{metadataUuid}/doi/checkDoiUrl", - method = RequestMethod.GET, + @GetMapping(value = "/{metadataUuid}/doi/{doiServerId}/checkDoiUrl", produces = { MediaType.TEXT_PLAIN_VALUE } @@ -119,26 +129,30 @@ ResponseEntity<Map<String, Boolean>> checkDoiStatus( @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) public - @ResponseBody ResponseEntity<String> checkDoiUrl( @Parameter( description = API_PARAM_RECORD_UUID, required = true) @PathVariable String metadataUuid, + @Parameter( + description = "DOI server identifier", + required = true) + @PathVariable + Integer doiServerId, @Parameter(hidden = true) HttpServletRequest request ) throws Exception { AbstractMetadata metadata = ApiUtils.canEditRecord(metadataUuid, request); - return new ResponseEntity<>(doiManager.checkDoiUrl(metadata), HttpStatus.OK); + DoiServer doiServer = retrieveDoiServer(doiServerId); + return new ResponseEntity<>(doiManager.checkDoiUrl(doiServer, metadata), HttpStatus.OK); } @io.swagger.v3.oas.annotations.Operation( summary = "Submit a record to the Datacite metadata store in order to create a DOI.") - @RequestMapping(value = "/{metadataUuid}/doi", - method = RequestMethod.PUT, + @PutMapping(value = "/{metadataUuid}/doi/{doiServerId}", produces = { MediaType.APPLICATION_JSON_VALUE } @@ -151,13 +165,17 @@ ResponseEntity<String> checkDoiUrl( @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) public - @ResponseBody ResponseEntity<Map<String, String>> createDoi( @Parameter( description = API_PARAM_RECORD_UUID, required = true) @PathVariable String metadataUuid, + @Parameter( + description = "DOI server identifier", + required = true) + @PathVariable + Integer doiServerId, @Parameter(hidden = true) HttpServletRequest request, @Parameter(hidden = true) @@ -166,7 +184,8 @@ ResponseEntity<Map<String, String>> createDoi( AbstractMetadata metadata = ApiUtils.canEditRecord(metadataUuid, request); ServiceContext serviceContext = ApiUtils.createServiceContext(request); - Map<String, String> doiInfo = doiManager.register(serviceContext, metadata); + DoiServer doiServer = retrieveDoiServer(doiServerId); + Map<String, String> doiInfo = doiManager.register(serviceContext, doiServer, metadata); return new ResponseEntity<>(doiInfo, HttpStatus.CREATED); } @@ -174,22 +193,20 @@ ResponseEntity<Map<String, String>> createDoi( @io.swagger.v3.oas.annotations.Operation( summary = "Remove a DOI (this is not recommended, DOI are supposed to be persistent once created. This is mainly here for testing).") - @RequestMapping(value = "/{metadataUuid}/doi", - method = RequestMethod.DELETE, + @DeleteMapping(value = "/{metadataUuid}/doi/{doiServerId}", produces = { MediaType.APPLICATION_JSON_VALUE } ) @PreAuthorize("hasAuthority('Administrator')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "DOI unregistered."), + @ApiResponse(responseCode = "204", description = "DOI unregistered.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Metadata or DOI not found."), @ApiResponse(responseCode = "500", description = "Service unavailable."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) }) public - @ResponseBody - ResponseEntity unregisterDoi( + ResponseEntity<Void> unregisterDoi( @Parameter( description = API_PARAM_RECORD_UUID, required = true) @@ -197,16 +214,34 @@ ResponseEntity unregisterDoi( String metadataUuid, @Parameter(hidden = true) HttpServletRequest request, + @Parameter( + description = "DOI server identifier", + required = true) + @PathVariable + Integer doiServerId, @Parameter(hidden = true) HttpSession session ) throws Exception { AbstractMetadata metadata = ApiUtils.canEditRecord(metadataUuid, request); ServiceContext serviceContext = ApiUtils.createServiceContext(request); - doiManager.unregisterDoi(metadata, serviceContext); + DoiServer doiServer = retrieveDoiServer(doiServerId); + doiManager.unregisterDoi(doiServer, metadata, serviceContext); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + private DoiServer retrieveDoiServer(Integer doiServerId) throws ResourceNotFoundException { + Optional<DoiServer> doiServerOpt = doiServerRepository.findOneById(doiServerId); + if (doiServerOpt.isEmpty()) { + throw new ResourceNotFoundException(String.format( + MSG_DOISERVER_WITH_ID_NOT_FOUND, + doiServerId + )); + } + + return doiServerOpt.get(); + } + // TODO: At some point we may add support for DOI States management // https://support.datacite.org/docs/mds-api-guide#section-doi-states } diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java index 64bb64c4200..c62a7c4a76c 100644 --- a/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java @@ -366,7 +366,7 @@ private Object getRecordAs( throws Exception { AbstractMetadata metadata; try { - metadata = ApiUtils.canViewRecord(metadataUuid, request); + metadata = ApiUtils.canViewRecord(metadataUuid, approved, request); } catch (ResourceNotFoundException e) { Log.debug(API.LOG_MODULE_NAME, e.getMessage(), e); throw e; diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataInsertDeleteApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataInsertDeleteApi.java index 0dfb298d2c3..ad25403313c 100644 --- a/services/src/main/java/org/fao/geonet/api/records/MetadataInsertDeleteApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataInsertDeleteApi.java @@ -27,6 +27,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -206,7 +208,7 @@ public class MetadataInsertDeleteApi { + "from the index and then from the database.") @RequestMapping(value = "/{metadataUuid}", method = RequestMethod.DELETE) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Record deleted."), + @ApiResponse(responseCode = "204", description = "Record deleted.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "401", description = "This template is referenced"), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) @@ -706,6 +708,9 @@ public SimpleMetadataProcessingReport insertOgcMapContextFile( @Parameter(description = "Publish record.", required = false) @RequestParam(required = false, defaultValue = "false") final boolean publishToAll, @Parameter(description = API_PARAM_RECORD_UUID_PROCESSING, required = false) @RequestParam(required = false, defaultValue = "NOTHING") final MEFLib.UuidAction uuidProcessing, @Parameter(description = API_PARAM_RECORD_GROUP, required = false) @RequestParam(required = false) final String group, + @Parameter(description = "Schema", required = false) + @RequestParam(required = false, defaultValue = "iso19139") + final String schema, HttpServletRequest request) throws Exception { if (StringUtils.isEmpty(xml) && StringUtils.isEmpty(url)) { throw new IllegalArgumentException("A context as XML or a remote URL MUST be provided."); @@ -716,12 +721,17 @@ public SimpleMetadataProcessingReport insertOgcMapContextFile( } ServiceContext context = ApiUtils.createServiceContext(request); - Path styleSheetWmc = dataDirectory.getXsltConversion("schema:iso19139:convert/fromOGCWMC-OR-OWSC"); + Path styleSheetWmc = dataDirectory.getXsltConversion( + String.format("schema:%s:convert/fromOGCWMC-OR-OWSC", + schema)); FilePathChecker.verify(filename); + String uuid = UUID.randomUUID().toString(); + // Convert the context in an ISO19139 records Map<String, Object> xslParams = new HashMap<>(); + xslParams.put("uuid", uuid); xslParams.put("viewer_url", viewerUrl); xslParams.put("map_url", url); xslParams.put("topic", topic); @@ -747,7 +757,6 @@ public SimpleMetadataProcessingReport insertOgcMapContextFile( // 4. Inserts the metadata (does basically the same as the metadata.insert.paste // service (see Insert.java) - String uuid = UUID.randomUUID().toString(); String date = new ISODate().toString(); SimpleMetadataProcessingReport report = new SimpleMetadataProcessingReport(); @@ -758,7 +767,7 @@ public SimpleMetadataProcessingReport insertOgcMapContextFile( md.add(transformedMd); // Import record - Importer.importRecord(uuid, uuidProcessing, md, "iso19139", 0, settingManager.getSiteId(), + Importer.importRecord(uuid, uuidProcessing, md, schema, 0, settingManager.getSiteId(), settingManager.getSiteName(), null, context, id, date, date, group, MetadataType.METADATA); final Store store = context.getBean("resourceStore", Store.class); @@ -777,7 +786,7 @@ public SimpleMetadataProcessingReport insertOgcMapContextFile( onlineSrcParams.put("name", filename); onlineSrcParams.put("desc", title); transformedMd = Xml.transform(transformedMd, - schemaManager.getSchemaDir("iso19139").resolve("process").resolve("onlinesrc-add.xsl"), + schemaManager.getSchemaDir(schema).resolve("process").resolve("onlinesrc-add.xsl"), onlineSrcParams); dataManager.updateMetadata(context, id.get(0), transformedMd, false, true, context.getLanguage(), null, true, IndexingMode.none); @@ -792,7 +801,7 @@ public SimpleMetadataProcessingReport insertOgcMapContextFile( onlineSrcParams.put("thumbnail_url", settingManager.getNodeURL() + String.format("api/records/%s/attachments/%s", uuid, overviewFilename)); transformedMd = Xml.transform(transformedMd, - schemaManager.getSchemaDir("iso19139").resolve("process").resolve("thumbnail-add.xsl"), + schemaManager.getSchemaDir(schema).resolve("process").resolve("thumbnail-add.xsl"), onlineSrcParams); dataManager.updateMetadata(context, id.get(0), transformedMd, false, true, context.getLanguage(), null, true, IndexingMode.none); diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataSharingApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataSharingApi.java index e7d9da4e0a9..5967992f740 100644 --- a/services/src/main/java/org/fao/geonet/api/records/MetadataSharingApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataSharingApi.java @@ -25,6 +25,8 @@ import com.google.common.base.Optional; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -215,7 +217,7 @@ public List<PublicationOption> getPublicationOptions() { method = RequestMethod.PUT ) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Settings updated."), + @ApiResponse(responseCode = "204", description = "Settings updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) @PreAuthorize("hasAuthority('Reviewer')") @@ -260,7 +262,7 @@ public void publish( method = RequestMethod.PUT ) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Settings updated."), + @ApiResponse(responseCode = "204", description = "Settings updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) @PreAuthorize("hasAuthority('Reviewer')") @@ -314,7 +316,7 @@ public void unpublish( method = RequestMethod.PUT ) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Settings updated."), + @ApiResponse(responseCode = "204", description = "Settings updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) @PreAuthorize("hasAuthority('Editor')") @@ -775,7 +777,7 @@ public SharingResponse getRecordSharingSettings( method = RequestMethod.PUT ) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Record group updated."), + @ApiResponse(responseCode = "204", description = "Record group updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) @PreAuthorize("hasAuthority('Editor')") @@ -818,9 +820,9 @@ public void setRecordGroup( metadataManager.save(metadata); dataManager.indexMetadata(String.valueOf(metadata.getId()), true); - new RecordGroupOwnerChangeEvent(metadata.getId(), - ApiUtils.getUserSession(request.getSession()).getUserIdAsInt(), - ObjectJSONUtils.convertObjectInJsonObject(oldGroup, RecordGroupOwnerChangeEvent.FIELD), + new RecordGroupOwnerChangeEvent(metadata.getId(), + ApiUtils.getUserSession(request.getSession()).getUserIdAsInt(), + ObjectJSONUtils.convertObjectInJsonObject(oldGroup, RecordGroupOwnerChangeEvent.FIELD), ObjectJSONUtils.convertObjectInJsonObject(group.get(), RecordGroupOwnerChangeEvent.FIELD)).publish(appContext); } diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataTagApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataTagApi.java index 0e326143429..f13a0b66e3d 100644 --- a/services/src/main/java/org/fao/geonet/api/records/MetadataTagApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataTagApi.java @@ -25,6 +25,8 @@ import com.google.common.collect.Sets; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -212,7 +214,7 @@ private void indexTags(AbstractMetadata metadata) throws Exception { @DeleteMapping(value = "/{metadataUuid}/tags") @ResponseStatus(value = HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Record tags removed."), + @ApiResponse(responseCode = "204", description = "Record tags removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT) }) @PreAuthorize("hasAuthority('Editor')") diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java index 054a72b0d86..dd72b20e8fe 100644 --- a/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataWorkflowApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.records; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -576,7 +578,7 @@ public Map<Integer, StatusChangeType> setStatus(@Parameter(description = API_PAR method = RequestMethod.PUT ) @PreAuthorize("hasAuthority('Editor')") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Task closed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Task closed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Status not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT)}) @ResponseStatus(HttpStatus.NO_CONTENT) @@ -604,7 +606,7 @@ public void closeTask(@Parameter(description = API_PARAM_RECORD_UUID, required = @io.swagger.v3.oas.annotations.Operation(summary = "Delete a record status", description = "") @RequestMapping(value = "/{metadataUuid}/status/{statusId:[0-9]+}.{userId:[0-9]+}.{changeDate}", method = RequestMethod.DELETE) @PreAuthorize("hasAuthority('Administrator')") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Status removed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Status removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Status not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN)}) @ResponseStatus(HttpStatus.NO_CONTENT) @@ -631,7 +633,7 @@ public void deleteRecordStatus( @io.swagger.v3.oas.annotations.Operation(summary = "Delete all record status", description = "") @RequestMapping(value = "/{metadataUuid}/status", method = RequestMethod.DELETE) @PreAuthorize("hasAuthority('Administrator')") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Status removed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Status removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Status not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN)}) @ResponseStatus(HttpStatus.NO_CONTENT) diff --git a/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java b/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java index b1b27ecfa30..e30deec309a 100644 --- a/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java @@ -178,7 +178,7 @@ public List<MetadataResource> getAllResources( @io.swagger.v3.oas.annotations.Operation(summary = "Delete all uploaded metadata resources") @RequestMapping(method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasAuthority('Editor')") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Attachment added."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Attachment added.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT)}) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void delResources( @@ -316,7 +316,7 @@ public MetadataResource patchResource( @io.swagger.v3.oas.annotations.Operation(summary = "Delete a metadata resource") @PreAuthorize("hasAuthority('Editor')") @RequestMapping(value = "/{resourceId:.+}", method = RequestMethod.DELETE) - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Attachment visibility removed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Attachment visibility removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT)}) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void delResource( diff --git a/services/src/main/java/org/fao/geonet/api/records/editing/MetadataEditingApi.java b/services/src/main/java/org/fao/geonet/api/records/editing/MetadataEditingApi.java index 3899f9e1967..16aaee8d1d5 100644 --- a/services/src/main/java/org/fao/geonet/api/records/editing/MetadataEditingApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/editing/MetadataEditingApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.records.editing; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -532,7 +534,7 @@ public void saveEdits( MediaType.ALL_VALUE}, produces = {MediaType.APPLICATION_XML_VALUE}) @PreAuthorize("hasAuthority('Editor')") @ResponseStatus(HttpStatus.NO_CONTENT) - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Editing session cancelled."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Editing session cancelled.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT)}) @ResponseBody public void cancelEdits(@Parameter(description = API_PARAM_RECORD_UUID, required = true) @PathVariable String metadataUuid, @@ -614,7 +616,7 @@ public void reorderElement(@Parameter(description = API_PARAM_RECORD_UUID, requi MediaType.ALL_VALUE}, produces = {MediaType.APPLICATION_XML_VALUE}) @PreAuthorize("hasAuthority('Editor')") @ResponseStatus(HttpStatus.NO_CONTENT) - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Element removed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Element removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT)}) @ResponseBody public void deleteElement( @@ -638,7 +640,7 @@ public void deleteElement( MediaType.ALL_VALUE}, produces = {MediaType.APPLICATION_XML_VALUE}) @PreAuthorize("hasAuthority('Editor')") @ResponseStatus(HttpStatus.NO_CONTENT) - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Attribute removed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Attribute removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_CAN_EDIT)}) @ResponseBody public void deleteAttribute( diff --git a/services/src/main/java/org/fao/geonet/api/records/formatters/CacheApi.java b/services/src/main/java/org/fao/geonet/api/records/formatters/CacheApi.java index d90ea166d70..eb9b39200b3 100644 --- a/services/src/main/java/org/fao/geonet/api/records/formatters/CacheApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/formatters/CacheApi.java @@ -23,6 +23,8 @@ package org.fao.geonet.api.records.formatters; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import static org.fao.geonet.api.ApiParams.API_CLASS_FORMATTERS_OPS; import static org.fao.geonet.api.ApiParams.API_CLASS_FORMATTERS_TAG; @@ -67,7 +69,7 @@ public class CacheApi { @ResponseStatus(HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('Administrator')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Cache cleared."), + @ApiResponse(responseCode = "204", description = "Cache cleared.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = "Operation not allowed. Only Administrator can access it.") }) public void clearFormatterCache() throws Exception { diff --git a/services/src/main/java/org/fao/geonet/api/records/formatters/FormatType.java b/services/src/main/java/org/fao/geonet/api/records/formatters/FormatType.java index 81796022bf1..c2f1e5a1f36 100644 --- a/services/src/main/java/org/fao/geonet/api/records/formatters/FormatType.java +++ b/services/src/main/java/org/fao/geonet/api/records/formatters/FormatType.java @@ -62,4 +62,21 @@ public static FormatType find(String acceptHeader) { } return null; } + + public static FormatType findByFormatterKey(String formatterId) { + if (formatterId == null) { + return null; + } + + if (formatterId.contains("dcat")) { + return FormatType.xml; + } + for (FormatType c : FormatType.values()) { + if (formatterId.contains(c.name())) { + return c; + } + } + + return null; + } } diff --git a/services/src/main/java/org/fao/geonet/api/records/formatters/FormatterApi.java b/services/src/main/java/org/fao/geonet/api/records/formatters/FormatterApi.java index 1a9830c3ef6..96092a3a118 100644 --- a/services/src/main/java/org/fao/geonet/api/records/formatters/FormatterApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/formatters/FormatterApi.java @@ -232,6 +232,9 @@ public void getRecordFormattedBy( if (MediaType.ALL_VALUE.equals(acceptHeader)) { acceptHeader = MediaType.TEXT_HTML_VALUE; } + if (formatType == null) { + formatType = FormatType.findByFormatterKey(formatterId); + } if (formatType == null) { formatType = FormatType.find(acceptHeader); } @@ -252,7 +255,7 @@ public void getRecordFormattedBy( language = isoLanguagesMapper.iso639_2T_to_iso639_2B(locale.getISO3Language()); } - AbstractMetadata metadata = ApiUtils.canViewRecord(metadataUuid, servletRequest); + AbstractMetadata metadata = ApiUtils.canViewRecord(metadataUuid, approved, servletRequest); if (approved) { metadata = ApplicationContextHolder.get().getBean(MetadataRepository.class).findOneByUuid(metadataUuid); diff --git a/services/src/main/java/org/fao/geonet/api/selections/UserSelectionsApi.java b/services/src/main/java/org/fao/geonet/api/selections/UserSelectionsApi.java index f4d501f7d90..595ec851698 100644 --- a/services/src/main/java/org/fao/geonet/api/selections/UserSelectionsApi.java +++ b/services/src/main/java/org/fao/geonet/api/selections/UserSelectionsApi.java @@ -23,6 +23,8 @@ package org.fao.geonet.api.selections; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -160,7 +162,7 @@ public ResponseEntity createPersistentSelectionType( method = RequestMethod.PUT) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Selection updated."), + @ApiResponse(responseCode = "204", description = "Selection updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Selection not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @@ -209,7 +211,7 @@ public ResponseEntity updateUserSelection( method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Selection removed."), + @ApiResponse(responseCode = "204", description = "Selection removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Selection not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @@ -348,7 +350,7 @@ ResponseEntity<String> addToUserSelection( public @ResponseBody @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Items removed from a set."), + @ApiResponse(responseCode = "204", description = "Items removed from a set.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Selection or user not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) diff --git a/services/src/main/java/org/fao/geonet/api/site/LogosApi.java b/services/src/main/java/org/fao/geonet/api/site/LogosApi.java index b448bfe4530..a0dc037a1a3 100644 --- a/services/src/main/java/org/fao/geonet/api/site/LogosApi.java +++ b/services/src/main/java/org/fao/geonet/api/site/LogosApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.site; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -240,7 +242,7 @@ public void getLogo( @ResponseStatus(value = HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('UserAdmin')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Logo removed."), + @ApiResponse(responseCode = "204", description = "Logo removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) diff --git a/services/src/main/java/org/fao/geonet/api/site/SiteApi.java b/services/src/main/java/org/fao/geonet/api/site/SiteApi.java index a2bd724fa59..01882b580ed 100644 --- a/services/src/main/java/org/fao/geonet/api/site/SiteApi.java +++ b/services/src/main/java/org/fao/geonet/api/site/SiteApi.java @@ -26,6 +26,8 @@ import co.elastic.clients.elasticsearch.core.CountRequest; import co.elastic.clients.elasticsearch.core.CountResponse; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -47,7 +49,6 @@ import org.fao.geonet.api.tools.i18n.LanguageUtils; import org.fao.geonet.api.users.recaptcha.RecaptchaChecker; import org.fao.geonet.constants.Geonet; -import org.fao.geonet.doi.client.DoiManager; import org.fao.geonet.domain.*; import org.fao.geonet.exceptions.OperationAbortedEx; import org.fao.geonet.index.Status; @@ -169,8 +170,6 @@ public static void reloadServices(ServiceContext context) throws Exception { context.error(e); throw new OperationAbortedEx("Parameters saved but cannot set proxy information: " + e.getMessage()); } - DoiManager doiManager = gc.getBean(DoiManager.class); - doiManager.loadConfig(); HarvestManager harvestManager = context.getBean(HarvestManager.class); harvestManager.rescheduleActiveHarvesters(); @@ -397,7 +396,7 @@ public List<Setting> getSettingsDetails( @PreAuthorize("hasAuthority('Administrator')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Settings saved."), + @ApiResponse(responseCode = "204", description = "Settings saved.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) }) public void saveSettings( @@ -516,7 +515,7 @@ public boolean isCasEnabled( method = RequestMethod.PUT) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Staging profile saved."), + @ApiResponse(responseCode = "204", description = "Staging profile saved.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) }) @PreAuthorize("hasAuthority('Administrator')") @@ -761,7 +760,7 @@ public ProxyConfiguration getProxyConfiguration( @PreAuthorize("hasAuthority('Administrator')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Logo set."), + @ApiResponse(responseCode = "204", description = "Logo set.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) public void setLogo( diff --git a/services/src/main/java/org/fao/geonet/api/sources/SourcesApi.java b/services/src/main/java/org/fao/geonet/api/sources/SourcesApi.java index 5b50c543e5c..da0f179a4fc 100644 --- a/services/src/main/java/org/fao/geonet/api/sources/SourcesApi.java +++ b/services/src/main/java/org/fao/geonet/api/sources/SourcesApi.java @@ -227,7 +227,7 @@ private void copySourceLogo(Source source, HttpServletRequest request) { @PreAuthorize("hasAuthority('UserAdmin')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Source updated."), + @ApiResponse(responseCode = "204", description = "Source updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "Source not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @@ -278,7 +278,7 @@ public ResponseEntity updateSource( @PreAuthorize("hasAuthority('Administrator')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Source deleted."), + @ApiResponse(responseCode = "204", description = "Source deleted.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) }) @ResponseBody diff --git a/services/src/main/java/org/fao/geonet/api/status/StatusApi.java b/services/src/main/java/org/fao/geonet/api/status/StatusApi.java index df46dfe0bed..fa3715dca08 100644 --- a/services/src/main/java/org/fao/geonet/api/status/StatusApi.java +++ b/services/src/main/java/org/fao/geonet/api/status/StatusApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.status; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -79,7 +81,7 @@ public List<StatusValue> getStatusByType( @RequestMapping(method = RequestMethod.DELETE) @PreAuthorize("hasAuthority('Administrator')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "Status removed."), + @ApiResponse(responseCode = "204", description = "Status removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_ADMIN) }) @ResponseStatus(HttpStatus.NO_CONTENT) diff --git a/services/src/main/java/org/fao/geonet/api/uisetting/UiSettingApi.java b/services/src/main/java/org/fao/geonet/api/uisetting/UiSettingApi.java index 8fa7193367d..1696eca05a9 100644 --- a/services/src/main/java/org/fao/geonet/api/uisetting/UiSettingApi.java +++ b/services/src/main/java/org/fao/geonet/api/uisetting/UiSettingApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.uisetting; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -178,7 +180,7 @@ public UiSetting getUiConfiguration( @PreAuthorize("hasAuthority('UserAdmin')") @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "UI configuration updated."), + @ApiResponse(responseCode = "204", description = "UI configuration updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) @ResponseBody @@ -232,7 +234,7 @@ public ResponseEntity updateUiConfiguration( method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "UI Configuration removed."), + @ApiResponse(responseCode = "204", description = "UI Configuration removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = "UI Configuration not found."), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_USER_ADMIN) }) diff --git a/services/src/main/java/org/fao/geonet/api/userfeedback/UserFeedbackAPI.java b/services/src/main/java/org/fao/geonet/api/userfeedback/UserFeedbackAPI.java index a782fb814f1..9f66a220817 100644 --- a/services/src/main/java/org/fao/geonet/api/userfeedback/UserFeedbackAPI.java +++ b/services/src/main/java/org/fao/geonet/api/userfeedback/UserFeedbackAPI.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.userfeedback; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -146,7 +148,7 @@ public List<RatingCriteria> getRatingCriteria( @RequestMapping(value = "/userfeedback/{uuid}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('Reviewer')") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "User feedback removed."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "User feedback removed.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_REVIEWER)}) @ResponseBody public ResponseEntity deleteUserFeedback( @@ -719,7 +721,7 @@ private void printOutputMessage(final HttpServletResponse response, final HttpSt @RequestMapping(value = "/userfeedback/{uuid}/publish", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET) @ResponseStatus(value = HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('Reviewer')") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "User feedback published."), + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "User feedback published.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "403", description = ApiParams.API_RESPONSE_NOT_ALLOWED_ONLY_REVIEWER), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND)}) @ResponseBody diff --git a/services/src/main/java/org/fao/geonet/api/users/MeApi.java b/services/src/main/java/org/fao/geonet/api/users/MeApi.java index 955f9e4f392..ee5e882dc20 100644 --- a/services/src/main/java/org/fao/geonet/api/users/MeApi.java +++ b/services/src/main/java/org/fao/geonet/api/users/MeApi.java @@ -25,6 +25,8 @@ import io.swagger.v3.oas.annotations.OpenAPIDefinition; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -66,7 +68,7 @@ public class MeApi { @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Authenticated. Return user details."), - @ApiResponse(responseCode = "204", description = "Not authenticated.") + @ApiResponse(responseCode = "204", description = "Not authenticated.", content = {@Content(schema = @Schema(hidden = true))}) }) @ResponseStatus(OK) @ResponseBody diff --git a/services/src/main/java/org/fao/geonet/api/users/validation/UserRegisterDtoValidator.java b/services/src/main/java/org/fao/geonet/api/users/validation/UserRegisterDtoValidator.java index 2ba53946b18..f22d7cc821f 100644 --- a/services/src/main/java/org/fao/geonet/api/users/validation/UserRegisterDtoValidator.java +++ b/services/src/main/java/org/fao/geonet/api/users/validation/UserRegisterDtoValidator.java @@ -60,12 +60,10 @@ public void validate(Object target, Errors errors) { } UserRepository userRepository = ApplicationContextHolder.get().getBean(UserRepository.class); - if (userRepository.findOneByEmail(userRegisterDto.getEmail()) != null) { - errors.rejectValue("", "user_with_that_email_found", "A user with this email or username already exists."); + if ((userRepository.findOneByEmail(userRegisterDto.getEmail()) != null) || + (!userRepository.findByUsernameIgnoreCase(userRegisterDto.getEmail()).isEmpty())) { + errors.rejectValue("", "user_with_that_email_username_found", "A user with this email or username already exists."); } - if (userRepository.findByUsernameIgnoreCase(userRegisterDto.getEmail()).size() != 0) { - errors.rejectValue("", "user_with_that_username_found", "A user with this email or username already exists."); - } } } diff --git a/services/src/main/java/org/fao/geonet/api/usersearches/UserSearchesApi.java b/services/src/main/java/org/fao/geonet/api/usersearches/UserSearchesApi.java index 517744f9ce7..23a4a148a85 100644 --- a/services/src/main/java/org/fao/geonet/api/usersearches/UserSearchesApi.java +++ b/services/src/main/java/org/fao/geonet/api/usersearches/UserSearchesApi.java @@ -24,6 +24,8 @@ package org.fao.geonet.api.usersearches; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -350,7 +352,7 @@ public ResponseEntity<Integer> createUserCustomSearch( @ResponseStatus(value = HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('UserAdmin')") @ApiResponses(value = { - @ApiResponse(responseCode = "204", description = "User search updated."), + @ApiResponse(responseCode = "204", description = "User search updated.", content = {@Content(schema = @Schema(hidden = true))}), @ApiResponse(responseCode = "404", description = ApiParams.API_RESPONSE_RESOURCE_NOT_FOUND) }) @ResponseBody diff --git a/services/src/main/java/org/fao/geonet/guiapi/search/XsltResponseWriter.java b/services/src/main/java/org/fao/geonet/guiapi/search/XsltResponseWriter.java index 3623a242f02..fd6a7c78bd5 100644 --- a/services/src/main/java/org/fao/geonet/guiapi/search/XsltResponseWriter.java +++ b/services/src/main/java/org/fao/geonet/guiapi/search/XsltResponseWriter.java @@ -1,6 +1,6 @@ /* * ============================================================================= - * === Copyright (C) 2001-2023 Food and Agriculture Organization of the + * === Copyright (C) 2001-2024 Food and Agriculture Organization of the * === United Nations (FAO-UN), United Nations World Food Programme (WFP) * === and United Nations Environment Programme (UNEP) * === @@ -36,9 +36,7 @@ import org.fao.geonet.utils.Log; import org.fao.geonet.utils.Xml; import org.jdom.Element; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -50,16 +48,17 @@ /** * Utility to mimic what Jeeves was doing */ -@Component public class XsltResponseWriter { public static final String TRANSLATIONS = "translations"; - @Autowired - GeonetworkDataDirectory dataDirectory; Element xml; Path xsl; Map<String, Object> xslParams = new HashMap<>(); public XsltResponseWriter(String envTagName, String serviceName) { + this(envTagName, serviceName, "eng"); + } + + public XsltResponseWriter(String envTagName, String serviceName, String lang) { SettingManager settingManager = ApplicationContextHolder.get().getBean(SettingManager.class); String url = settingManager.getBaseURL(); Element gui = new Element("gui"); @@ -70,8 +69,7 @@ public XsltResponseWriter(String envTagName, String serviceName) { gui.addContent(new Element("baseUrl").setText(settingManager.getBaseURL())); gui.addContent(new Element("serverUrl").setText(settingManager.getServerURL())); gui.addContent(new Element("nodeId").setText(settingManager.getNodeId())); - // TODO: set language based on header - gui.addContent(new Element("language").setText("eng")); + gui.addContent(new Element("language").setText(lang)); Element settings = settingManager.getAllAsXML(true); @@ -94,8 +92,7 @@ public XsltResponseWriter withXml(Element xml) { public XsltResponseWriter withXsl(String xsl) { ApplicationContext applicationContext = ApplicationContextHolder.get(); GeonetworkDataDirectory dataDirectory = applicationContext.getBean(GeonetworkDataDirectory.class); - Path xslt = dataDirectory.getWebappDir().resolve(xsl); - this.xsl = xslt; + this.xsl = dataDirectory.getWebappDir().resolve(xsl); return this; } @@ -153,7 +150,7 @@ public XsltResponseWriter withJson(String json) { }); } catch (IOException e) { Log.warning(Geonet.GEONETWORK, String.format( - "Can't find JSON file '%s'.", jsonPath.toString() + "Can't find JSON file '%s'.", jsonPath )); } diff --git a/services/src/test/java/org/fao/geonet/api/doiservers/DoiServersApiTest.java b/services/src/test/java/org/fao/geonet/api/doiservers/DoiServersApiTest.java new file mode 100644 index 00000000000..d91e6924cfc --- /dev/null +++ b/services/src/test/java/org/fao/geonet/api/doiservers/DoiServersApiTest.java @@ -0,0 +1,281 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package org.fao.geonet.api.doiservers; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import junit.framework.Assert; +import org.fao.geonet.api.JsonFieldNamingStrategy; +import org.fao.geonet.api.doiservers.model.DoiServerDto; +import org.fao.geonet.domain.*; +import org.fao.geonet.repository.DoiServerRepository; +import org.fao.geonet.repository.DoiServerRepositoryTest; +import org.fao.geonet.repository.GroupRepository; +import org.fao.geonet.repository.GroupRepositoryTest; +import org.fao.geonet.services.AbstractServiceIntegrationTest; +import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; +import org.jasypt.hibernate5.encryptor.HibernatePBEEncryptorRegistry; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import java.util.List; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +public class DoiServersApiTest extends AbstractServiceIntegrationTest { + @Autowired + private WebApplicationContext wac; + + @Autowired + private DoiServerRepository doiServerRepository; + + @Autowired + private GroupRepository groupRepository; + + private MockMvc mockMvc; + + private MockHttpSession mockHttpSession; + + private AtomicInteger inc = new AtomicInteger(); + + @BeforeClass + public static void init() { + StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor(); + strongEncryptor.setPassword("testpassword"); + + HibernatePBEEncryptorRegistry registry = + HibernatePBEEncryptorRegistry.getInstance(); + registry.registerPBEStringEncryptor("STRING_ENCRYPTOR", strongEncryptor); + } + + @Before + public void setUp() { + createTestData(); + } + + @Test + public void getDoiServers() throws Exception { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(get("/srv/api/doiservers") + .session(this.mockHttpSession) + .accept(MediaType.APPLICATION_JSON_VALUE)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$", hasSize(2))) + .andExpect(content().contentType(API_JSON_EXPECTED_ENCODING)); + } + + @Test + public void getDoiServer() throws Exception { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + List<DoiServer> doiServers = doiServerRepository.findAll(); + assertEquals(2, doiServers.size()); + DoiServer doiServerToRetrieve = doiServers.get(0); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(get("/srv/api/doiservers/" + doiServerToRetrieve.getId()) + .session(this.mockHttpSession) + .accept(MediaType.APPLICATION_JSON_VALUE)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.name", is(doiServerToRetrieve.getName()))) + .andExpect(content().contentType(API_JSON_EXPECTED_ENCODING)); + } + + @Test + public void deleteDoiServer() throws Exception { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + List<DoiServer> doiServers = doiServerRepository.findAll(); + assertEquals(2, doiServers.size()); + DoiServer doiServerToDelete = doiServers.get(0); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(delete("/srv/api/doiservers/" + doiServerToDelete.getId()) + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().isNoContent()); + + this.mockMvc.perform(get("/srv/api/doiservers/" + doiServerToDelete.getId()) + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().isNotFound()); + + Optional<DoiServer> doiServerOpt = doiServerRepository.findOneById(doiServerToDelete.getId()); + Assert.assertTrue(doiServerOpt.isEmpty()); + } + + @Test + public void deleteNonExistingDoiServer() throws Exception { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + Optional<DoiServer> doiServerToDelete = doiServerRepository.findOneById(222); + Assert.assertFalse(doiServerToDelete.isPresent()); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(delete("/srv/api/doiservers/222") + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().isNotFound()) + .andExpect(content().contentType(API_JSON_EXPECTED_ENCODING)); + } + + @Test + public void updateDoiServer() throws Exception { + List<DoiServer> doiServers = doiServerRepository.findAll(); + assertEquals(2, doiServers.size()); + DoiServer doiServerToUpdate = doiServers.get(0); + + DoiServerDto doiServerDto = DoiServerDto.from(doiServerToUpdate); + doiServerDto.setName("New name"); + doiServerDto.setDescription("New description"); + doiServerDto.setUrl("http://newurl"); + + Gson gson = new GsonBuilder() + .setFieldNamingStrategy(new JsonFieldNamingStrategy()) + .create(); + String json = gson.toJson(doiServerDto); + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(put("/srv/api/doiservers/" + doiServerToUpdate.getId()) + .content(json) + .contentType(API_JSON_EXPECTED_ENCODING) + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().isNoContent()); + + Optional<DoiServer> doiServerUpdatedOpt = doiServerRepository.findOneById(doiServerToUpdate.getId()); + assertTrue(doiServerUpdatedOpt.isPresent()); + assertEquals(doiServerDto.getName(), doiServerUpdatedOpt.get().getName()); + assertEquals(doiServerDto.getDescription(), doiServerUpdatedOpt.get().getDescription()); + assertEquals(doiServerDto.getUrl(), doiServerUpdatedOpt.get().getUrl()); + } + + @Test + public void updateNonExistingDoiServer() throws Exception { + Optional<DoiServer> doiServerToUpdateOptional = doiServerRepository.findOneById(222); + Assert.assertFalse(doiServerToUpdateOptional.isPresent()); + + DoiServer doiServerToUpdate = DoiServerRepositoryTest.newDoiServer(inc); + doiServerToUpdate.setId(222); + DoiServerDto doiServerToUpdateDto = DoiServerDto.from(doiServerToUpdate); + + Gson gson = new GsonBuilder() + .setFieldNamingStrategy(new JsonFieldNamingStrategy()) + .create(); + String json = gson.toJson(doiServerToUpdateDto); + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(put("/srv/api/doiservers/" + doiServerToUpdate.getId()) + .content(json) + .contentType(API_JSON_EXPECTED_ENCODING) + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().isNotFound()); + } + + @Test + public void updateDoiServerAuth() throws Exception { + List<DoiServer> doiServers = doiServerRepository.findAll(); + assertEquals(2, doiServers.size()); + DoiServer doiServerToUpdate = doiServers.get(0); + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + this.mockHttpSession = loginAsAdmin(); + + this.mockMvc.perform(post("/srv/api/doiservers/" + doiServerToUpdate.getId() + "/auth") + .param("username", "newusername") + .param("password", "newpassword") + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().isNoContent()); + } + + @Test + public void addDoiServer() throws Exception { + DoiServer doiServerToAdd = DoiServerRepositoryTest.newDoiServer(inc); + DoiServerDto doiServerToAddDto = DoiServerDto.from(doiServerToAdd); + + Gson gson = new GsonBuilder() + .setFieldNamingStrategy(new JsonFieldNamingStrategy()) + .create(); + String json = gson.toJson(doiServerToAddDto); + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + + this.mockHttpSession = loginAsAdmin(); + + MvcResult result = this.mockMvc.perform(put("/srv/api/doiservers") + .content(json) + .contentType(API_JSON_EXPECTED_ENCODING) + .session(this.mockHttpSession) + .accept(MediaType.parseMediaType("application/json"))) + .andExpect(status().is(201)) + .andReturn(); + + int createdDoiServerId = Integer.parseInt(result.getResponse().getContentAsString()); + Optional<DoiServer> doiServerAdded = doiServerRepository.findOneById(createdDoiServerId); + Assert.assertTrue(doiServerAdded.isPresent()); + } + + private void createTestData() { + Group group1 = GroupRepositoryTest.newGroup(_inc); + groupRepository.save(group1); + + DoiServer doiServer1 = DoiServerRepositoryTest.newDoiServer(inc); + doiServer1.getPublicationGroups().add(group1); + doiServerRepository.save(doiServer1); + + DoiServer doiServer2 = DoiServerRepositoryTest.newDoiServer(inc); + doiServerRepository.save(doiServer2); + } +} diff --git a/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterAdminApiIntegrationTest.java b/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterAdminApiIntegrationTest.java index e25b8015b4a..149c5703e1f 100644 --- a/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterAdminApiIntegrationTest.java +++ b/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterAdminApiIntegrationTest.java @@ -59,8 +59,8 @@ public void testExec() throws Exception { serviceConfig.setValue(FormatterConstants.USER_XSL_DIR, dataDirectory.getWebappDir() + "/formatters"); listService.init(dataDirectory.getWebappDir(), serviceConfig); - assertFormattersForSchema(true, "iso19139", listService, "datacite", "eu-po-doi", "jsonld", "iso19115-3.2018"); - assertFormattersForSchema(false, "iso19139", listService, "datacite", "eu-po-doi", "jsonld", "xsl-view", "citation", "iso19115-3.2018"); + assertFormattersForSchema(true, "iso19139", listService, "datacite", "eu-po-doi", "jsonld", "iso19115-3.2018", "dcat", "eu-dcat-ap", "eu-dcat-ap-hvd", "eu-geodcat-ap", "eu-geodcat-ap-semiceu"); + assertFormattersForSchema(false, "iso19139", listService, "datacite", "eu-po-doi", "jsonld", "xsl-view", "citation", "iso19115-3.2018", "dcat", "eu-dcat-ap", "eu-dcat-ap-hvd", "eu-geodcat-ap", "eu-geodcat-ap-semiceu"); assertFormattersForSchema(true, "dublin-core", listService); } diff --git a/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterApiTest.java b/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterApiTest.java index e0780b4f723..4d0f3c79c31 100644 --- a/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterApiTest.java +++ b/services/src/test/java/org/fao/geonet/api/records/formatters/FormatterApiTest.java @@ -22,11 +22,25 @@ */ package org.fao.geonet.api.records.formatters; +import java.io.File; import jeeves.server.context.ServiceContext; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.jena.graph.Graph; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.riot.Lang; +import org.apache.jena.riot.RDFDataMgr; +import org.apache.jena.shacl.ShaclValidator; +import org.apache.jena.shacl.Shapes; +import org.apache.jena.shacl.ValidationReport; +import org.apache.jena.shacl.lib.ShLib; import org.fao.geonet.domain.AbstractMetadata; import org.fao.geonet.services.AbstractServiceIntegrationTest; +import org.fao.geonet.utils.Xml; import org.jdom.Element; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -36,12 +50,17 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.util.StreamUtils; import org.springframework.web.context.WebApplicationContext; +import org.xmlunit.builder.DiffBuilder; +import org.xmlunit.builder.Input; +import org.xmlunit.diff.DefaultNodeMatcher; +import org.xmlunit.diff.Diff; +import org.xmlunit.diff.ElementSelectors; +import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.Assert.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -55,17 +74,26 @@ public class FormatterApiTest extends AbstractServiceIntegrationTest { public static Collection<String[]> data() throws Exception { ArrayList<String[]> data = new ArrayList<>(); - data.add(new String[]{"citation", "?format=?", "iso19139", "formats.txt"}); - data.add(new String[]{"citation", "?format=ris", "iso19139", "ris.txt"}); - data.add(new String[]{"citation", "?format=bibtex", "iso19139", "bibtex.txt"}); - data.add(new String[]{"citation", "?format=text", "iso19139", "text.txt"}); - data.add(new String[]{"citation", "?format=html", "iso19139", "html.html"}); - data.add(new String[]{"citation", "?format=?", "iso19115-3.2018", "formats.txt"}); - data.add(new String[]{"citation", "?format=ris", "iso19115-3.2018", "ris.txt"}); - data.add(new String[]{"citation", "?format=bibtex", "iso19115-3.2018", "bibtex.txt"}); - data.add(new String[]{"citation", "?format=text", "iso19115-3.2018", "text.txt"}); - data.add(new String[]{"citation", "?format=html", "iso19115-3.2018", "html.html"}); - data.add(new String[]{"citation", "?format=text&authorRoles=processor&publisherRoles=owner,custodian", "iso19115-3.2018", "text-custom-role.txt"}); + data.add(new String[]{"iso19139", "citation", "?format=?", "iso19139", "formats.txt"}); + data.add(new String[]{"iso19139", "citation", "?format=ris", "iso19139", "ris.txt"}); + data.add(new String[]{"iso19139", "citation", "?format=bibtex", "iso19139", "bibtex.txt"}); + data.add(new String[]{"iso19139", "citation", "?format=text", "iso19139", "text.txt"}); + data.add(new String[]{"iso19139", "citation", "?format=html", "iso19139", "html.html"}); + data.add(new String[]{"iso19139", "citation", "?format=?", "iso19115-3.2018", "formats.txt"}); + data.add(new String[]{"iso19115-3.2018", "citation", "?format=ris", "iso19115-3.2018", "ris.txt"}); + data.add(new String[]{"iso19115-3.2018", "citation", "?format=bibtex", "iso19115-3.2018", "bibtex.txt"}); + data.add(new String[]{"iso19115-3.2018", "citation", "?format=text", "iso19115-3.2018", "text.txt"}); + data.add(new String[]{"iso19115-3.2018", "citation", "?format=html", "iso19115-3.2018", "html.html"}); + data.add(new String[]{"iso19115-3.2018", "citation", "?format=text&authorRoles=processor&publisherRoles=owner,custodian", "iso19115-3.2018", "text-custom-role.txt"}); + + data.add(new String[]{"iso19115-3.2018-dcat-dataset.xml", "dcat", "", "iso19115-3.2018", "dataset-core.rdf"}); + data.add(new String[]{"iso19115-3.2018-dcat-dataset.xml", "eu-dcat-ap", "", "iso19115-3.2018", "dataset-core.rdf"}); + data.add(new String[]{"iso19115-3.2018-dcat-dataset.xml", "eu-dcat-ap", "?multipleAccrualPeriodicityAllowed=true", "iso19115-3.2018", "dataset-core-multipleAccrualPeriodicityAllowed.rdf"}); + data.add(new String[]{"iso19115-3.2018-dcat-dataset.xml", "eu-geodcat-ap", "", "iso19115-3.2018", "dataset-core.rdf"}); + data.add(new String[]{"iso19115-3.2018-dcat-dataset.xml", "eu-dcat-ap-mobility", "", "iso19115-3.2018", "dataset-core.rdf"}); + data.add(new String[]{"iso19115-3.2018-dcat-dataset.xml", "eu-dcat-ap-hvd", "", "iso19115-3.2018", "dataset-core.rdf"}); + data.add(new String[]{"iso19115-3.2018-dcat-service.xml", "dcat", "", "iso19115-3.2018", "service-core.rdf"}); + return data; } @@ -81,47 +109,196 @@ public void checkFormatter() throws Exception { MockHttpSession mockHttpSession = loginAsAdmin(); for (String[] testParameter : data()) { - String formatter = testParameter[0]; - String urlParams = testParameter[1]; - String schema = testParameter[2]; - String checkfile = testParameter[3]; + String testFile = testParameter[0]; + String formatter = testParameter[1]; + String urlParams = testParameter[2]; + String schema = testParameter[3]; + String checkfile = testParameter[4]; String url = "/srv/api/records/" - + testDataUuidBySchema.get(schema) - + "/formatters/" + formatter + urlParams; + + testDataUuidBySchema.get(testFile) + + "/formatters/" + formatter + urlParams; try { MvcResult result = mockMvc.perform(get(url) - .session(mockHttpSession) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isOk()) - .andReturn(); - - assertEquals( - url, - StreamUtils.copyToString( - FormatterApiTest.class.getResourceAsStream( - String.format("%s-%s-%s", - schema, formatter, checkfile) - ), - StandardCharsets.UTF_8) + .session(mockHttpSession) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isOk()) + .andReturn(); + + String expected = StreamUtils.copyToString( + FormatterApiTest.class.getResourceAsStream( + String.format("%s-%s-%s", + schema, formatter, checkfile) + ), + StandardCharsets.UTF_8) .trim() - .replace("{uuid}", testDataUuidBySchema.get(schema)), - result.getResponse().getContentAsString() - .replaceAll("\\r\\n?", "\n") - ); + .replace("{uuid}", testDataUuidBySchema.get(testFile)); + + String actual = result.getResponse().getContentAsString(); + + boolean isRdf = checkfile.endsWith(".rdf"); + boolean isXml = checkfile.endsWith(".xml"); + + if (isXml || isRdf) { + if (isRdf) { + try { + Model model = ModelFactory.createMemModelMaker().createDefaultModel(); + RDFDataMgr.read(model, + IOUtils.toInputStream(actual, StandardCharsets.UTF_8), + Lang.RDFXML); + } catch (Exception rdfException) { + fail(String.format("%s. Checked with %s. RDF model error. %s. Checked with: %s", + url, checkfile, rdfException.getMessage(), actual)); + } + } + + +// FileUtils.writeStringToFile(new File("/tmp/services/src/test/resources/org/fao/geonet/api/records/formatters/new/" + String.format("%s-%s-%s", +// schema, formatter, checkfile)), actual.replaceFirst("urn:uuid/.*</dct:identifier>", "urn:uuid/{uuid}</dct:identifier>"), StandardCharsets.UTF_8); + + Diff diff = DiffBuilder + .compare(Input.fromString(actual)) + .withTest(Input.fromString(expected)) + .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName)) + .normalizeWhitespace() + .ignoreComments() + .checkForSimilar() + .build(); + assertFalse( + String.format("%s. Checked with %s. Differences: %s", url, checkfile, diff.toString()), + diff.hasDifferences()); + + if (isRdf) { + String[] shaclValidation = {}; + if ("eu-dcat-ap".equalsIgnoreCase(formatter)) { + // https://github.com/ISAITB/validator-resources-dcat-ap/blob/master/resources/config.properties#L117-L128 +// shaclValidation = new String[]{ +// "shacl/eu-dcat-ap-3.0.0/shapes.ttl", +// "shacl/eu-dcat-ap-3.0.0/range.ttl", +// "shacl/eu-dcat-ap-3.0.0/shapes_recommended.ttl", +// "shacl/eu-dcat-ap-3.0.0/imports.ttl", +// "shacl/eu-dcat-ap-3.0.0/deprecateduris.ttl"}; +// } else if("eu-dcat-ap-hvd".equalsIgnoreCase(formatter)){ +// shaclValidation = new String[]{"shacl/dcat-ap-hvd-2.2.0-SHACL.ttl"}; +// } else if("eu-geodcat-ap".equalsIgnoreCase(formatter)){ +// shaclValidation = new String[]{"shacl/geodcat-ap-2.0.1-SHACL.ttl"}; + } + for (String shaclShapes : shaclValidation) { + applyShaclValidation(formatter, schema, checkfile, url, shaclShapes); + } + } + } else { + assertEquals( + url, + expected, + actual.replaceAll("\\r\\n?", "\n") + ); + } } catch (Exception e) { - fail(url); + fail(String.format("Failure on %s. Error is: %s", url, e.getMessage())); } } } + + @Test + @Ignore + public void quickTestToValidateRdfModelAndShaclRules() throws IOException { + String formatter = "eu-dcat-ap"; + String schema = "iso19115-3.2018"; + String checkfile = "dataset-core.rdf"; + String file = String.format("%s-%s-%s", schema, formatter, checkfile); + String expected = StreamUtils.copyToString( + FormatterApiTest.class.getResourceAsStream(file), + StandardCharsets.UTF_8); + try { + Model model = ModelFactory.createMemModelMaker().createDefaultModel(); + RDFDataMgr.read(model, + IOUtils.toInputStream(expected, StandardCharsets.UTF_8), + Lang.RDFXML); + } catch (Exception rdfException) { + fail(String.format("%s. RDF model error. %s.", + file, rdfException.getMessage())); + } +// String[] shaclValidation = new String[]{"shacl/dcat-ap-2.1.1-base-SHACL.ttl"}; + String[] shaclValidation = new String[]{ + "shacl/eu-dcat-ap-3.0.0/shapes.ttl", + "shacl/eu-dcat-ap-3.0.0/range.ttl", + "shacl/eu-dcat-ap-3.0.0/shapes_recommended.ttl", + "shacl/eu-dcat-ap-3.0.0/imports.ttl", + "shacl/eu-dcat-ap-3.0.0/deprecateduris.ttl" + }; +// String[] shaclValidation = new String[]{"dcat-ap-hvd-2.2.0-SHACL.ttl"}; +// String[] shaclValidation = new String[]{"geodcat-ap-2.0.1-SHACL.ttl"}; + for (String shaclShapes : shaclValidation) { + applyShaclValidation(formatter, schema, checkfile, "", shaclShapes); + } + } + + private static void applyShaclValidation(String formatter, String schema, String checkfile, String url, String shaclShapes) { + String SHAPES = FormatterApiTest.class.getResource(shaclShapes).getFile(); + if (SHAPES.startsWith("/")) { + SHAPES.replaceFirst("/", ""); + } + + //Load document to validate. + String DATA = FormatterApiTest.class.getResource( + String.format("%s-%s-%s", + schema, formatter, checkfile) + ).getFile(); + if (DATA.startsWith("/")) { + DATA.replaceFirst("/", ""); + } + Graph shapesGraph; + Shapes shapes; + try { + shapesGraph = RDFDataMgr.loadGraph(SHAPES); + shapes = Shapes.parse(shapesGraph); + } catch (Exception e) { + fail(String.format( + "%s. Checked with %s [%s]. SHACL graph error. Error is: %s", + url, checkfile, shaclShapes, e.getMessage())); + return; + } + + Graph dataGraph = RDFDataMgr.loadGraph(DATA); + + ValidationReport report = ShaclValidator.get().validate(shapes, dataGraph); + + if (!report.conforms()) { + long count = report.getEntries().stream() + .filter(e -> e.severity().level().getURI().equals("http://www.w3.org/ns/shacl#Violation")) + .count(); + + ShLib.printReport(report); + System.out.println(); + RDFDataMgr.write(System.out, report.getModel(), Lang.TTL); + fail(String.format("%s. Checked with %s [%s]. Invalid DCAT-AP document. %d violations found. See report in the test console output.", + url, checkfile, shaclShapes, count)); + } + } + private void createTestData() throws Exception { loginAsAdmin(context); - loadFile(getSampleISO19139MetadataXml()); - loadFile(getSampleISO19115MetadataXml()); + + Set<String> testFiles = new HashSet<>(); + for (String[] testParameter : data()) { + testFiles.add(testParameter[0]); + } + for (String file : testFiles) { + if (file.equals("iso19139")) { + loadFile("iso19139", getSampleISO19139MetadataXml()); + } else if (file.equals("iso19115-3.2018")) { + loadFile("iso19115-3.2018", getSampleISO19115MetadataXml()); + } else { + loadFile(file, + Xml.loadStream( + FormatterApiTest.class.getResourceAsStream(file))); + } + } } - private void loadFile(Element sampleMetadataXml) throws Exception { + private void loadFile(String key, Element sampleMetadataXml) throws Exception { AbstractMetadata metadata = injectMetadataInDbDoNotRefreshHeader(sampleMetadataXml, context); - testDataUuidBySchema.put(metadata.getDataInfo().getSchemaId(), metadata.getUuid()); + testDataUuidBySchema.put(key, metadata.getUuid()); } } diff --git a/services/src/test/java/org/fao/geonet/api/registries/vocabularies/KeywordsApiTest.java b/services/src/test/java/org/fao/geonet/api/registries/vocabularies/KeywordsApiTest.java index 01871cb85a0..2545a897882 100644 --- a/services/src/test/java/org/fao/geonet/api/registries/vocabularies/KeywordsApiTest.java +++ b/services/src/test/java/org/fao/geonet/api/registries/vocabularies/KeywordsApiTest.java @@ -249,6 +249,6 @@ public void testImportOntologyToSkos() throws Exception { "Mobility Theme", scheme.getChildText("title", NAMESPACE_DCT)); List concepts = thesaurus.getChildren("Concept", SKOS_NAMESPACE); - assertEquals(123, concepts.size()); + assertEquals(121, concepts.size()); } } diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-dataset-core.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-dataset-core.rdf new file mode 100644 index 00000000000..92696f2fcde --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-dataset-core.rdf @@ -0,0 +1,558 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Dataset"> + <skos:prefLabel>Dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <dct:type> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#dataset"> + <skos:prefLabel>dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T12:26:19.337626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:33:24</dct:issued> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <dct:title xml:lang="fre">Complete metadata</dct:title> + <dct:description xml:lang="fre">All information about the resource</dct:description> + </foaf:Document> + </dcat:landingPage> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-03-31</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-02-21</dct:issued> + <dcat:version>1.0</dcat:version> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/7fe2f305-1302-4297-b67e-792f55acd834</dct:identifier> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">BE.SPW.INFRASIG.CARTON/DGATLPE__PDS</dct:identifier> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <adms:status> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#onGoing"> + <skos:prefLabel xml:lang="fre">Mis à jour continue</skos:prefLabel> + </skos:Concept> + </adms:status> + <dct:creator> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:creator> + <dct:publisher> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:publisher> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Thierry Berthet</foaf:name> + <org:memberOf> + <foaf:Organization> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description rdf:about="https://orcid.org/jb98765"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Jean Berthet</foaf:name> + <org:memberOf> + <foaf:Organization rdf:about="https://orcid.org/jb98765"> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + <foaf:mbox rdf:resource="mailto:jean.b@spw.org"/> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be</foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + <skos:prefLabel xml:lang="fre">Agriculture</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + <skos:prefLabel xml:lang="fre">Société et activités</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + <skos:prefLabel xml:lang="fre">Aménagement du territoire</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + <skos:prefLabel xml:lang="fre">Plans et règlements</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">espace</dcat:keyword> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes</dcat:keyword> + <dcat:keyword xml:lang="fre">législation</dcat:keyword> + <dcat:keyword xml:lang="fre">géographie</dcat:keyword> + <dcat:keyword xml:lang="fre">agriculture</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du paysage</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau ferroviaire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification écologique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'aménagement</dcat:keyword> + <dcat:keyword xml:lang="fre">extraction</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat rural</dcat:keyword> + <dcat:keyword xml:lang="fre">gestion et planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">secteur d'activité</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de gestion</dcat:keyword> + <dcat:keyword xml:lang="fre">planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">planification économique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan</dcat:keyword> + <dcat:keyword xml:lang="fre">développement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure routière</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'occupation des sols</dcat:keyword> + <dcat:keyword xml:lang="fre">activité économique</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau routier</dcat:keyword> + <dcat:keyword xml:lang="fre">planification urbaine</dcat:keyword> + <dcat:keyword xml:lang="fre">loisirs</dcat:keyword> + <dcat:keyword xml:lang="fre">canalisation</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat urbain</dcat:keyword> + <dcat:keyword xml:lang="fre">mesure d'aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification régionale</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat</dcat:keyword> + <dcat:keyword xml:lang="fre">PanierTelechargementGeoportail</dcat:keyword> + <dcat:keyword xml:lang="fre">Open Data</dcat:keyword> + <dcat:keyword xml:lang="fre">WalOnMap</dcat:keyword> + <dcat:keyword xml:lang="fre">Extraction_DIG</dcat:keyword> + <dcat:keyword xml:lang="fre">BDInfraSIGNO</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de secteur</dcat:keyword> + <dcat:keyword xml:lang="fre">point remarquable</dcat:keyword> + <dcat:keyword xml:lang="fre">PDS</dcat:keyword> + <dcat:keyword xml:lang="fre">CoDT</dcat:keyword> + <dcat:keyword xml:lang="fre">Point de vue</dcat:keyword> + <dcat:keyword xml:lang="fre">centre d'enfouissement</dcat:keyword> + <dcat:keyword xml:lang="fre">servitude</dcat:keyword> + <dcat:keyword xml:lang="fre">Code du Développement Territorial</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/el"> + <skos:prefLabel xml:lang="fre">Altitude</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mf"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + météorologiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/of"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + océanographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ac"> + <skos:prefLabel xml:lang="fre">Conditions atmosphériques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/gn"> + <skos:prefLabel xml:lang="fre">Dénominations géographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ge"> + <skos:prefLabel xml:lang="fre">Géologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hy"> + <skos:prefLabel xml:lang="fre">Hydrographie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/af"> + <skos:prefLabel xml:lang="fre">Installations agricoles et aquacoles</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sr"> + <skos:prefLabel xml:lang="fre">Régions maritimes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sd"> + <skos:prefLabel xml:lang="fre">Répartition des espèces</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mr"> + <skos:prefLabel xml:lang="fre">Ressources minérales</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hh"> + <skos:prefLabel xml:lang="fre">Santé et sécurité des personnes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">Mobilité</dcat:keyword> + <dcat:keyword xml:lang="fre">Observation de la terre et environnement</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://data.europa.eu/eli/reg/2014/1143/oj"> + <skos:prefLabel xml:lang="fre">1143/2014</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">No limitations to public access</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:license> + <dct:LicenseDocument rdf:about="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeA.pdf"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="https://opensource.org/licenses/BSL-1.0"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="https://opensource.org/licenses/CATOSL-1.1"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'accès et d'utilisation spécifiques</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:isPartOf rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b"/> + <dct:references rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <dct:hasPart rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + <pav:previousVersion rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + <dct:relation rdf:resource="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all"/> + <dct:isPartOf rdf:resource="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/ENG"/> + </dct:language> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="https://inspire.ec.europa.eu/id/document/tg/tn"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <rdfs:label xml:lang="fre">INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2</rdfs:label> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2014-04-17</dct:issued> + </dct:Standard> + </dct:conformsTo> + <adms:versionNotes xml:lang="fre">La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE).</adms:versionNotes> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.01</dcat:spatialResolutionInMeters> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">30</dcat:spatialResolutionInMeters> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.3048</dcat:spatialResolutionInMeters> + <dcat:temporalResolution rdf:datatype="http://www.w3.org/2001/XMLSchema#duration">P0Y2M0DT0H0M0S</dcat:temporalResolution> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <dct:spatial> + <dct:Location rdf:about="https://en.wikipedia.org/wiki/Wallonia"/> + </dct:spatial> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <skos:prefLabel xml:lang="fre">Région wallonne</skos:prefLabel> + </rdf:Description> + </dct:spatial> + <dct:temporal> + <dct:PeriodOfTime> + <dcat:startDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-06</dcat:startDate> + <dcat:endDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-08</dcat:endDate> + </dct:PeriodOfTime> + </dct:temporal> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://publications.europa.eu/resource/authority/frequency/MONTHLY"/> + </dct:accrualPeriodicity> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#asNeeded"/> + </dct:accrualPeriodicity> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="https://w3id.org/mobilitydcat-ap/update-frequency/5min"/> + </dct:accrualPeriodicity> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="https://w3id.org/mobilitydcat-ap/update-frequency/15min"/> + </dct:accrualPeriodicity> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png"> + <dct:description xml:lang="fre">pds_codt_pic</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T00:00:00</dct:issued> + <dcat:accessURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:downloadURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:byteSize rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">10485760</dcat:byteSize> + <dct:format> + <dct:MediaTypeOrExtent> + <rdfs:label>ESRI Shapefile (.shp)</rdfs:label> + </dct:MediaTypeOrExtent> + </dct:format> + <dcat:compressFormat> + <dct:MediaType rdf:about="https://publications.europa.eu/resource/authority/file-type/ZIP"/> + </dcat:compressFormat> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS"> + <dct:title xml:lang="fre">Application de consultation des données de la DGO4 - Plan de secteur</dct:title> + <dct:description xml:lang="fre">Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"> + <dct:title xml:lang="fre">Application WalOnMap - Toute la Wallonie à la carte</dct:title> + <dct:description xml:lang="fre">Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie.</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dct:description xml:lang="fre">Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dct:description xml:lang="fre">Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengeospatial.org/standards/wms"/> + </dct:conformsTo> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps"> + <dct:title xml:lang="fre">Base de données du Plan de secteur</dct:title> + <dct:description xml:lang="fre">Site permettant la recherche de Plans de secteur et des modifications dans la base + de données</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese"> + <dct:title xml:lang="fre">Inventaire des données géographiques de la DGO4</dct:title> + <dct:description xml:lang="fre">Inventaire des données géographiques produites ou exploitées à la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar"> + <dct:title xml:lang="fre">La Direction de l'Aménagement Régional</dct:title> + <dct:description xml:lang="fre">Site de la Direction de l'Aménagement Régional (DAR)</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip"> + <dct:title xml:lang="fre">Plan de Secteur au format SHP</dct:title> + <dct:description xml:lang="fre">Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72</dct:description> + </foaf:Document> + </foaf:page> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-dataset.xml b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-dataset.xml new file mode 100644 index 00000000000..c62fe2febcb --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-dataset.xml @@ -0,0 +1,1904 @@ +<mdb:MD_Metadata xmlns:mri="http://standards.iso.org/iso/19115/-3/mri/1.0" + xmlns:mrl="http://standards.iso.org/iso/19115/-3/mrl/2.0" + xmlns:mrs="http://standards.iso.org/iso/19115/-3/mrs/1.0" + xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0" + xmlns:mrd="http://standards.iso.org/iso/19115/-3/mrd/1.0" + xmlns:mco="http://standards.iso.org/iso/19115/-3/mco/1.0" + xmlns:mpc="http://standards.iso.org/iso/19115/-3/mpc/1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:lan="http://standards.iso.org/iso/19115/-3/lan/1.0" + xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:gex="http://standards.iso.org/iso/19115/-3/gex/1.0" + xmlns:gml="http://www.opengis.net/gml/3.2" + xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" + xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" + xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" + xmlns:mmi="http://standards.iso.org/iso/19115/-3/mmi/1.0" + xmlns:mdq="http://standards.iso.org/iso/19157/-2/mdq/1.0" + xsi:schemaLocation="http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd"> + <mdb:metadataIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>7fe2f305-1302-4297-b67e-792f55acd834</gco:CharacterString> + </mcc:code> + <mcc:codeSpace> + <gco:CharacterString>urn:uuid</gco:CharacterString> + </mcc:codeSpace> + </mcc:MD_Identifier> + </mdb:metadataIdentifier> + <mdb:defaultLocale> + <lan:PT_Locale id="FR"> + <lan:language> + <lan:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="fre"/> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode" + codeListValue="utf8"/> + </lan:characterEncoding> + </lan:PT_Locale> + </mdb:defaultLocale> + <mdb:metadataScope> + <mdb:MD_MetadataScope> + <mdb:resourceScope> + <mcc:MD_ScopeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" + codeListValue="dataset"/> + </mdb:resourceScope> + <mdb:name> + <gco:CharacterString>Collection de données thématiques</gco:CharacterString> + </mdb:name> + </mdb:MD_MetadataScope> + </mdb:metadataScope> + <mdb:contact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="pointOfContact"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Direction de la gestion des informations territoriales (SPW - Territoire, Logement, + Patrimoine, Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction de la + gestion des informations territoriales) + </gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>donnees.dgo4@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mdb:contact> + <mdb:dateInfo> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2023-12-08T12:26:19.337626Z</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="revision"/> + </cit:dateType> + </cit:CI_Date> + </mdb:dateInfo> + <mdb:dateInfo> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2019-04-02T12:33:24</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="creation"/> + </cit:dateType> + </cit:CI_Date> + </mdb:dateInfo> + <mdb:metadataStandard> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>ISO 19115</gco:CharacterString> + </cit:title> + <cit:edition> + <gco:CharacterString>2003/Cor 1:2006</gco:CharacterString> + </cit:edition> + </cit:CI_Citation> + </mdb:metadataStandard> + <mdb:metadataLinkage> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834 + </gco:CharacterString> + </cit:linkage> + <cit:name> + <gco:CharacterString>Complete metadata</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>All information about the resource</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="completeMetadata"/> + </cit:function> + </cit:CI_OnlineResource> + </mdb:metadataLinkage> + <mdb:referenceSystemInfo> + <mrs:MD_ReferenceSystem> + <mrs:referenceSystemIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor xlink:href="http://www.opengis.net/def/crs/EPSG/0/31370">EPSG:31370</gcx:Anchor> + </mcc:code> + <mcc:description> + <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString> + </mcc:description> + </mcc:MD_Identifier> + </mrs:referenceSystemIdentifier> + <mrs:referenceSystemType> + <mrs:MD_ReferenceSystemTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode" + codeListValue="projected"/> + </mrs:referenceSystemType> + </mrs:MD_ReferenceSystem> + </mdb:referenceSystemInfo> + <mdb:identificationInfo> + <mri:MD_DataIdentification> + <mri:citation> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>Plan de secteur en vigueur (version coordonnée vectorielle)</gco:CharacterString> + </cit:title> + <cit:alternateTitle> + <gco:CharacterString>PDS</gco:CharacterString> + </cit:alternateTitle> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2023-03-31</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="revision"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2023-02-21</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:edition> + <gco:CharacterString>1.0</gco:CharacterString> + </cit:edition> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>7fe2f305-1302-4297-b67e-792f55acd834</gco:CharacterString> + </mcc:code> + <mcc:codeSpace> + <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString> + </mcc:codeSpace> + </mcc:MD_Identifier> + </cit:identifier> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>DGATLPE__PDS</gco:CharacterString> + </mcc:code> + <mcc:codeSpace> + <gco:CharacterString>BE.SPW.INFRASIG.CARTON</gco:CharacterString> + </mcc:codeSpace> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:citation> + <mri:abstract> + <gco:CharacterString>Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005. + </gco:CharacterString> + </mri:abstract> + <mri:status> + <mcc:MD_ProgressCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ProgressCode" + codeListValue="onGoing"/> + </mri:status> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="author"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées) + </gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="publisher"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées) + </gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="pointOfContact"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées) + </gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="custodian"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial) + </gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>developpement.territorial@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + <cit:individual> + <cit:CI_Individual> + <cit:name> + <gco:CharacterString>Thierry Berthet</gco:CharacterString> + </cit:name> + </cit:CI_Individual> + </cit:individual> + <cit:individual> + <cit:CI_Individual> + <cit:name> + <gco:CharacterString>Jean Berthet</gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>jean.b@spw.org</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + <cit:partyIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>https://orcid.org/jb98765</gco:CharacterString> + </mcc:code> + </mcc:MD_Identifier> + </cit:partyIdentifier> + <cit:positionName gco:nilReason="missing"> + <gco:CharacterString/> + </cit:positionName> + </cit:CI_Individual> + </cit:individual> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="owner"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + <cit:onlineResource> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="information"/> + </cit:function> + </cit:CI_OnlineResource> + </cit:onlineResource> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:spatialRepresentationType> + <mcc:MD_SpatialRepresentationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode" + codeListValue="vector"/> + </mri:spatialRepresentationType> + <mri:spatialResolution> + <mri:MD_Resolution> + <mri:equivalentScale> + <mri:MD_RepresentativeFraction> + <mri:denominator> + <gco:Integer>10000</gco:Integer> + </mri:denominator> + </mri:MD_RepresentativeFraction> + </mri:equivalentScale> + </mri:MD_Resolution> + </mri:spatialResolution> + <mri:spatialResolution> + <mri:MD_Resolution> + <mri:distance> + <gco:Distance uom="cm">1</gco:Distance> + </mri:distance> + </mri:MD_Resolution> + </mri:spatialResolution> + <mri:spatialResolution> + <mri:MD_Resolution> + <mri:distance> + <gco:Distance uom="m">30</gco:Distance> + </mri:distance> + </mri:MD_Resolution> + </mri:spatialResolution> + <mri:spatialResolution> + <mri:MD_Resolution> + <mri:distance> + <gco:Distance uom="urn:ogc:def:uom:UCUM::[ft_i]">1</gco:Distance> + </mri:distance> + </mri:MD_Resolution> + </mri:spatialResolution> + <mri:temporalResolution> + <gco:TM_PeriodDuration>P0Y2M0DT0H0M0S</gco:TM_PeriodDuration> + </mri:temporalResolution> + <mri:topicCategory> + <mri:MD_TopicCategoryCode>planningCadastre</mri:MD_TopicCategoryCode> + </mri:topicCategory> + <mri:topicCategory> + <mri:MD_TopicCategoryCode>imageryBaseMapsEarthCover</mri:MD_TopicCategoryCode> + </mri:topicCategory> + <mri:topicCategory> + <mri:MD_TopicCategoryCode>location</mri:MD_TopicCategoryCode> + </mri:topicCategory> + <mri:extent> + <gex:EX_Extent> + <gex:description> + <gco:CharacterString>Région wallonne</gco:CharacterString> + </gex:description> + <gex:geographicElement> + <gex:EX_GeographicBoundingBox> + <gex:westBoundLongitude> + <gco:Decimal>2.75</gco:Decimal> + </gex:westBoundLongitude> + <gex:eastBoundLongitude> + <gco:Decimal>6.50</gco:Decimal> + </gex:eastBoundLongitude> + <gex:southBoundLatitude> + <gco:Decimal>49.45</gco:Decimal> + </gex:southBoundLatitude> + <gex:northBoundLatitude> + <gco:Decimal>50.85</gco:Decimal> + </gex:northBoundLatitude> + </gex:EX_GeographicBoundingBox> + </gex:geographicElement> + <gex:geographicElement> + <gex:EX_GeographicDescription> + <gex:geographicIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor xlink:href="https://en.wikipedia.org/wiki/Wallonia"> + https://en.wikipedia.org/wiki/Wallonia + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </gex:geographicIdentifier> + </gex:EX_GeographicDescription> + </gex:geographicElement> + <gex:geographicElement> + <gex:EX_GeographicDescription> + <gex:geographicIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>Région wallonne</gco:CharacterString> + </mcc:code> + </mcc:MD_Identifier> + </gex:geographicIdentifier> + </gex:EX_GeographicDescription> + </gex:geographicElement> + <gex:temporalElement> + <gex:EX_TemporalExtent> + <gex:extent> + <gml:TimePeriod gml:id="d67621e453a1053982"> + <gml:begin> + <gml:TimeInstant gml:id="d67621e455a1053982"> + <gml:timePosition>2023-12-06</gml:timePosition> + </gml:TimeInstant> + </gml:begin> + <gml:end> + <gml:TimeInstant gml:id="d67621e459a1053982"> + <gml:timePosition>2023-12-08</gml:timePosition> + </gml:TimeInstant> + </gml:end> + </gml:TimePeriod> + </gex:extent> + </gex:EX_TemporalExtent> + </gex:temporalElement> + </gex:EX_Extent> + </mri:extent> + <mri:resourceMaintenance> + <mmi:MD_MaintenanceInformation> + <mmi:maintenanceAndUpdateFrequency> + <mmi:MD_MaintenanceFrequencyCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_MaintenanceFrequencyCode" + codeListValue="monthly"/> + </mmi:maintenanceAndUpdateFrequency> + </mmi:MD_MaintenanceInformation> + </mri:resourceMaintenance> + <mri:resourceMaintenance> + <mmi:MD_MaintenanceInformation> + <mmi:maintenanceAndUpdateFrequency> + <mmi:MD_MaintenanceFrequencyCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_MaintenanceFrequencyCode" + codeListValue="asNeeded"/> + </mmi:maintenanceAndUpdateFrequency> + </mmi:MD_MaintenanceInformation> + </mri:resourceMaintenance> + <mri:resourceMaintenance> + <mmi:MD_MaintenanceInformation> + <mmi:maintenanceAndUpdateFrequency> + <mmi:MD_MaintenanceFrequencyCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_MaintenanceFrequencyCode" + codeListValue="5min"/> + </mmi:maintenanceAndUpdateFrequency> + <mmi:userDefinedMaintenanceFrequency> + <gco:TM_PeriodDuration>P0Y0M0DT0H15M0S</gco:TM_PeriodDuration> + </mmi:userDefinedMaintenanceFrequency> + <mmi:maintenanceNote> + <gco:CharacterString>L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des + dossiers abrogés se font au fur et à mesure de la réception des informations. + </gco:CharacterString> + </mmi:maintenanceNote> + </mmi:MD_MaintenanceInformation> + </mri:resourceMaintenance> + <mri:graphicOverview> + <mcc:MD_BrowseGraphic> + <mcc:fileName> + <gco:CharacterString> + https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png + </gco:CharacterString> + </mcc:fileName> + <mcc:fileDescription> + <gco:CharacterString>pds_codt_pic</gco:CharacterString> + </mcc:fileDescription> + <mcc:fileType> + <gco:CharacterString>png</gco:CharacterString> + </mcc:fileType> + </mcc:MD_BrowseGraphic> + </mri:graphicOverview> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + Agriculture + </gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + Société et activités + </gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + Aménagement du territoire + </gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + Plans et règlements + </gcx:Anchor> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon">Thèmes du + géoportail wallon + </gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2014-06-26</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy"> + geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>espace</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>zones naturelles, paysages, écosystèmes</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>législation</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>géographie</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>agriculture</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://geonetwork-opensource.org/gemet-theme">GEMET themes</gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2009-09-22</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme"> + geonetwork.thesaurus.external.theme.gemet-theme + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>aménagement du paysage</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>réseau ferroviaire</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>planification écologique</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>plan d'aménagement</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>extraction</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>habitat rural</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>gestion et planification rurale</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>secteur d'activité</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>infrastructure</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>plan de gestion</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>planification rurale</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>planification économique</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>plan</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>développement du territoire</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>infrastructure routière</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>plan d'occupation des sols</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>activité économique</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>réseau routier</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>planification urbaine</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>loisirs</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>canalisation</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>habitat urbain</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>mesure d'aménagement du territoire</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>territoire</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>planification régionale</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>habitat</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://geonetwork-opensource.org/gemet">GEMET</gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2009-09-22</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet"> + geonetwork.thesaurus.external.theme.gemet + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>PanierTelechargementGeoportail</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Open Data</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>WalOnMap</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Extraction_DIG</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>BDInfraSIGNO</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="https://metawal.wallonie.be/thesaurus/infrasig">Mots-clés InfraSIG</gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2022-10-03</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG"> + geonetwork.thesaurus.external.theme.infraSIG + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>aménagement du territoire</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>plan de secteur</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>point remarquable</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>PDS</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>CoDT</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Point de vue</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>centre d'enfouissement</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>servitude</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Code du Développement Territorial</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/el">Altitude</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/mf">Caractéristiques géographiques + météorologiques + </gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/of">Caractéristiques géographiques + océanographiques + </gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/ac">Conditions atmosphériques</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/gn">Dénominations géographiques</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/ge">Géologie</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/hy">Hydrographie</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/af">Installations agricoles et aquacoles + </gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/sr">Régions maritimes</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/sd">Répartition des espèces</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/mr">Ressources minérales</gcx:Anchor> + </mri:keyword> + <mri:keyword> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/hh">Santé et sécurité des personnes</gcx:Anchor> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme">GEMET - INSPIRE themes, version 1.0 + </gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2008-01-01</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2008-06-01</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="http://localhost:8080/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeutheme-theme"> + geonetwork.thesaurus.external.theme.httpinspireeceuropaeutheme-theme + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gco:CharacterString>Mobilité</gco:CharacterString> + </mri:keyword> + <mri:keyword> + <gco:CharacterString>Observation de la terre et environnement</gco:CharacterString> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://data.europa.eu/bna/asd487ae75">High-value dataset categories</gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2023-10-05</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2023-10-05</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.high-value-dataset-category"> + geonetwork.thesaurus.external.theme.high-value-dataset-category + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword> + <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2014/1143/oj">1143/2014</gcx:Anchor> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://data.europa.eu/r5r/applicableLegislation">High-value dataset applicable + legislations + </gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2024-04-04</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2024-04-04</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://apps.titellus.net/geonetwork/srv/api/registries/vocabularies/external.theme.high-value-dataset-applicable-legislation"> + geonetwork.thesaurus.external.theme.high-value-dataset-applicable-legislation + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:accessConstraints> + <mco:MD_RestrictionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode" + codeListValue="otherRestrictions"/> + </mco:accessConstraints> + <mco:otherConstraints> + <gcx:Anchor + xlink:href="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations">No + limitations to public access + </gcx:Anchor> + </mco:otherConstraints> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:accessConstraints> + <mco:MD_RestrictionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode" + codeListValue="otherRestrictions"/> + </mco:accessConstraints> + <mco:otherConstraints> + <gco:CharacterString>No limitations to public access</gco:CharacterString> + </mco:otherConstraints> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:useLimitation> + <gco:CharacterString>Conditions d'accès et d'utilisation spécifiques</gco:CharacterString> + </mco:useLimitation> + <mco:useConstraints> + <mco:MD_RestrictionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode" + codeListValue="otherRestrictions"/> + </mco:useConstraints> + <mco:otherConstraints> + <gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf">Les + conditions générales d'utilisation s'appliquent. + </gcx:Anchor> + </mco:otherConstraints> + <mco:otherConstraints> + <gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf">Les + conditions générales d'accès s’appliquent. + </gcx:Anchor> + </mco:otherConstraints> + <mco:otherConstraints> + <gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CPU-TypeA.pdf"> + Les conditions générales d'utilisation s'appliquent et sont étendues par les conditions particulières de + type A. + </gcx:Anchor> + </mco:otherConstraints> + <mco:otherConstraints> + <gcx:Anchor xlink:href="https://opensource.org/licenses/BSL-1.0">BSL</gcx:Anchor> + </mco:otherConstraints> + <mco:otherConstraints> + <gco:CharacterString>https://opensource.org/licenses/CATOSL-1.1</gco:CharacterString> + </mco:otherConstraints> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:reference> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg_impl/2023/138/oj">Commission Implementing + Regulation (EU) 2023/138 of 21 December 2022 laying down a list of specific high-value datasets and + the arrangements for their publication and re-use + </gcx:Anchor> + </cit:title> + </cit:CI_Citation> + </mco:reference> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <mri:associatedResource> + <mri:MD_AssociatedResource> + <mri:associationType> + <mri:DS_AssociationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode" + codeListValue="crossReference"/> + </mri:associationType> + <mri:initiativeType> + <mri:DS_InitiativeTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_InitiativeTypeCode" + codeListValue="collection"/> + </mri:initiativeType> + <mri:metadataReference + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b" + uuidref="be875ddb-ffd9-4c23-a013-53063a366b5b"/> + </mri:MD_AssociatedResource> + </mri:associatedResource> + <mri:associatedResource> + <mri:MD_AssociatedResource> + <mri:associationType> + <mri:DS_AssociationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode" + codeListValue="crossReference"/> + </mri:associationType> + <mri:metadataReference + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058" + uuidref="ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + </mri:MD_AssociatedResource> + </mri:associatedResource> + <mri:associatedResource> + <mri:MD_AssociatedResource> + <mri:associationType> + <mri:DS_AssociationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode" + codeListValue="isComposedOf"/> + </mri:associationType> + <mri:metadataReference + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647" + uuidref="201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + </mri:MD_AssociatedResource> + </mri:associatedResource> + <mri:associatedResource> + <mri:MD_AssociatedResource> + <mri:associationType> + <mri:DS_AssociationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode" + codeListValue="revisionOf"/> + </mri:associationType> + <mri:metadataReference + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647" + uuidref="19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + </mri:MD_AssociatedResource> + </mri:associatedResource> + <mri:associatedResource> + <mri:MD_AssociatedResource> + <mri:associationType> + <mri:DS_AssociationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode" + codeListValue="largerWorkCitation"/> + </mri:associationType> + <mri:metadataReference uuidref="ffc45d44-1cc2-4924-bb8c-214096eb9058" + xlink:href="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all" + xlink:title="INSPIRE - Sites protégés en Wallonie (BE)"/> + </mri:MD_AssociatedResource> + </mri:associatedResource> + <mri:associatedResource> + <mri:MD_AssociatedResource> + <mri:associationType> + <mri:DS_AssociationTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode" + codeListValue="partOfSeamlessDatabase"/> + </mri:associationType> + <mri:metadataReference uuidref="da165110-88fd-11da-a88f-000d939bc5d8" + xlink:href="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + </mri:MD_AssociatedResource> + </mri:associatedResource> + <mri:defaultLocale> + <lan:PT_Locale> + <lan:language> + <lan:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="fre"/> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode" + codeListValue="utf8"/> + </lan:characterEncoding> + </lan:PT_Locale> + </mri:defaultLocale> + <mri:otherLocale> + <lan:PT_Locale> + <lan:language> + <lan:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="eng"/> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode" + codeListValue=""/> + </lan:characterEncoding> + </lan:PT_Locale> + </mri:otherLocale> + </mri:MD_DataIdentification> + </mdb:identificationInfo> + <mdb:distributionInfo> + <mrd:MD_Distribution> + <mrd:distributionFormat> + <mrd:MD_Format> + <mrd:formatSpecificationCitation> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/media-types/application/x-shapefile">ESRI Shapefile + (.shp) + </gcx:Anchor> + </cit:title> + <cit:date gco:nilReason="unknown"/> + <cit:edition> + <gco:CharacterString>-</gco:CharacterString> + </cit:edition> + </cit:CI_Citation> + </mrd:formatSpecificationCitation> + </mrd:MD_Format> + </mrd:distributionFormat> + <mrd:distributionFormat> + <mrd:MD_Format> + <mrd:formatSpecificationCitation> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/media-types/application/x-filegdb">ESRI File + Geodatabase (.fgdb) + </gcx:Anchor> + </cit:title> + <cit:date gco:nilReason="unknown"/> + <cit:edition> + <gco:CharacterString>10.x</gco:CharacterString> + </cit:edition> + </cit:CI_Citation> + </mrd:formatSpecificationCitation> + </mrd:MD_Format> + </mrd:distributionFormat> + <mrd:distributor> + <mrd:MD_Distributor> + <mrd:distributorContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="distributor"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name> + <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mrd:distributorContact> + <mrd:distributionOrderProcess> + <mrd:MD_StandardOrderProcess> + <mrd:fees gco:nilReason="missing"> + <gco:CharacterString/> + </mrd:fees> + <mrd:plannedAvailableDateTime> + <gco:DateTime>2023-12-08T00:00:00</gco:DateTime> + </mrd:plannedAvailableDateTime> + <mrd:orderingInstructions> + <gco:CharacterString>Il est conseillé d'utiliser les liens référencés dans les ressources associés dans + le cas où la demande de téléchargement porte sur l'entièreté du territoire concerné par le jeu de + données. + + Si votre demande porte sur un format spécifique de donnée ou une partie spécifique du territoire, + veuillez suivre les instructions d'obtention d'une copie physique d’une donnée détaillées sur + https://geoportail.wallonie.be/telecharger. L’utilisation des géoservices est à privilégier. + + Cette ressource est une série de couches de données. En la commandant, l'ensemble des couches + constitutives de cette série vous sera automatiquement fourni. + </gco:CharacterString> + </mrd:orderingInstructions> + <mrd:turnaround gco:nilReason="missing"> + <gco:CharacterString/> + </mrd:turnaround> + <mrd:orderOptionsType> + <gco:RecordType/> + </mrd:orderOptionsType> + <mrd:orderOptions> + <gco:Record/> + </mrd:orderOptions> + </mrd:MD_StandardOrderProcess> + </mrd:distributionOrderProcess> + <mrd:distributorTransferOptions> + <mrd:MD_DigitalTransferOptions> + <mrd:transferSize> + <gco:Real>10</gco:Real> + </mrd:transferSize> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://data.monde.org/secteur.shp</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:DOWNLOAD:ESRI Shapefile (.shp)</gco:CharacterString> + </cit:protocol> + <cit:name gco:nilReason="missing"> + <gco:CharacterString/> + </cit:name> + <cit:description gco:nilReason="missing"> + <gco:CharacterString/> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue=""/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:distributionFormat> + <mrd:MD_Format> + <mrd:formatSpecificationCitation> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>GeoPackage</gco:CharacterString> + </cit:title> + </cit:CI_Citation> + </mrd:formatSpecificationCitation> + <mrd:fileDecompressionTechnique> + <gco:CharacterString>ZIP</gco:CharacterString> + </mrd:fileDecompressionTechnique> + </mrd:MD_Format> + </mrd:distributionFormat> + </mrd:MD_DigitalTransferOptions> + </mrd:distributorTransferOptions> + </mrd:MD_Distributor> + </mrd:distributor> + <mrd:transferOptions> + <mrd:MD_DigitalTransferOptions> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Application de consultation des données de la DGO4 - Plan de secteur + </gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4. + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="browsing"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:applicationProfile> + <gco:CharacterString>WalOnMap</gco:CharacterString> + </cit:applicationProfile> + <cit:name> + <gco:CharacterString>Application WalOnMap - Toute la Wallonie à la carte</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie. + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="browsing"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>ESRI:REST</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Service de visualisation ESRI-REST</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur" + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="browsing"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>OGC:WMS</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Service de visualisation WMS</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur" + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="browsing"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Base de données du Plan de secteur</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Site permettant la recherche de Plans de secteur et des modifications dans la base + de données + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="search"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Inventaire des données géographiques de la DGO4</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Inventaire des données géographiques produites ou exploitées à la DGO4. + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="information"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>La Direction de l'Aménagement Régional</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Site de la Direction de l'Aménagement Régional (DAR)</gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="information"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:DOWNLOAD-1.0-http--download</gco:CharacterString> + </cit:protocol> + <cit:name> + <gco:CharacterString>Plan de Secteur au format SHP</gco:CharacterString> + </cit:name> + <cit:description> + <gco:CharacterString>Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72 + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="information"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + </mrd:MD_DigitalTransferOptions> + </mrd:transferOptions> + </mrd:MD_Distribution> + </mdb:distributionInfo> + <mdb:dataQualityInfo> + <mdq:DQ_DataQuality> + <mdq:scope> + <mcc:MD_Scope> + <mcc:level> + <mcc:MD_ScopeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" + codeListValue="series"/> + </mcc:level> + <mcc:levelDescription> + <mcc:MD_ScopeDescription> + <mcc:other> + <gco:CharacterString>Série de couches de données thématiques</gco:CharacterString> + </mcc:other> + </mcc:MD_ScopeDescription> + </mcc:levelDescription> + </mcc:MD_Scope> + </mdq:scope> + <mdq:report> + <mdq:DQ_DomainConsistency> + <mdq:result> + <mdq:DQ_ConformanceResult> + <mdq:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010"> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089false">RÈGLEMENT (UE) N o 1089/2010 + DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du + Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services + de données géographiques + </gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2010-12-08</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mdq:specification> + <mdq:explanation> + <gco:CharacterString>Voir la spécification référencée</gco:CharacterString> + </mdq:explanation> + <mdq:pass> + <gco:Boolean>false</gco:Boolean> + </mdq:pass> + </mdq:DQ_ConformanceResult> + </mdq:result> + </mdq:DQ_DomainConsistency> + </mdq:report> + <mdq:report> + <mdq:DQ_DomainConsistency> + <mdq:result> + <mdq:DQ_ConformanceResult> + <mdq:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010"> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089">RÈGLEMENT (UE) N o 1089/2010 DE LA + COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du + Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services + de données géographiques + </gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2010-12-08</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mdq:specification> + <mdq:explanation> + <gco:CharacterString>Voir la spécification référencée</gco:CharacterString> + </mdq:explanation> + <mdq:pass> + <gco:Boolean>true</gco:Boolean> + </mdq:pass> + </mdq:DQ_ConformanceResult> + </mdq:result> + </mdq:DQ_DomainConsistency> + </mdq:report> + <mdq:report> + <mdq:DQ_DomainConsistency> + <mdq:result> + <mdq:DQ_ConformanceResult> + <mdq:specification> + <cit:CI_Citation> + <cit:title> + <gcx:Anchor xlink:href="https://inspire.ec.europa.eu/id/document/tg/tn">INSPIRE Data Specification + on Transport Networks – Technical Guidelines, version 3.2 + </gcx:Anchor> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2014-04-17</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mdq:specification> + <mdq:explanation> + <gco:CharacterString>Voir la spécification référencée</gco:CharacterString> + </mdq:explanation> + <mdq:pass> + <gco:Boolean>true</gco:Boolean> + </mdq:pass> + </mdq:DQ_ConformanceResult> + </mdq:result> + </mdq:DQ_DomainConsistency> + </mdq:report> + <mdq:report> + <mdq:DQ_DomainConsistency> + <mdq:result> + <mdq:DQ_ConformanceResult> + <mdq:specification> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2 + </gco:CharacterString> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2014-04-17</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mdq:specification> + <mdq:explanation> + <gco:CharacterString>Voir la spécification référencée</gco:CharacterString> + </mdq:explanation> + <mdq:pass> + <gco:Boolean>true</gco:Boolean> + </mdq:pass> + </mdq:DQ_ConformanceResult> + </mdq:result> + </mdq:DQ_DomainConsistency> + </mdq:report> + </mdq:DQ_DataQuality> + </mdb:dataQualityInfo> + <mdb:resourceLineage> + <mrl:LI_Lineage> + <mrl:statement> + <gco:CharacterString>La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE). + </gco:CharacterString> + </mrl:statement> + <mrl:scope> + <mcc:MD_Scope> + <mcc:level> + <mcc:MD_ScopeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" + codeListValue="dataset"/> + </mcc:level> + </mcc:MD_Scope> + </mrl:scope> + </mrl:LI_Lineage> + </mdb:resourceLineage> + <mdb:portrayalCatalogueInfo> + <mpc:MD_PortrayalCatalogueReference> + <mpc:portrayalCatalogueCitation> + <cit:CI_Citation> + <cit:title> + <gco:CharacterString>Légende du Plan de secteur</gco:CharacterString> + </cit:title> + <cit:onlineResource> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/legend + </gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:description> + <gco:CharacterString>Légende associée au plan de secteur (sur base du service de visualisation) + </gco:CharacterString> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="information.portrayal"/> + </cit:function> + </cit:CI_OnlineResource> + </cit:onlineResource> + </cit:CI_Citation> + </mpc:portrayalCatalogueCitation> + </mpc:MD_PortrayalCatalogueReference> + </mdb:portrayalCatalogueInfo> +</mdb:MD_Metadata> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-service-core.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-service-core.rdf new file mode 100644 index 00000000000..2d6dff1525b --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-service-core.rdf @@ -0,0 +1,386 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/3dbe0017-a71f-4923-9b44-fdb5afef5778"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Service"> + <skos:prefLabel>Service</skos:prefLabel> + </skos:Concept> + </dct:type> + <dct:type> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#service"> + <skos:prefLabel>service</skos:prefLabel> + </skos:Concept> + </dct:type> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-11T07:25:51.082626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:35:21</dct:issued> + <dct:title xml:lang="fre">INSPIRE - Sites protégés en Wallonie (BE) - Service de téléchargement + + + </dct:title> + <dct:title xml:lang="eng">INSPIRE - Protected site in Walloon region (BE) - Download + service</dct:title> + <dct:description xml:lang="fre">Ce service de téléchargement ATOM Feed donne accès aux couches de données du thème INSPIRE + "Sites protégés" au sein du territoire wallon (Belgique). + + Ce service de téléchargement simple est fourni par le Service public de Wallonie (SPW) et permet le + téléchargement direct des couches de données géographiques constitutives du thème "sites protégés" de la + Directive INSPIRE (Annexe 1.9) sur l'ensemble du territoire wallon. Il utilise la technologie de flux de + données ATOM Feed. + + Le service est conforme aux spécifications de la Directive INSPIRE en la matière. + + Ce service de téléchargement simple permet d’accéder en téléchargement aux couches de données présentes dans + le thème "Sites protégés". Via ce service, les informations suivantes sont téléchargeables : + - "INSPIRE - Sites protégés en Wallonie" : série de couches de données regroupant l'ensemble des sites + protégés en Wallonie; + - "INSPIRE - Sites protégés Natura 2000 en Wallonie" : série de couches de données présentant uniquement les + sites classés selon le mécanisme de désignation Natura 2000; + - "INSPIRE - Sites protégés par type IUCN en Wallonie" : série de couches de données présentant uniquement les + sites classés selon le mécanisme de désignation IUCN; + - "INSPIRE - Sites protégés UNESCO en Wallonie" : série de couches de données présentant uniquement les sites + classés selon le mécanisme de désignation UNESCO; + - "INSPIRE - Sites protégés Monument National en Wallonie" : série de couches de données présentant uniquement + les sites classés selon le mécanisme de désignation Monument National + + Le service propose les opérations suivantes : + - Accéder aux métadonnées du service de téléchargement; + - Décrire la série de couche de données géographiques relative au thème "Sites protégés" ainsi que les séries + dérivées selon le mécanisme de désignation; + - Accéder aux séries de couches de données géographiques relatives au thème "Sites protégés" et aux sites de + désignation par site protégé. + + </dct:description> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/3dbe0017-a71f-4923-9b44-fdb5afef5778"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/3dbe0017-a71f-4923-9b44-fdb5afef5778"/> + </dcat:landingPage> + <dct:title xml:lang="fre">INSPIRE - Sites protégés en Wallonie (BE) - Service de téléchargement + + + </dct:title> + <dct:title xml:lang="eng">INSPIRE - Protected site in Walloon region (BE) - Download + service</dct:title> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2017-11-15</dct:issued> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/3dbe0017-a71f-4923-9b44-fdb5afef5778</dct:identifier> + <dct:description xml:lang="fre">Ce service de téléchargement ATOM Feed donne accès aux couches de données du thème INSPIRE + "Sites protégés" au sein du territoire wallon (Belgique). + + Ce service de téléchargement simple est fourni par le Service public de Wallonie (SPW) et permet le + téléchargement direct des couches de données géographiques constitutives du thème "sites protégés" de la + Directive INSPIRE (Annexe 1.9) sur l'ensemble du territoire wallon. Il utilise la technologie de flux de + données ATOM Feed. + + Le service est conforme aux spécifications de la Directive INSPIRE en la matière. + + Ce service de téléchargement simple permet d’accéder en téléchargement aux couches de données présentes dans + le thème "Sites protégés". Via ce service, les informations suivantes sont téléchargeables : + - "INSPIRE - Sites protégés en Wallonie" : série de couches de données regroupant l'ensemble des sites + protégés en Wallonie; + - "INSPIRE - Sites protégés Natura 2000 en Wallonie" : série de couches de données présentant uniquement les + sites classés selon le mécanisme de désignation Natura 2000; + - "INSPIRE - Sites protégés par type IUCN en Wallonie" : série de couches de données présentant uniquement les + sites classés selon le mécanisme de désignation IUCN; + - "INSPIRE - Sites protégés UNESCO en Wallonie" : série de couches de données présentant uniquement les sites + classés selon le mécanisme de désignation UNESCO; + - "INSPIRE - Sites protégés Monument National en Wallonie" : série de couches de données présentant uniquement + les sites classés selon le mécanisme de désignation Monument National + + Le service propose les opérations suivantes : + - Accéder aux métadonnées du service de téléchargement; + - Décrire la série de couche de données géographiques relative au thème "Sites protégés" ainsi que les séries + dérivées selon le mécanisme de désignation; + - Accéder aux séries de couches de données géographiques relatives au thème "Sites protégés" et aux sites de + désignation par site protégé. + + </dct:description> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées) + + </vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Direction de l'Intégration des géodonnées (SPW - Secrétariat général - SPW Digital + - Département de la Géomatique - Direction de l'Intégration des géodonnées) + + </foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW) + + </foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be + + </foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/10"> + <skos:prefLabel xml:lang="fre">Nature et environnement + + </skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1010"> + <skos:prefLabel xml:lang="fre">Faune et flore + + </skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ps"> + <skos:prefLabel xml:lang="fre">Sites protégés + + </skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes + + </dcat:keyword> + <dcat:keyword xml:lang="fre">politique environnementale + + </dcat:keyword> + <dcat:keyword xml:lang="fre">biologie + + </dcat:keyword> + <dcat:keyword xml:lang="fre">site naturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">écologie + + </dcat:keyword> + <dcat:keyword xml:lang="fre">évaluation du patrimoine naturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">politique de conservation de la nature + + </dcat:keyword> + <dcat:keyword xml:lang="fre">monument historique + + </dcat:keyword> + <dcat:keyword xml:lang="fre">parc naturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">espace naturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">législation en matière de préservation de la nature + + </dcat:keyword> + <dcat:keyword xml:lang="fre">conservation des ressources naturelles + + </dcat:keyword> + <dcat:keyword xml:lang="fre">site naturel protégé + + </dcat:keyword> + <dcat:keyword xml:lang="fre">archéologie + + </dcat:keyword> + <dcat:keyword xml:lang="fre">milieu naturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">patrimoine naturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">paysage + + </dcat:keyword> + <dcat:keyword xml:lang="fre">géologie + + </dcat:keyword> + <dcat:keyword xml:lang="fre">monument + + </dcat:keyword> + <dcat:keyword xml:lang="fre">conservation + + </dcat:keyword> + <dcat:keyword xml:lang="fre">espace protégé + + </dcat:keyword> + <dcat:keyword xml:lang="fre">patrimoine culturel + + </dcat:keyword> + <dcat:keyword xml:lang="fre">Reporting INSPIRE + + </dcat:keyword> + <dcat:keyword xml:lang="fre">natura2000 + + </dcat:keyword> + <dcat:keyword xml:lang="fre">N2K + + </dcat:keyword> + <dcat:keyword xml:lang="fre">biodiversité + + </dcat:keyword> + <dcat:keyword xml:lang="fre">protected sites + + </dcat:keyword> + <dcat:keyword xml:lang="fre">site protégé + + </dcat:keyword> + <dcat:keyword xml:lang="fre">aire protégée + + </dcat:keyword> + <dcat:keyword xml:lang="fre">inspire + + </dcat:keyword> + <dcat:keyword xml:lang="fre">téléchargement + + </dcat:keyword> + <dcat:keyword xml:lang="fre">Feed + + </dcat:keyword> + <dcat:keyword xml:lang="fre">ATOM + + </dcat:keyword> + <dcat:keyword xml:lang="fre">IUCN + + </dcat:keyword> + <dcat:keyword xml:lang="fre">ProtectedSite + + </dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/infoProductAccessService"> + <skos:prefLabel xml:lang="fre">Service d’accès aux produits + + </skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">Location of sites (Habitats Directive) + + </dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/regional"> + <skos:prefLabel xml:lang="fre">Régional + + </skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:license> + <dct:LicenseDocument rdf:about="https://geoportail.wallonie.be/files/documents/ConditionsSPW/LicServicesSPW.pdf"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'utilisation spécifiques + + </dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2009/976"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <adms:versionNotes xml:lang="fre">Ce service de téléchargement simple INSPIRE basé sur ATOM est au standard Atom RFC 4287, à + la spécification GeoRSS Simple et à la spécification OpenSearch (pour les éléments concernés). + + </adms:versionNotes> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/3dbe0017-a71f-4923-9b44-fdb5afef5778/attachments/download_Inspire_20190430.png"> + <dct:description xml:lang="fre">INSPIRE_PS_DS_PIC + + </dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">INSPIRE Sites Protégés - Service de téléchargement + + </dct:title> + <dct:description xml:lang="fre">Adresse de connexion au service de téléchargement ATOM Feed des couches de données + du thème "Sites protégés". + + </dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/inspire/atom/PS_Service.xml"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">INSPIRE Sites Protégés - Service de téléchargement + + </dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/inspire/atom/PS_Service.xml"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/inspire/atom/PS_Opensearch.xml"/> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/inspire/atom/PS_Service.xml"/> + <dcat:endpointDescription rdf:resource="https://geoservices.wallonie.be/wms/PS_Service"/> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/c2526c30-ee7e-4c0b-b866-599e9aba3665"/> + </dcat:servesDataset> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + </dcat:servesDataset> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/bee148c9-f6f2-458e-8359-c33816927a8a"/> + </dcat:servesDataset> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/ce6b6455-3273-41e3-bfab-ae71bcd677cc"/> + </dcat:servesDataset> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/e2964ae5-93e3-4da0-ac16-b6cdb5c364e9"/> + </dcat:servesDataset> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/insipre/api/records/541e92de-dbc9-46df-880c-1076798bdbb3"/> + </dcat:servesDataset> + <dcat:servesDataset> + <dcat:Dataset rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/09b168b9-6f7c-4e6a-adb4-e3352eeda75b"/> + </dcat:servesDataset> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-service.xml b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-service.xml new file mode 100644 index 00000000000..9ac12ef8315 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-dcat-service.xml @@ -0,0 +1,1728 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdb:MD_Metadata xmlns:mdb="http://standards.iso.org/iso/19115/-3/mdb/2.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:cat="http://standards.iso.org/iso/19115/-3/cat/1.0" + xmlns:gfc="http://standards.iso.org/iso/19110/gfc/1.1" + xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/2.0" + xmlns:gcx="http://standards.iso.org/iso/19115/-3/gcx/1.0" + xmlns:gex="http://standards.iso.org/iso/19115/-3/gex/1.0" + xmlns:lan="http://standards.iso.org/iso/19115/-3/lan/1.0" + xmlns:srv="http://standards.iso.org/iso/19115/-3/srv/2.1" + xmlns:mas="http://standards.iso.org/iso/19115/-3/mas/1.0" + xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0" + xmlns:mco="http://standards.iso.org/iso/19115/-3/mco/1.0" + xmlns:mda="http://standards.iso.org/iso/19115/-3/mda/1.0" + xmlns:mds="http://standards.iso.org/iso/19115/-3/mds/2.0" + xmlns:mdt="http://standards.iso.org/iso/19115/-3/mdt/2.0" + xmlns:mex="http://standards.iso.org/iso/19115/-3/mex/1.0" + xmlns:mmi="http://standards.iso.org/iso/19115/-3/mmi/1.0" + xmlns:mpc="http://standards.iso.org/iso/19115/-3/mpc/1.0" + xmlns:mrc="http://standards.iso.org/iso/19115/-3/mrc/2.0" + xmlns:mrd="http://standards.iso.org/iso/19115/-3/mrd/1.0" + xmlns:mri="http://standards.iso.org/iso/19115/-3/mri/1.0" + xmlns:mrl="http://standards.iso.org/iso/19115/-3/mrl/2.0" + xmlns:mrs="http://standards.iso.org/iso/19115/-3/mrs/1.0" + xmlns:msr="http://standards.iso.org/iso/19115/-3/msr/2.0" + xmlns:mdq="http://standards.iso.org/iso/19157/-2/mdq/1.0" + xmlns:mac="http://standards.iso.org/iso/19115/-3/mac/2.0" + xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0" xmlns:gml="http://www.opengis.net/gml/3.2" + xmlns:xlink="http://www.w3.org/1999/xlink" + xsi:schemaLocation="http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd"> + <mdb:metadataIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>3dbe0017-a71f-4923-9b44-fdb5afef5778</gco:CharacterString> + </mcc:code> + <mcc:codeSpace> + <gco:CharacterString>urn:uuid</gco:CharacterString> + </mcc:codeSpace> + </mcc:MD_Identifier> + </mdb:metadataIdentifier> + <mdb:defaultLocale> + <lan:PT_Locale id="FR"> + <lan:language> + <lan:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="fre"/> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode" + codeListValue="utf8"/> + </lan:characterEncoding> + </lan:PT_Locale> + </mdb:defaultLocale> + <mdb:metadataScope> + <mdb:MD_MetadataScope> + <mdb:resourceScope> + <mcc:MD_ScopeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" + codeListValue="service"/> + </mdb:resourceScope> + <mdb:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Service</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Service</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mdb:name> + </mdb:MD_MetadataScope> + </mdb:metadataScope> + <mdb:contact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="pointOfContact"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Direction de l'Intégration des géodonnées (SPW - Secrétariat général - SPW Digital - + Département de la Géomatique - Direction de l'Intégration des géodonnées) + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Direction de l'Intégration des géodonnées (SPW - Secrétariat + général - SPW Digital - Département de la Géomatique - Direction de l'Intégration des géodonnées) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mdb:contact> + <mdb:dateInfo> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2023-12-11T07:25:51.082626Z</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="revision"/> + </cit:dateType> + </cit:CI_Date> + </mdb:dateInfo> + <mdb:dateInfo> + <cit:CI_Date> + <cit:date> + <gco:DateTime>2019-04-02T12:35:21</gco:DateTime> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="creation"/> + </cit:dateType> + </cit:CI_Date> + </mdb:dateInfo> + <mdb:metadataStandard> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>ISO 19119</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">ISO 19119</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:edition> + <gco:CharacterString>2005/Amd.1:2008</gco:CharacterString> + </cit:edition> + </cit:CI_Citation> + </mdb:metadataStandard> + <mdb:otherLocale> + <lan:PT_Locale id="EN"> + <lan:language> + <lan:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="eng"/> + </lan:language> + <lan:characterEncoding> + <lan:MD_CharacterSetCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode" + codeListValue=""/> + </lan:characterEncoding> + </lan:PT_Locale> + </mdb:otherLocale> + <mdb:metadataLinkage> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString> + https://metawal.wallonie.be/geonetwork/srv/api/records/3dbe0017-a71f-4923-9b44-fdb5afef5778 + </gco:CharacterString> + </cit:linkage> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="completeMetadata"/> + </cit:function> + </cit:CI_OnlineResource> + </mdb:metadataLinkage> + <mdb:referenceSystemInfo> + <mrs:MD_ReferenceSystem> + <mrs:referenceSystemIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor xlink:href="http://www.opengis.net/def/crs/EPSG/0/31370">EPSG:31370</gcx:Anchor> + </mcc:code> + <mcc:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Belge 1972 / Belgian Lambert 72 (EPSG:31370) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:description> + </mcc:MD_Identifier> + </mrs:referenceSystemIdentifier> + <mrs:referenceSystemType> + <mrs:MD_ReferenceSystemTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode" + codeListValue="projected"/> + </mrs:referenceSystemType> + </mrs:MD_ReferenceSystem> + </mdb:referenceSystemInfo> + <mdb:referenceSystemInfo> + <mrs:MD_ReferenceSystem> + <mrs:referenceSystemIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor xlink:href="http://www.opengis.net/def/crs/EPSG/0/4258">EPSG:4258</gcx:Anchor> + </mcc:code> + <mcc:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>ETRS89 (EPSG:4258)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">ETRS89 (EPSG:4258)</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:description> + </mcc:MD_Identifier> + </mrs:referenceSystemIdentifier> + <mrs:referenceSystemType> + <mrs:MD_ReferenceSystemTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode" + codeListValue="geodeticGeographic2D"/> + </mrs:referenceSystemType> + </mrs:MD_ReferenceSystem> + </mdb:referenceSystemInfo> + <mdb:referenceSystemInfo> + <mrs:MD_ReferenceSystem> + <mrs:referenceSystemIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor xlink:href="http://www.opengis.net/def/crs/EPSG/0/3035">EPSG:3035</gcx:Anchor> + </mcc:code> + <mcc:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>ETRS89 / LAEA Europe (EPSG:3035)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">ETRS89 / LAEA Europe (EPSG:3035) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:description> + </mcc:MD_Identifier> + </mrs:referenceSystemIdentifier> + <mrs:referenceSystemType> + <mrs:MD_ReferenceSystemTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode" + codeListValue="projected"/> + </mrs:referenceSystemType> + </mrs:MD_ReferenceSystem> + </mdb:referenceSystemInfo> + <mdb:referenceSystemInfo> + <mrs:MD_ReferenceSystem> + <mrs:referenceSystemIdentifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor xlink:href="http://www.opengis.net/def/crs/EPSG/0/3812">EPSG:3812</gcx:Anchor> + </mcc:code> + <mcc:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>ETRS89 / Belgian Lambert 2008 (EPSG:3812)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">ETRS89 / Belgian Lambert 2008 (EPSG:3812) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:description> + </mcc:MD_Identifier> + </mrs:referenceSystemIdentifier> + <mrs:referenceSystemType> + <mrs:MD_ReferenceSystemTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode" + codeListValue="projected"/> + </mrs:referenceSystemType> + </mrs:MD_ReferenceSystem> + </mdb:referenceSystemInfo> + <mdb:identificationInfo> + <srv:SV_ServiceIdentification> + <mri:citation> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>INSPIRE - Sites protégés en Wallonie (BE) - Service de téléchargement + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">INSPIRE - Sites protégés en Wallonie (BE) - Service de + téléchargement + </lan:LocalisedCharacterString> + </lan:textGroup> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#EN">INSPIRE - Protected site in Walloon region (BE) - Download + service + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2017-11-15</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gco:CharacterString>3dbe0017-a71f-4923-9b44-fdb5afef5778</gco:CharacterString> + </mcc:code> + <mcc:codeSpace> + <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString> + </mcc:codeSpace> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:citation> + <mri:abstract xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Ce service de téléchargement ATOM Feed donne accès aux couches de données du thème INSPIRE + "Sites protégés" au sein du territoire wallon (Belgique). + + Ce service de téléchargement simple est fourni par le Service public de Wallonie (SPW) et permet le + téléchargement direct des couches de données géographiques constitutives du thème "sites protégés" de la + Directive INSPIRE (Annexe 1.9) sur l'ensemble du territoire wallon. Il utilise la technologie de flux de + données ATOM Feed. + + Le service est conforme aux spécifications de la Directive INSPIRE en la matière. + + Ce service de téléchargement simple permet d’accéder en téléchargement aux couches de données présentes dans + le thème "Sites protégés". Via ce service, les informations suivantes sont téléchargeables : + - "INSPIRE - Sites protégés en Wallonie" : série de couches de données regroupant l'ensemble des sites + protégés en Wallonie; + - "INSPIRE - Sites protégés Natura 2000 en Wallonie" : série de couches de données présentant uniquement les + sites classés selon le mécanisme de désignation Natura 2000; + - "INSPIRE - Sites protégés par type IUCN en Wallonie" : série de couches de données présentant uniquement les + sites classés selon le mécanisme de désignation IUCN; + - "INSPIRE - Sites protégés UNESCO en Wallonie" : série de couches de données présentant uniquement les sites + classés selon le mécanisme de désignation UNESCO; + - "INSPIRE - Sites protégés Monument National en Wallonie" : série de couches de données présentant uniquement + les sites classés selon le mécanisme de désignation Monument National + + Le service propose les opérations suivantes : + - Accéder aux métadonnées du service de téléchargement; + - Décrire la série de couche de données géographiques relative au thème "Sites protégés" ainsi que les séries + dérivées selon le mécanisme de désignation; + - Accéder aux séries de couches de données géographiques relatives au thème "Sites protégés" et aux sites de + désignation par site protégé. + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Ce service de téléchargement ATOM Feed donne accès aux couches de + données du thème INSPIRE + "Sites protégés" au sein du territoire wallon (Belgique). + + Ce service de téléchargement simple est fourni par le Service public de Wallonie (SPW) et permet le + téléchargement direct des couches de données géographiques constitutives du thème "sites protégés" de la + Directive INSPIRE (Annexe 1.9) sur l'ensemble du territoire wallon. Il utilise la technologie de flux de + données ATOM Feed. + + Le service est conforme aux spécifications de la Directive INSPIRE en la matière. + + Ce service de téléchargement simple permet d’accéder en téléchargement aux couches de données présentes + dans + le thème "Sites protégés". Via ce service, les informations suivantes sont téléchargeables : + - "INSPIRE - Sites protégés en Wallonie" : série de couches de données regroupant l'ensemble des sites + protégés en Wallonie; + - "INSPIRE - Sites protégés Natura 2000 en Wallonie" : série de couches de données présentant uniquement + les + sites classés selon le mécanisme de désignation Natura 2000; + - "INSPIRE - Sites protégés par type IUCN en Wallonie" : série de couches de données présentant uniquement + les + sites classés selon le mécanisme de désignation IUCN; + - "INSPIRE - Sites protégés UNESCO en Wallonie" : série de couches de données présentant uniquement les + sites + classés selon le mécanisme de désignation UNESCO; + - "INSPIRE - Sites protégés Monument National en Wallonie" : série de couches de données présentant + uniquement + les sites classés selon le mécanisme de désignation Monument National + + Le service propose les opérations suivantes : + - Accéder aux métadonnées du service de téléchargement; + - Décrire la série de couche de données géographiques relative au thème "Sites protégés" ainsi que les + séries + dérivées selon le mécanisme de désignation; + - Accéder aux séries de couches de données géographiques relatives au thème "Sites protégés" et aux sites + de + désignation par site protégé. + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:abstract> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="pointOfContact"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées) + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Helpdesk carto du SPW (SPW - Secrétariat général - SPW + Digital - Département de la Géomatique - Direction de l'Intégration des géodonnées) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="custodian"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Direction de l'Intégration des géodonnées (SPW - Secrétariat général - SPW Digital + - Département de la Géomatique - Direction de l'Intégration des géodonnées) + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Direction de l'Intégration des géodonnées (SPW - + Secrétariat général - SPW Digital - Département de la Géomatique - Direction de l'Intégration des + géodonnées) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:pointOfContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="owner"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Service public de Wallonie (SPW) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + <cit:onlineResource> + <cit:CI_OnlineResource> + <cit:linkage xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">https://geoportail.wallonie.be + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>WWW:LINK</gco:CharacterString> + </cit:protocol> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Géoportail de la Wallonie + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Géoportail de la Wallonie + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="information"/> + </cit:function> + </cit:CI_OnlineResource> + </cit:onlineResource> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mri:pointOfContact> + <mri:extent> + <gex:EX_Extent> + <gex:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Région wallonne</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Région wallonne</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </gex:description> + <gex:geographicElement> + <gex:EX_GeographicBoundingBox> + <gex:westBoundLongitude> + <gco:Decimal>2.75</gco:Decimal> + </gex:westBoundLongitude> + <gex:eastBoundLongitude> + <gco:Decimal>6.50</gco:Decimal> + </gex:eastBoundLongitude> + <gex:southBoundLatitude> + <gco:Decimal>49.45</gco:Decimal> + </gex:southBoundLatitude> + <gex:northBoundLatitude> + <gco:Decimal>50.85</gco:Decimal> + </gex:northBoundLatitude> + </gex:EX_GeographicBoundingBox> + </gex:geographicElement> + </gex:EX_Extent> + </mri:extent> + <mri:graphicOverview> + <mcc:MD_BrowseGraphic> + <mcc:fileName> + <gco:CharacterString> + https://metawal.wallonie.be/geonetwork/srv/api/records/3dbe0017-a71f-4923-9b44-fdb5afef5778/attachments/download_Inspire_20190430.png + </gco:CharacterString> + </mcc:fileName> + <mcc:fileDescription xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>INSPIRE_PS_DS_PIC</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">INSPIRE_PS_DS_PIC</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:fileDescription> + <mcc:fileType> + <gco:CharacterString>PNG</gco:CharacterString> + </mcc:fileType> + </mcc:MD_BrowseGraphic> + </mri:graphicOverview> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/10"> + Nature et environnement + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Nature et environnement</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1010"> + Faune et flore + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Faune et flore</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon">Thèmes du + géoportail wallon + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Thèmes du géoportail wallon + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2014-06-26</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy"> + geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme/ps">Sites protégés</gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Sites protégés</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/theme">GEMET - INSPIRE themes, version 1.0 + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">GEMET - INSPIRE themes, version 1.0 + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2008-06-01</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeutheme-theme"> + geonetwork.thesaurus.external.theme.httpinspireeceuropaeutheme-theme + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>zones naturelles, paysages, écosystèmes</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">zones naturelles, paysages, écosystèmes + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>politique environnementale</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">politique environnementale</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>biologie</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">biologie</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://geonetwork-opensource.org/gemet-theme">GEMET themes</gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">GEMET themes</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2009-09-22</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme"> + geonetwork.thesaurus.external.theme.gemet-theme + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>site naturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">site naturel</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>écologie</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">écologie</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>évaluation du patrimoine naturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">évaluation du patrimoine naturel + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>politique de conservation de la nature</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">politique de conservation de la nature + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>monument historique</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">monument historique</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>parc naturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">parc naturel</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>espace naturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">espace naturel</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>législation en matière de préservation de la nature</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">législation en matière de préservation de la nature + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>conservation des ressources naturelles</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">conservation des ressources naturelles + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>site naturel protégé</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">site naturel protégé</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>archéologie</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">archéologie</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>milieu naturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">milieu naturel</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>patrimoine naturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">patrimoine naturel</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>paysage</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">paysage</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>géologie</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">géologie</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>monument</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">monument</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>conservation</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">conservation</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>espace protégé</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">espace protégé</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>patrimoine culturel</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">patrimoine culturel</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://geonetwork-opensource.org/gemet">GEMET</gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">GEMET</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2009-09-22</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet"> + geonetwork.thesaurus.external.theme.gemet + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Reporting INSPIRE</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Reporting INSPIRE</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="https://metawal.wallonie.be/thesaurus/infrasig">Mots-clés InfraSIG</gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Mots-clés InfraSIG</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2022-10-03</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG"> + geonetwork.thesaurus.external.theme.infraSIG + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>natura2000</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">natura2000</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>N2K</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">N2K</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>biodiversité</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">biodiversité</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>protected sites</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">protected sites</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>site protégé</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">site protégé</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>aire protégée</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">aire protégée</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>inspire</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">inspire</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>téléchargement</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">téléchargement</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Feed</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Feed</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>ATOM</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">ATOM</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>IUCN</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">IUCN</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>ProtectedSite</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">ProtectedSite</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor + xlink:href="http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/infoProductAccessService"> + Service d’accès aux produits + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Service d’accès aux produits</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory"> + Classification of spatial data services + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Classification of spatial data services + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2008-12-03</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory"> + geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Location of sites (Habitats Directive)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Location of sites (Habitats Directive) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>INSPIRE priority data set</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">INSPIRE priority data set</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2017-11-16</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:descriptiveKeywords> + <mri:MD_Keywords> + <mri:keyword xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/regional">Régional + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Régional</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mri:keyword> + <mri:type> + <mri:MD_KeywordTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode" + codeListValue="theme"/> + </mri:type> + <mri:thesaurusName> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://inspire.ec.europa.eu/metadata-codelist/SpatialScope">Champ géographique + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Champ géographique</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2019-05-22</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + <cit:identifier> + <mcc:MD_Identifier> + <mcc:code> + <gcx:Anchor + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope"> + geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope + </gcx:Anchor> + </mcc:code> + </mcc:MD_Identifier> + </cit:identifier> + </cit:CI_Citation> + </mri:thesaurusName> + </mri:MD_Keywords> + </mri:descriptiveKeywords> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:accessConstraints> + <mco:MD_RestrictionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode" + codeListValue="otherRestrictions"/> + </mco:accessConstraints> + <mco:otherConstraints xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor + xlink:href="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations">No + limitations to public access + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">No + limitations to public access + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mco:otherConstraints> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <mri:resourceConstraints> + <mco:MD_LegalConstraints> + <mco:useLimitation xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Conditions d'utilisation spécifiques</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Conditions d'utilisation spécifiques + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mco:useLimitation> + <mco:useConstraints> + <mco:MD_RestrictionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode" + codeListValue="otherRestrictions"/> + </mco:useConstraints> + <mco:otherConstraints xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="https://geoportail.wallonie.be/files/documents/ConditionsSPW/LicServicesSPW.pdf">Les + conditions d'utilisation du service sont régies par les conditions d’accès et d’utilisation des services + web géographiques de visualisation du Service public de Wallonie. + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Les + conditions d'utilisation du service sont régies par les conditions d’accès et d’utilisation des + services + web géographiques de visualisation du Service public de Wallonie. + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mco:otherConstraints> + </mco:MD_LegalConstraints> + </mri:resourceConstraints> + <srv:serviceType> + <gco:ScopedName codeSpace="http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType">download + </gco:ScopedName> + </srv:serviceType> + <srv:couplingType> + <srv:SV_CouplingType + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#SV_CouplingType" + codeListValue="tight"/> + </srv:couplingType> + <srv:containsOperations> + <srv:SV_OperationMetadata> + <srv:operationName> + <gco:CharacterString>GetOpenSearchDescription</gco:CharacterString> + </srv:operationName> + <srv:distributedComputingPlatform> + <srv:DCPList codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DCPList" + codeListValue="WebServices"/> + </srv:distributedComputingPlatform> + <srv:connectPoint> + <cit:CI_OnlineResource> + <cit:linkage xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>https://geoservices.wallonie.be/inspire/atom/PS_Opensearch.xml + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR"> + https://geoservices.wallonie.be/inspire/atom/PS_Opensearch.xml + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>INSPIRE Atom</gco:CharacterString> + </cit:protocol> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Point de connection GetOpenSearchDescription</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Point de connection GetOpenSearchDescription + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>download, operation: GetOpenSearchDescription</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">download, operation: GetOpenSearchDescription + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="browsing"/> + </cit:function> + </cit:CI_OnlineResource> + </srv:connectPoint> + </srv:SV_OperationMetadata> + </srv:containsOperations> + <srv:containsOperations> + <srv:SV_OperationMetadata> + <srv:operationName> + <gco:CharacterString>GetServiceATOMFeed</gco:CharacterString> + </srv:operationName> + <srv:distributedComputingPlatform> + <srv:DCPList codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DCPList" + codeListValue="WebServices"/> + </srv:distributedComputingPlatform> + <srv:connectPoint> + <cit:CI_OnlineResource> + <cit:linkage xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>https://geoservices.wallonie.be/inspire/atom/PS_Service.xml</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR"> + https://geoservices.wallonie.be/inspire/atom/PS_Service.xml + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>INSPIRE Atom</gco:CharacterString> + </cit:protocol> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Point de connection GetServiceATOMFeed</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Point de connection GetServiceATOMFeed + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>download, operation: GetServiceATOMFeed</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">download, operation: GetServiceATOMFeed + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="browsing"/> + </cit:function> + </cit:CI_OnlineResource> + </srv:connectPoint> + </srv:SV_OperationMetadata> + </srv:containsOperations> + <srv:containsOperations> + <srv:SV_OperationMetadata> + <srv:operationName> + <gco:CharacterString>GetCapabilities</gco:CharacterString> + </srv:operationName> + <srv:distributedComputingPlatform> + <srv:DCPList codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DCPList" + codeListValue="WebServices"/> + </srv:distributedComputingPlatform> + <srv:connectPoint> + <cit:CI_OnlineResource> + <cit:linkage xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>https://geoservices.wallonie.be/wms/PS_Service</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">https://geoservices.wallonie.be/wms/PS_Service + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>GetCapabilities</gco:CharacterString> + </cit:protocol> + </cit:CI_OnlineResource> + </srv:connectPoint> + </srv:SV_OperationMetadata> + </srv:containsOperations> + <srv:operatesOn uuidref="c2526c30-ee7e-4c0b-b866-599e9aba3665" + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/c2526c30-ee7e-4c0b-b866-599e9aba3665"/> + <srv:operatesOn uuidref="ffc45d44-1cc2-4924-bb8c-214096eb9058" + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <srv:operatesOn uuidref="bee148c9-f6f2-458e-8359-c33816927a8a" + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/bee148c9-f6f2-458e-8359-c33816927a8a"/> + <srv:operatesOn uuidref="ce6b6455-3273-41e3-bfab-ae71bcd677cc" + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/ce6b6455-3273-41e3-bfab-ae71bcd677cc"/> + <srv:operatesOn uuidref="e2964ae5-93e3-4da0-ac16-b6cdb5c364e9" + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/e2964ae5-93e3-4da0-ac16-b6cdb5c364e9"/> + <srv:operatesOn uuidref="541e92de-dbc9-46df-880c-1076798bdbb3" + xlink:href="https://metawal.wallonie.be/geonetwork/insipre/api/records/541e92de-dbc9-46df-880c-1076798bdbb3"/> + <srv:operatesOn uuidref="09b168b9-6f7c-4e6a-adb4-e3352eeda75b" + xlink:href="https://metawal.wallonie.be/geonetwork/srv/api/records/09b168b9-6f7c-4e6a-adb4-e3352eeda75b"/> + </srv:SV_ServiceIdentification> + </mdb:identificationInfo> + <mdb:distributionInfo> + <mrd:MD_Distribution> + <mrd:distributor> + <mrd:MD_Distributor> + <mrd:distributorContact> + <cit:CI_Responsibility> + <cit:role> + <cit:CI_RoleCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode" + codeListValue="distributor"/> + </cit:role> + <cit:party> + <cit:CI_Organisation> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Service public de Wallonie (SPW) + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:contactInfo> + <cit:CI_Contact> + <cit:address> + <cit:CI_Address> + <cit:electronicMailAddress> + <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString> + </cit:electronicMailAddress> + </cit:CI_Address> + </cit:address> + </cit:CI_Contact> + </cit:contactInfo> + </cit:CI_Organisation> + </cit:party> + </cit:CI_Responsibility> + </mrd:distributorContact> + </mrd:MD_Distributor> + </mrd:distributor> + <mrd:transferOptions> + <mrd:MD_DigitalTransferOptions> + <mrd:onLine> + <cit:CI_OnlineResource> + <cit:linkage> + <gco:CharacterString>https://geoservices.wallonie.be/inspire/atom/PS_Service.xml</gco:CharacterString> + </cit:linkage> + <cit:protocol> + <gco:CharacterString>atom:feed</gco:CharacterString> + </cit:protocol> + <cit:name xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>INSPIRE Sites Protégés - Service de téléchargement</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">INSPIRE Sites Protégés - Service de téléchargement + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:name> + <cit:description xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Adresse de connexion au service de téléchargement ATOM Feed des couches de données + du thème "Sites protégés". + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Adresse de connexion au service de téléchargement ATOM + Feed des couches de données + du thème "Sites protégés". + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:description> + <cit:function> + <cit:CI_OnLineFunctionCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode" + codeListValue="download"/> + </cit:function> + </cit:CI_OnlineResource> + </mrd:onLine> + </mrd:MD_DigitalTransferOptions> + </mrd:transferOptions> + </mrd:MD_Distribution> + </mdb:distributionInfo> + <mdb:dataQualityInfo> + <mdq:DQ_DataQuality> + <mdq:scope> + <mcc:MD_Scope> + <mcc:level> + <mcc:MD_ScopeCode codeListValue="service" + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode"/> + </mcc:level> + <mcc:levelDescription> + <mcc:MD_ScopeDescription> + <mcc:other xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Service</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Service</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:other> + </mcc:MD_ScopeDescription> + </mcc:levelDescription> + </mcc:MD_Scope> + </mdq:scope> + <mdq:report> + <mdq:DQ_DomainConsistency> + <mdq:result> + <mdq:DQ_ConformanceResult> + <mdq:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-976-2009"> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2009/976">Règlement (CE) n o 976/2009 de la + Commission du 19 octobre 2009 portant modalités d’application de la directive 2007/2/CE du + Parlement européen et du Conseil en ce qui concerne les services en réseau + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Règlement (CE) n o 976/2009 de la Commission du 19 + octobre 2009 portant modalités d’application de la directive 2007/2/CE du Parlement européen + et du Conseil en ce qui concerne les services en réseau + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2009-10-19</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mdq:specification> + <mdq:explanation xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Voir la spécification référencée</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Voir la spécification référencée + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mdq:explanation> + <mdq:pass> + <gco:Boolean>true</gco:Boolean> + </mdq:pass> + </mdq:DQ_ConformanceResult> + </mdq:result> + </mdq:DQ_DomainConsistency> + </mdq:report> + <mdq:report> + <mdq:DQ_DomainConsistency> + <mdq:result> + <mdq:DQ_ConformanceResult> + <mdq:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010"> + <cit:CI_Citation> + <cit:title xsi:type="lan:PT_FreeText_PropertyType"> + <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089">RÈGLEMENT (UE) N o 1089/2010 DE LA + COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du + Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services + de données géographiques + </gcx:Anchor> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 + novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen + et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données + géographiques + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </cit:title> + <cit:date> + <cit:CI_Date> + <cit:date> + <gco:Date>2010-12-08</gco:Date> + </cit:date> + <cit:dateType> + <cit:CI_DateTypeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </cit:dateType> + </cit:CI_Date> + </cit:date> + </cit:CI_Citation> + </mdq:specification> + <mdq:explanation xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Voir la spécification référencée</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Voir la spécification référencée + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mdq:explanation> + <mdq:pass> + <gco:Boolean>true</gco:Boolean> + </mdq:pass> + </mdq:DQ_ConformanceResult> + </mdq:result> + </mdq:DQ_DomainConsistency> + </mdq:report> + </mdq:DQ_DataQuality> + </mdb:dataQualityInfo> + <mdb:resourceLineage> + <mrl:LI_Lineage> + <mrl:statement xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Ce service de téléchargement simple INSPIRE basé sur ATOM est au standard Atom RFC 4287, à + la spécification GeoRSS Simple et à la spécification OpenSearch (pour les éléments concernés). + </gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Ce service de téléchargement simple INSPIRE basé sur ATOM est au + standard Atom RFC 4287, à + la spécification GeoRSS Simple et à la spécification OpenSearch (pour les éléments concernés). + </lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mrl:statement> + <mrl:scope> + <mcc:MD_Scope> + <mcc:level> + <mcc:MD_ScopeCode + codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode" + codeListValue="service"/> + </mcc:level> + <mcc:levelDescription> + <mcc:MD_ScopeDescription> + <mcc:other xsi:type="lan:PT_FreeText_PropertyType"> + <gco:CharacterString>Service</gco:CharacterString> + <lan:PT_FreeText> + <lan:textGroup> + <lan:LocalisedCharacterString locale="#FR">Service</lan:LocalisedCharacterString> + </lan:textGroup> + </lan:PT_FreeText> + </mcc:other> + </mcc:MD_ScopeDescription> + </mcc:levelDescription> + </mcc:MD_Scope> + </mrl:scope> + </mrl:LI_Lineage> + </mdb:resourceLineage> +</mdb:MD_Metadata> + diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-dataset-core-multipleAccrualPeriodicityAllowed.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-dataset-core-multipleAccrualPeriodicityAllowed.rdf new file mode 100644 index 00000000000..680cea59e8a --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-dataset-core-multipleAccrualPeriodicityAllowed.rdf @@ -0,0 +1,603 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:dcatap="http://data.europa.eu/r5r/" + xmlns:eli="http://data.europa.eu/eli/ontology"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Dataset"> + <skos:prefLabel>Dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T12:26:19.337626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:33:24</dct:issued> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:source> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <dct:title xml:lang="fre">ISO 19115</dct:title> + <owl:versionInfo xml:lang="fre">2003/Cor 1:2006</owl:versionInfo> + </dct:Standard> + </dct:conformsTo> + </rdf:Description> + </dct:source> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/r5r/"/> + </dct:conformsTo> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <dct:title xml:lang="fre">Complete metadata</dct:title> + <dct:description xml:lang="fre">All information about the resource</dct:description> + </foaf:Document> + </dcat:landingPage> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-03-31</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-02-21</dct:issued> + <dcat:version>1.0</dcat:version> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/7fe2f305-1302-4297-b67e-792f55acd834</dct:identifier> + <adms:identifier> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/adms#Identifier"/> + <skos:notation>DGATLPE__PDS</skos:notation> + <adms:schemaAgency>BE.SPW.INFRASIG.CARTON</adms:schemaAgency> + </rdf:Description> + </adms:identifier> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <adms:status> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#onGoing"> + <skos:prefLabel xml:lang="fre">Mis à jour continue</skos:prefLabel> + </skos:Concept> + </adms:status> + <dct:creator> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:creator> + <dct:publisher> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:publisher> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Thierry Berthet</foaf:name> + <org:memberOf> + <foaf:Organization> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description rdf:about="https://orcid.org/jb98765"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Jean Berthet</foaf:name> + <org:memberOf> + <foaf:Organization rdf:about="https://orcid.org/jb98765"> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + <foaf:mbox rdf:resource="mailto:jean.b@spw.org"/> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be</foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + <skos:prefLabel xml:lang="fre">Agriculture</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + <skos:prefLabel xml:lang="fre">Société et activités</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + <skos:prefLabel xml:lang="fre">Aménagement du territoire</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + <skos:prefLabel xml:lang="fre">Plans et règlements</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">espace</dcat:keyword> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes</dcat:keyword> + <dcat:keyword xml:lang="fre">législation</dcat:keyword> + <dcat:keyword xml:lang="fre">géographie</dcat:keyword> + <dcat:keyword xml:lang="fre">agriculture</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du paysage</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau ferroviaire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification écologique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'aménagement</dcat:keyword> + <dcat:keyword xml:lang="fre">extraction</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat rural</dcat:keyword> + <dcat:keyword xml:lang="fre">gestion et planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">secteur d'activité</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de gestion</dcat:keyword> + <dcat:keyword xml:lang="fre">planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">planification économique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan</dcat:keyword> + <dcat:keyword xml:lang="fre">développement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure routière</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'occupation des sols</dcat:keyword> + <dcat:keyword xml:lang="fre">activité économique</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau routier</dcat:keyword> + <dcat:keyword xml:lang="fre">planification urbaine</dcat:keyword> + <dcat:keyword xml:lang="fre">loisirs</dcat:keyword> + <dcat:keyword xml:lang="fre">canalisation</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat urbain</dcat:keyword> + <dcat:keyword xml:lang="fre">mesure d'aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification régionale</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat</dcat:keyword> + <dcat:keyword xml:lang="fre">PanierTelechargementGeoportail</dcat:keyword> + <dcat:keyword xml:lang="fre">Open Data</dcat:keyword> + <dcat:keyword xml:lang="fre">WalOnMap</dcat:keyword> + <dcat:keyword xml:lang="fre">Extraction_DIG</dcat:keyword> + <dcat:keyword xml:lang="fre">BDInfraSIGNO</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de secteur</dcat:keyword> + <dcat:keyword xml:lang="fre">point remarquable</dcat:keyword> + <dcat:keyword xml:lang="fre">PDS</dcat:keyword> + <dcat:keyword xml:lang="fre">CoDT</dcat:keyword> + <dcat:keyword xml:lang="fre">Point de vue</dcat:keyword> + <dcat:keyword xml:lang="fre">centre d'enfouissement</dcat:keyword> + <dcat:keyword xml:lang="fre">servitude</dcat:keyword> + <dcat:keyword xml:lang="fre">Code du Développement Territorial</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/el"> + <skos:prefLabel xml:lang="fre">Altitude</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mf"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + météorologiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/of"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + océanographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ac"> + <skos:prefLabel xml:lang="fre">Conditions atmosphériques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/gn"> + <skos:prefLabel xml:lang="fre">Dénominations géographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ge"> + <skos:prefLabel xml:lang="fre">Géologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hy"> + <skos:prefLabel xml:lang="fre">Hydrographie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/af"> + <skos:prefLabel xml:lang="fre">Installations agricoles et aquacoles</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sr"> + <skos:prefLabel xml:lang="fre">Régions maritimes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sd"> + <skos:prefLabel xml:lang="fre">Répartition des espèces</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mr"> + <skos:prefLabel xml:lang="fre">Ressources minérales</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hh"> + <skos:prefLabel xml:lang="fre">Santé et sécurité des personnes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">Mobilité</dcat:keyword> + <dcat:keyword xml:lang="fre">Observation de la terre et environnement</dcat:keyword> + <dcatap:applicableLegislation rdf:resource="http://data.europa.eu/eli/reg/2014/1143/oj"/> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/BSL_1_0"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/CATOSL_1_1"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'accès et d'utilisation spécifiques</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:isPartOf rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b"/> + <dct:references rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <dct:hasPart rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + <pav:previousVersion rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + <dct:relation rdf:resource="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all"/> + <dct:isPartOf rdf:resource="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/ENG"/> + </dct:language> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="https://inspire.ec.europa.eu/id/document/tg/tn"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <rdfs:label xml:lang="fre">INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2</rdfs:label> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2014-04-17</dct:issued> + </dct:Standard> + </dct:conformsTo> + <dct:provenance> + <dct:ProvenanceStatement> + <dct:description xml:lang="fre">La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE).</dct:description> + </dct:ProvenanceStatement> + </dct:provenance> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/AGRI"> + <skos:prefLabel xml:lang="fr">Agriculture, pêche, sylviculture et alimentation</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ECON"> + <skos:prefLabel xml:lang="fr">Économie et finances</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENER"> + <skos:prefLabel xml:lang="fr">Énergie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENVI"> + <skos:prefLabel xml:lang="fr">Environnement</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/HEAL"> + <skos:prefLabel xml:lang="fr">Santé</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/REGI"> + <skos:prefLabel xml:lang="fr">Régions et villes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/SOCI"> + <skos:prefLabel xml:lang="fr">Population et société</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/TECH"> + <skos:prefLabel xml:lang="fr">Science et technologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.01</dcat:spatialResolutionInMeters> + <dcat:temporalResolution rdf:datatype="http://www.w3.org/2001/XMLSchema#duration">P0Y2M0DT0H0M0S</dcat:temporalResolution> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <dct:spatial> + <dct:Location rdf:about="https://en.wikipedia.org/wiki/Wallonia"/> + </dct:spatial> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <skos:prefLabel xml:lang="fre">Région wallonne</skos:prefLabel> + </rdf:Description> + </dct:spatial> + <dct:temporal> + <dct:PeriodOfTime> + <dcat:startDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-06</dcat:startDate> + <dcat:endDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-08</dcat:endDate> + </dct:PeriodOfTime> + </dct:temporal> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://publications.europa.eu/resource/authority/frequency/MONTHLY"/> + </dct:accrualPeriodicity> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#asNeeded"/> + </dct:accrualPeriodicity> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="https://w3id.org/mobilitydcat-ap/update-frequency/5min"/> + </dct:accrualPeriodicity> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="https://w3id.org/mobilitydcat-ap/update-frequency/15min"/> + </dct:accrualPeriodicity> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png"> + <dct:description xml:lang="fre">pds_codt_pic</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T00:00:00</dct:issued> + <dcat:accessURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:downloadURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:byteSize rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">10485760</dcat:byteSize> + <dct:format> + <dct:MediaTypeOrExtent> + <rdfs:label>ESRI Shapefile (.shp)</rdfs:label> + </dct:MediaTypeOrExtent> + </dct:format> + <dcat:compressFormat> + <dct:MediaType rdf:about="https://publications.europa.eu/resource/authority/file-type/ZIP"/> + </dcat:compressFormat> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS"> + <dct:title xml:lang="fre">Application de consultation des données de la DGO4 - Plan de secteur</dct:title> + <dct:description xml:lang="fre">Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"> + <dct:title xml:lang="fre">Application WalOnMap - Toute la Wallonie à la carte</dct:title> + <dct:description xml:lang="fre">Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie.</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dct:description xml:lang="fre">Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dct:description xml:lang="fre">Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengeospatial.org/standards/wms"/> + </dct:conformsTo> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps"> + <dct:title xml:lang="fre">Base de données du Plan de secteur</dct:title> + <dct:description xml:lang="fre">Site permettant la recherche de Plans de secteur et des modifications dans la base + de données</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese"> + <dct:title xml:lang="fre">Inventaire des données géographiques de la DGO4</dct:title> + <dct:description xml:lang="fre">Inventaire des données géographiques produites ou exploitées à la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar"> + <dct:title xml:lang="fre">La Direction de l'Aménagement Régional</dct:title> + <dct:description xml:lang="fre">Site de la Direction de l'Aménagement Régional (DAR)</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip"> + <dct:title xml:lang="fre">Plan de Secteur au format SHP</dct:title> + <dct:description xml:lang="fre">Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72</dct:description> + </foaf:Document> + </foaf:page> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-dataset-core.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-dataset-core.rdf new file mode 100644 index 00000000000..f6d3f12c631 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-dataset-core.rdf @@ -0,0 +1,594 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:dcatap="http://data.europa.eu/r5r/" + xmlns:eli="http://data.europa.eu/eli/ontology"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Dataset"> + <skos:prefLabel>Dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T12:26:19.337626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:33:24</dct:issued> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:source> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <dct:title xml:lang="fre">ISO 19115</dct:title> + <owl:versionInfo xml:lang="fre">2003/Cor 1:2006</owl:versionInfo> + </dct:Standard> + </dct:conformsTo> + </rdf:Description> + </dct:source> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/r5r/"/> + </dct:conformsTo> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <dct:title xml:lang="fre">Complete metadata</dct:title> + <dct:description xml:lang="fre">All information about the resource</dct:description> + </foaf:Document> + </dcat:landingPage> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-03-31</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-02-21</dct:issued> + <dcat:version>1.0</dcat:version> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/7fe2f305-1302-4297-b67e-792f55acd834</dct:identifier> + <adms:identifier> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/adms#Identifier"/> + <skos:notation>DGATLPE__PDS</skos:notation> + <adms:schemaAgency>BE.SPW.INFRASIG.CARTON</adms:schemaAgency> + </rdf:Description> + </adms:identifier> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <adms:status> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#onGoing"> + <skos:prefLabel xml:lang="fre">Mis à jour continue</skos:prefLabel> + </skos:Concept> + </adms:status> + <dct:creator> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:creator> + <dct:publisher> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:publisher> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Thierry Berthet</foaf:name> + <org:memberOf> + <foaf:Organization> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description rdf:about="https://orcid.org/jb98765"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Jean Berthet</foaf:name> + <org:memberOf> + <foaf:Organization rdf:about="https://orcid.org/jb98765"> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + <foaf:mbox rdf:resource="mailto:jean.b@spw.org"/> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be</foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + <skos:prefLabel xml:lang="fre">Agriculture</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + <skos:prefLabel xml:lang="fre">Société et activités</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + <skos:prefLabel xml:lang="fre">Aménagement du territoire</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + <skos:prefLabel xml:lang="fre">Plans et règlements</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">espace</dcat:keyword> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes</dcat:keyword> + <dcat:keyword xml:lang="fre">législation</dcat:keyword> + <dcat:keyword xml:lang="fre">géographie</dcat:keyword> + <dcat:keyword xml:lang="fre">agriculture</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du paysage</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau ferroviaire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification écologique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'aménagement</dcat:keyword> + <dcat:keyword xml:lang="fre">extraction</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat rural</dcat:keyword> + <dcat:keyword xml:lang="fre">gestion et planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">secteur d'activité</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de gestion</dcat:keyword> + <dcat:keyword xml:lang="fre">planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">planification économique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan</dcat:keyword> + <dcat:keyword xml:lang="fre">développement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure routière</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'occupation des sols</dcat:keyword> + <dcat:keyword xml:lang="fre">activité économique</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau routier</dcat:keyword> + <dcat:keyword xml:lang="fre">planification urbaine</dcat:keyword> + <dcat:keyword xml:lang="fre">loisirs</dcat:keyword> + <dcat:keyword xml:lang="fre">canalisation</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat urbain</dcat:keyword> + <dcat:keyword xml:lang="fre">mesure d'aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification régionale</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat</dcat:keyword> + <dcat:keyword xml:lang="fre">PanierTelechargementGeoportail</dcat:keyword> + <dcat:keyword xml:lang="fre">Open Data</dcat:keyword> + <dcat:keyword xml:lang="fre">WalOnMap</dcat:keyword> + <dcat:keyword xml:lang="fre">Extraction_DIG</dcat:keyword> + <dcat:keyword xml:lang="fre">BDInfraSIGNO</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de secteur</dcat:keyword> + <dcat:keyword xml:lang="fre">point remarquable</dcat:keyword> + <dcat:keyword xml:lang="fre">PDS</dcat:keyword> + <dcat:keyword xml:lang="fre">CoDT</dcat:keyword> + <dcat:keyword xml:lang="fre">Point de vue</dcat:keyword> + <dcat:keyword xml:lang="fre">centre d'enfouissement</dcat:keyword> + <dcat:keyword xml:lang="fre">servitude</dcat:keyword> + <dcat:keyword xml:lang="fre">Code du Développement Territorial</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/el"> + <skos:prefLabel xml:lang="fre">Altitude</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mf"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + météorologiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/of"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + océanographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ac"> + <skos:prefLabel xml:lang="fre">Conditions atmosphériques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/gn"> + <skos:prefLabel xml:lang="fre">Dénominations géographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ge"> + <skos:prefLabel xml:lang="fre">Géologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hy"> + <skos:prefLabel xml:lang="fre">Hydrographie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/af"> + <skos:prefLabel xml:lang="fre">Installations agricoles et aquacoles</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sr"> + <skos:prefLabel xml:lang="fre">Régions maritimes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sd"> + <skos:prefLabel xml:lang="fre">Répartition des espèces</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mr"> + <skos:prefLabel xml:lang="fre">Ressources minérales</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hh"> + <skos:prefLabel xml:lang="fre">Santé et sécurité des personnes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">Mobilité</dcat:keyword> + <dcat:keyword xml:lang="fre">Observation de la terre et environnement</dcat:keyword> + <dcatap:applicableLegislation rdf:resource="http://data.europa.eu/eli/reg/2014/1143/oj"/> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/BSL_1_0"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/CATOSL_1_1"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'accès et d'utilisation spécifiques</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:isPartOf rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b"/> + <dct:references rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <dct:hasPart rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + <pav:previousVersion rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + <dct:relation rdf:resource="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all"/> + <dct:isPartOf rdf:resource="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/ENG"/> + </dct:language> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="https://inspire.ec.europa.eu/id/document/tg/tn"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <rdfs:label xml:lang="fre">INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2</rdfs:label> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2014-04-17</dct:issued> + </dct:Standard> + </dct:conformsTo> + <dct:provenance> + <dct:ProvenanceStatement> + <dct:description xml:lang="fre">La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE).</dct:description> + </dct:ProvenanceStatement> + </dct:provenance> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/AGRI"> + <skos:prefLabel xml:lang="fr">Agriculture, pêche, sylviculture et alimentation</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ECON"> + <skos:prefLabel xml:lang="fr">Économie et finances</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENER"> + <skos:prefLabel xml:lang="fr">Énergie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENVI"> + <skos:prefLabel xml:lang="fr">Environnement</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/HEAL"> + <skos:prefLabel xml:lang="fr">Santé</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/REGI"> + <skos:prefLabel xml:lang="fr">Régions et villes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/SOCI"> + <skos:prefLabel xml:lang="fr">Population et société</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/TECH"> + <skos:prefLabel xml:lang="fr">Science et technologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.01</dcat:spatialResolutionInMeters> + <dcat:temporalResolution rdf:datatype="http://www.w3.org/2001/XMLSchema#duration">P0Y2M0DT0H0M0S</dcat:temporalResolution> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <dct:spatial> + <dct:Location rdf:about="https://en.wikipedia.org/wiki/Wallonia"/> + </dct:spatial> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <skos:prefLabel xml:lang="fre">Région wallonne</skos:prefLabel> + </rdf:Description> + </dct:spatial> + <dct:temporal> + <dct:PeriodOfTime> + <dcat:startDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-06</dcat:startDate> + <dcat:endDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-08</dcat:endDate> + </dct:PeriodOfTime> + </dct:temporal> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://publications.europa.eu/resource/authority/frequency/MONTHLY"/> + </dct:accrualPeriodicity> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png"> + <dct:description xml:lang="fre">pds_codt_pic</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T00:00:00</dct:issued> + <dcat:accessURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:downloadURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:byteSize rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">10485760</dcat:byteSize> + <dct:format> + <dct:MediaTypeOrExtent> + <rdfs:label>ESRI Shapefile (.shp)</rdfs:label> + </dct:MediaTypeOrExtent> + </dct:format> + <dcat:compressFormat> + <dct:MediaType rdf:about="https://publications.europa.eu/resource/authority/file-type/ZIP"/> + </dcat:compressFormat> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS"> + <dct:title xml:lang="fre">Application de consultation des données de la DGO4 - Plan de secteur</dct:title> + <dct:description xml:lang="fre">Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"> + <dct:title xml:lang="fre">Application WalOnMap - Toute la Wallonie à la carte</dct:title> + <dct:description xml:lang="fre">Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie.</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dct:description xml:lang="fre">Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dct:description xml:lang="fre">Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengeospatial.org/standards/wms"/> + </dct:conformsTo> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps"> + <dct:title xml:lang="fre">Base de données du Plan de secteur</dct:title> + <dct:description xml:lang="fre">Site permettant la recherche de Plans de secteur et des modifications dans la base + de données</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese"> + <dct:title xml:lang="fre">Inventaire des données géographiques de la DGO4</dct:title> + <dct:description xml:lang="fre">Inventaire des données géographiques produites ou exploitées à la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar"> + <dct:title xml:lang="fre">La Direction de l'Aménagement Régional</dct:title> + <dct:description xml:lang="fre">Site de la Direction de l'Aménagement Régional (DAR)</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip"> + <dct:title xml:lang="fre">Plan de Secteur au format SHP</dct:title> + <dct:description xml:lang="fre">Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72</dct:description> + </foaf:Document> + </foaf:page> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-hvd-dataset-core.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-hvd-dataset-core.rdf new file mode 100644 index 00000000000..122e264643b --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-hvd-dataset-core.rdf @@ -0,0 +1,604 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:dcatap="http://data.europa.eu/r5r/" + xmlns:eli="http://data.europa.eu/eli/ontology"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Dataset"> + <skos:prefLabel>Dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T12:26:19.337626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:33:24</dct:issued> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:source> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <dct:title xml:lang="fre">ISO 19115</dct:title> + <owl:versionInfo xml:lang="fre">2003/Cor 1:2006</owl:versionInfo> + </dct:Standard> + </dct:conformsTo> + </rdf:Description> + </dct:source> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/r5r/"/> + </dct:conformsTo> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <dct:title xml:lang="fre">Complete metadata</dct:title> + <dct:description xml:lang="fre">All information about the resource</dct:description> + </foaf:Document> + </dcat:landingPage> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-03-31</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-02-21</dct:issued> + <dcat:version>1.0</dcat:version> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/7fe2f305-1302-4297-b67e-792f55acd834</dct:identifier> + <adms:identifier> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/adms#Identifier"/> + <skos:notation>DGATLPE__PDS</skos:notation> + <adms:schemaAgency>BE.SPW.INFRASIG.CARTON</adms:schemaAgency> + </rdf:Description> + </adms:identifier> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <adms:status> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#onGoing"> + <skos:prefLabel xml:lang="fre">Mis à jour continue</skos:prefLabel> + </skos:Concept> + </adms:status> + <dct:creator> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:creator> + <dct:publisher> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:publisher> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Thierry Berthet</foaf:name> + <org:memberOf> + <foaf:Organization> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description rdf:about="https://orcid.org/jb98765"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Jean Berthet</foaf:name> + <org:memberOf> + <foaf:Organization rdf:about="https://orcid.org/jb98765"> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + <foaf:mbox rdf:resource="mailto:jean.b@spw.org"/> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be</foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + <skos:prefLabel xml:lang="fre">Agriculture</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + <skos:prefLabel xml:lang="fre">Société et activités</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + <skos:prefLabel xml:lang="fre">Aménagement du territoire</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + <skos:prefLabel xml:lang="fre">Plans et règlements</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">espace</dcat:keyword> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes</dcat:keyword> + <dcat:keyword xml:lang="fre">législation</dcat:keyword> + <dcat:keyword xml:lang="fre">géographie</dcat:keyword> + <dcat:keyword xml:lang="fre">agriculture</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du paysage</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau ferroviaire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification écologique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'aménagement</dcat:keyword> + <dcat:keyword xml:lang="fre">extraction</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat rural</dcat:keyword> + <dcat:keyword xml:lang="fre">gestion et planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">secteur d'activité</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de gestion</dcat:keyword> + <dcat:keyword xml:lang="fre">planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">planification économique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan</dcat:keyword> + <dcat:keyword xml:lang="fre">développement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure routière</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'occupation des sols</dcat:keyword> + <dcat:keyword xml:lang="fre">activité économique</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau routier</dcat:keyword> + <dcat:keyword xml:lang="fre">planification urbaine</dcat:keyword> + <dcat:keyword xml:lang="fre">loisirs</dcat:keyword> + <dcat:keyword xml:lang="fre">canalisation</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat urbain</dcat:keyword> + <dcat:keyword xml:lang="fre">mesure d'aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification régionale</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat</dcat:keyword> + <dcat:keyword xml:lang="fre">PanierTelechargementGeoportail</dcat:keyword> + <dcat:keyword xml:lang="fre">Open Data</dcat:keyword> + <dcat:keyword xml:lang="fre">WalOnMap</dcat:keyword> + <dcat:keyword xml:lang="fre">Extraction_DIG</dcat:keyword> + <dcat:keyword xml:lang="fre">BDInfraSIGNO</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de secteur</dcat:keyword> + <dcat:keyword xml:lang="fre">point remarquable</dcat:keyword> + <dcat:keyword xml:lang="fre">PDS</dcat:keyword> + <dcat:keyword xml:lang="fre">CoDT</dcat:keyword> + <dcat:keyword xml:lang="fre">Point de vue</dcat:keyword> + <dcat:keyword xml:lang="fre">centre d'enfouissement</dcat:keyword> + <dcat:keyword xml:lang="fre">servitude</dcat:keyword> + <dcat:keyword xml:lang="fre">Code du Développement Territorial</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/el"> + <skos:prefLabel xml:lang="fre">Altitude</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mf"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + météorologiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/of"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + océanographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ac"> + <skos:prefLabel xml:lang="fre">Conditions atmosphériques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/gn"> + <skos:prefLabel xml:lang="fre">Dénominations géographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ge"> + <skos:prefLabel xml:lang="fre">Géologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hy"> + <skos:prefLabel xml:lang="fre">Hydrographie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/af"> + <skos:prefLabel xml:lang="fre">Installations agricoles et aquacoles</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sr"> + <skos:prefLabel xml:lang="fre">Régions maritimes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sd"> + <skos:prefLabel xml:lang="fre">Répartition des espèces</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mr"> + <skos:prefLabel xml:lang="fre">Ressources minérales</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hh"> + <skos:prefLabel xml:lang="fre">Santé et sécurité des personnes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcatap:hvdCategory> + <skos:Concept rdf:about="http://data.europa.eu/bna/c_b79e35eb"> + <prefLabel xmlns="http://www.w3.org/2004/02/skos/core#" xml:lang="fr">Mobilité</prefLabel> + </skos:Concept> + </dcatap:hvdCategory> + <dcatap:hvdCategory> + <skos:Concept rdf:about="http://data.europa.eu/bna/c_dd313021"> + <prefLabel xmlns="http://www.w3.org/2004/02/skos/core#" xml:lang="fr">Observation de la terre et environnement + </prefLabel> + </skos:Concept> + </dcatap:hvdCategory> + <dcatap:applicableLegislation rdf:resource="http://data.europa.eu/eli/reg/2014/1143/oj"/> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/BSL_1_0"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/CATOSL_1_1"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'accès et d'utilisation spécifiques</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:isPartOf rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b"/> + <dct:references rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <dct:hasPart rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + <pav:previousVersion rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + <dct:relation rdf:resource="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all"/> + <dct:isPartOf rdf:resource="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/ENG"/> + </dct:language> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="https://inspire.ec.europa.eu/id/document/tg/tn"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <rdfs:label xml:lang="fre">INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2</rdfs:label> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2014-04-17</dct:issued> + </dct:Standard> + </dct:conformsTo> + <dct:provenance> + <dct:ProvenanceStatement> + <dct:description xml:lang="fre">La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE).</dct:description> + </dct:ProvenanceStatement> + </dct:provenance> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/AGRI"> + <skos:prefLabel xml:lang="fr">Agriculture, pêche, sylviculture et alimentation</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ECON"> + <skos:prefLabel xml:lang="fr">Économie et finances</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENER"> + <skos:prefLabel xml:lang="fr">Énergie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENVI"> + <skos:prefLabel xml:lang="fr">Environnement</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/HEAL"> + <skos:prefLabel xml:lang="fr">Santé</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/REGI"> + <skos:prefLabel xml:lang="fr">Régions et villes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/SOCI"> + <skos:prefLabel xml:lang="fr">Population et société</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/TECH"> + <skos:prefLabel xml:lang="fr">Science et technologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcatap:applicableLegislation rdf:resource="http://data.europa.eu/eli/reg_impl/2023/138/oj"/> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.01</dcat:spatialResolutionInMeters> + <dcat:temporalResolution rdf:datatype="http://www.w3.org/2001/XMLSchema#duration">P0Y2M0DT0H0M0S</dcat:temporalResolution> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <dct:spatial> + <dct:Location rdf:about="https://en.wikipedia.org/wiki/Wallonia"/> + </dct:spatial> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <skos:prefLabel xml:lang="fre">Région wallonne</skos:prefLabel> + </rdf:Description> + </dct:spatial> + <dct:temporal> + <dct:PeriodOfTime> + <dcat:startDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-06</dcat:startDate> + <dcat:endDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-08</dcat:endDate> + </dct:PeriodOfTime> + </dct:temporal> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://publications.europa.eu/resource/authority/frequency/MONTHLY"/> + </dct:accrualPeriodicity> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png"> + <dct:description xml:lang="fre">pds_codt_pic</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T00:00:00</dct:issued> + <dcat:accessURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:downloadURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:byteSize rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">10485760</dcat:byteSize> + <dct:format> + <dct:MediaTypeOrExtent> + <rdfs:label>ESRI Shapefile (.shp)</rdfs:label> + </dct:MediaTypeOrExtent> + </dct:format> + <dcat:compressFormat> + <dct:MediaType rdf:about="https://publications.europa.eu/resource/authority/file-type/ZIP"/> + </dcat:compressFormat> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS"> + <dct:title xml:lang="fre">Application de consultation des données de la DGO4 - Plan de secteur</dct:title> + <dct:description xml:lang="fre">Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"> + <dct:title xml:lang="fre">Application WalOnMap - Toute la Wallonie à la carte</dct:title> + <dct:description xml:lang="fre">Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie.</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dct:description xml:lang="fre">Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dct:description xml:lang="fre">Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengeospatial.org/standards/wms"/> + </dct:conformsTo> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps"> + <dct:title xml:lang="fre">Base de données du Plan de secteur</dct:title> + <dct:description xml:lang="fre">Site permettant la recherche de Plans de secteur et des modifications dans la base + de données</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese"> + <dct:title xml:lang="fre">Inventaire des données géographiques de la DGO4</dct:title> + <dct:description xml:lang="fre">Inventaire des données géographiques produites ou exploitées à la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar"> + <dct:title xml:lang="fre">La Direction de l'Aménagement Régional</dct:title> + <dct:description xml:lang="fre">Site de la Direction de l'Aménagement Régional (DAR)</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip"> + <dct:title xml:lang="fre">Plan de Secteur au format SHP</dct:title> + <dct:description xml:lang="fre">Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72</dct:description> + </foaf:Document> + </foaf:page> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-mobility-dataset-core.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-mobility-dataset-core.rdf new file mode 100644 index 00000000000..8aab00adcb8 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-dcat-ap-mobility-dataset-core.rdf @@ -0,0 +1,598 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:dcatap="http://data.europa.eu/r5r/" + xmlns:eli="http://data.europa.eu/eli/ontology" + xmlns:mobilitydcatap="https://w3id.org/mobilitydcat-ap"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Dataset"> + <skos:prefLabel>Dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T12:26:19.337626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:33:24</dct:issued> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:source> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <dct:title xml:lang="fre">ISO 19115</dct:title> + <owl:versionInfo xml:lang="fre">2003/Cor 1:2006</owl:versionInfo> + </dct:Standard> + </dct:conformsTo> + </rdf:Description> + </dct:source> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/r5r/"/> + </dct:conformsTo> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <dct:title xml:lang="fre">Complete metadata</dct:title> + <dct:description xml:lang="fre">All information about the resource</dct:description> + </foaf:Document> + </dcat:landingPage> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-03-31</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-02-21</dct:issued> + <dcat:version>1.0</dcat:version> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/7fe2f305-1302-4297-b67e-792f55acd834</dct:identifier> + <adms:identifier> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/adms#Identifier"/> + <skos:notation>DGATLPE__PDS</skos:notation> + <adms:schemaAgency>BE.SPW.INFRASIG.CARTON</adms:schemaAgency> + </rdf:Description> + </adms:identifier> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <adms:status> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#onGoing"> + <skos:prefLabel xml:lang="fre">Mis à jour continue</skos:prefLabel> + </skos:Concept> + </adms:status> + <dct:creator> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:creator> + <dct:publisher> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:publisher> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Thierry Berthet</foaf:name> + <org:memberOf> + <foaf:Organization> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <prov:qualifiedAttribution> + <prov:Attribution> + <prov:agent> + <rdf:Description rdf:about="https://orcid.org/jb98765"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name>Jean Berthet</foaf:name> + <org:memberOf> + <foaf:Organization rdf:about="https://orcid.org/jb98765"> + <foaf:name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</foaf:name> + </foaf:Organization> + </org:memberOf> + <foaf:mbox rdf:resource="mailto:jean.b@spw.org"/> + </rdf:Description> + </prov:agent> + <dcat:hadRole> + <dcat:Role rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#custodian"> + <skos:prefLabel>custodian</skos:prefLabel> + </dcat:Role> + </dcat:hadRole> + </prov:Attribution> + </prov:qualifiedAttribution> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be</foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + <skos:prefLabel xml:lang="fre">Agriculture</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + <skos:prefLabel xml:lang="fre">Société et activités</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + <skos:prefLabel xml:lang="fre">Aménagement du territoire</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + <skos:prefLabel xml:lang="fre">Plans et règlements</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">espace</dcat:keyword> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes</dcat:keyword> + <dcat:keyword xml:lang="fre">législation</dcat:keyword> + <dcat:keyword xml:lang="fre">géographie</dcat:keyword> + <dcat:keyword xml:lang="fre">agriculture</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du paysage</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau ferroviaire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification écologique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'aménagement</dcat:keyword> + <dcat:keyword xml:lang="fre">extraction</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat rural</dcat:keyword> + <dcat:keyword xml:lang="fre">gestion et planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">secteur d'activité</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de gestion</dcat:keyword> + <dcat:keyword xml:lang="fre">planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">planification économique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan</dcat:keyword> + <dcat:keyword xml:lang="fre">développement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure routière</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'occupation des sols</dcat:keyword> + <dcat:keyword xml:lang="fre">activité économique</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau routier</dcat:keyword> + <dcat:keyword xml:lang="fre">planification urbaine</dcat:keyword> + <dcat:keyword xml:lang="fre">loisirs</dcat:keyword> + <dcat:keyword xml:lang="fre">canalisation</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat urbain</dcat:keyword> + <dcat:keyword xml:lang="fre">mesure d'aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification régionale</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat</dcat:keyword> + <dcat:keyword xml:lang="fre">PanierTelechargementGeoportail</dcat:keyword> + <dcat:keyword xml:lang="fre">Open Data</dcat:keyword> + <dcat:keyword xml:lang="fre">WalOnMap</dcat:keyword> + <dcat:keyword xml:lang="fre">Extraction_DIG</dcat:keyword> + <dcat:keyword xml:lang="fre">BDInfraSIGNO</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de secteur</dcat:keyword> + <dcat:keyword xml:lang="fre">point remarquable</dcat:keyword> + <dcat:keyword xml:lang="fre">PDS</dcat:keyword> + <dcat:keyword xml:lang="fre">CoDT</dcat:keyword> + <dcat:keyword xml:lang="fre">Point de vue</dcat:keyword> + <dcat:keyword xml:lang="fre">centre d'enfouissement</dcat:keyword> + <dcat:keyword xml:lang="fre">servitude</dcat:keyword> + <dcat:keyword xml:lang="fre">Code du Développement Territorial</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/el"> + <skos:prefLabel xml:lang="fre">Altitude</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mf"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + météorologiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/of"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + océanographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ac"> + <skos:prefLabel xml:lang="fre">Conditions atmosphériques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/gn"> + <skos:prefLabel xml:lang="fre">Dénominations géographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ge"> + <skos:prefLabel xml:lang="fre">Géologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hy"> + <skos:prefLabel xml:lang="fre">Hydrographie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/af"> + <skos:prefLabel xml:lang="fre">Installations agricoles et aquacoles</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sr"> + <skos:prefLabel xml:lang="fre">Régions maritimes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sd"> + <skos:prefLabel xml:lang="fre">Répartition des espèces</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mr"> + <skos:prefLabel xml:lang="fre">Ressources minérales</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hh"> + <skos:prefLabel xml:lang="fre">Santé et sécurité des personnes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">Mobilité</dcat:keyword> + <dcat:keyword xml:lang="fre">Observation de la terre et environnement</dcat:keyword> + <dcatap:applicableLegislation rdf:resource="http://data.europa.eu/eli/reg/2014/1143/oj"/> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/BSL_1_0"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/CATOSL_1_1"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'accès et d'utilisation spécifiques</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:isPartOf rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b"/> + <dct:references rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <dct:hasPart rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + <pav:previousVersion rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + <dct:relation rdf:resource="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all"/> + <dct:isPartOf rdf:resource="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/ENG"/> + </dct:language> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="https://inspire.ec.europa.eu/id/document/tg/tn"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <rdfs:label xml:lang="fre">INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2</rdfs:label> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2014-04-17</dct:issued> + </dct:Standard> + </dct:conformsTo> + <dct:provenance> + <dct:ProvenanceStatement> + <dct:description xml:lang="fre">La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE).</dct:description> + </dct:ProvenanceStatement> + </dct:provenance> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/AGRI"> + <skos:prefLabel xml:lang="fr">Agriculture, pêche, sylviculture et alimentation</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ECON"> + <skos:prefLabel xml:lang="fr">Économie et finances</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENER"> + <skos:prefLabel xml:lang="fr">Énergie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENVI"> + <skos:prefLabel xml:lang="fr">Environnement</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/HEAL"> + <skos:prefLabel xml:lang="fr">Santé</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/REGI"> + <skos:prefLabel xml:lang="fr">Régions et villes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/SOCI"> + <skos:prefLabel xml:lang="fr">Population et société</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/TECH"> + <skos:prefLabel xml:lang="fr">Science et technologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengis.net/def/crs/EPSG/0/31370"/> + </dct:conformsTo> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.01</dcat:spatialResolutionInMeters> + <dcat:temporalResolution rdf:datatype="http://www.w3.org/2001/XMLSchema#duration">P0Y2M0DT0H0M0S</dcat:temporalResolution> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <dct:spatial> + <dct:Location rdf:about="https://en.wikipedia.org/wiki/Wallonia"/> + </dct:spatial> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <skos:prefLabel xml:lang="fre">Région wallonne</skos:prefLabel> + </rdf:Description> + </dct:spatial> + <dct:temporal> + <dct:PeriodOfTime> + <dcat:startDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-06</dcat:startDate> + <dcat:endDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-08</dcat:endDate> + </dct:PeriodOfTime> + </dct:temporal> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://publications.europa.eu/resource/authority/frequency/MONTHLY"/> + </dct:accrualPeriodicity> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png"> + <dct:description xml:lang="fre">pds_codt_pic</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T00:00:00</dct:issued> + <dcat:accessURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:downloadURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:byteSize rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">10485760</dcat:byteSize> + <dct:format> + <dct:MediaTypeOrExtent> + <rdfs:label>ESRI Shapefile (.shp)</rdfs:label> + </dct:MediaTypeOrExtent> + </dct:format> + <dcat:compressFormat> + <dct:MediaType rdf:about="https://publications.europa.eu/resource/authority/file-type/ZIP"/> + </dcat:compressFormat> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS"> + <dct:title xml:lang="fre">Application de consultation des données de la DGO4 - Plan de secteur</dct:title> + <dct:description xml:lang="fre">Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"> + <dct:title xml:lang="fre">Application WalOnMap - Toute la Wallonie à la carte</dct:title> + <dct:description xml:lang="fre">Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie.</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dct:description xml:lang="fre">Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dct:description xml:lang="fre">Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengeospatial.org/standards/wms"/> + </dct:conformsTo> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps"> + <dct:title xml:lang="fre">Base de données du Plan de secteur</dct:title> + <dct:description xml:lang="fre">Site permettant la recherche de Plans de secteur et des modifications dans la base + de données</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese"> + <dct:title xml:lang="fre">Inventaire des données géographiques de la DGO4</dct:title> + <dct:description xml:lang="fre">Inventaire des données géographiques produites ou exploitées à la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar"> + <dct:title xml:lang="fre">La Direction de l'Aménagement Régional</dct:title> + <dct:description xml:lang="fre">Site de la Direction de l'Aménagement Régional (DAR)</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip"> + <dct:title xml:lang="fre">Plan de Secteur au format SHP</dct:title> + <dct:description xml:lang="fre">Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72</dct:description> + </foaf:Document> + </foaf:page> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-geodcat-ap-dataset-core.rdf b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-geodcat-ap-dataset-core.rdf new file mode 100644 index 00000000000..2d8e2baf0ad --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/iso19115-3.2018-eu-geodcat-ap-dataset-core.rdf @@ -0,0 +1,606 @@ +<?xml version="1.0" encoding="utf-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:dcat="http://www.w3.org/ns/dcat#" + xmlns:foaf="http://xmlns.com/foaf/0.1/" + xmlns:vcard="http://www.w3.org/2006/vcard/ns#" + xmlns:prov="http://www.w3.org/ns/prov#" + xmlns:org="http://www.w3.org/ns/org#" + xmlns:pav="http://purl.org/pav/" + xmlns:adms="http://www.w3.org/ns/adms#" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:dcatap="http://data.europa.eu/r5r/" + xmlns:geodcatap="http://data.europa.eu/930/" + xmlns:cnt="http://www.w3.org/2011/content#" + xmlns:eli="http://data.europa.eu/eli/ontology"> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> + <dct:type> + <skos:Concept rdf:about="http://purl.org/dc/dcmitype/Dataset"> + <skos:prefLabel>Dataset</skos:prefLabel> + </skos:Concept> + </dct:type> + <geodcatap:resourceType rdf:resource="http://inspire.ec.europa.eu/metadata-codelist/ResourceType/dataset"/> + <foaf:isPrimaryTopicOf> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:uuid:{uuid}</dct:identifier> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T12:26:19.337626Z</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-04-02T12:33:24</dct:issued> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:source> + <rdf:Description rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#CatalogRecord"/> + <cnt:characterEncoding rdf:datatype="http://www.w3.org/2001/XMLSchema#string">UTF-8</cnt:characterEncoding> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <dct:title xml:lang="fre">ISO 19115</dct:title> + <owl:versionInfo xml:lang="fre">2003/Cor 1:2006</owl:versionInfo> + </dct:Standard> + </dct:conformsTo> + </rdf:Description> + </dct:source> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Direction de la gestion des informations territoriales (SPW - Territoire, Logement, + Patrimoine, Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction de la + gestion des informations territoriales)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:donnees.dgo4@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/930/"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/r5r/"/> + </dct:conformsTo> + <foaf:primaryTopic rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"/> + </rdf:Description> + </foaf:isPrimaryTopicOf> + <dcat:landingPage> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834"> + <dct:title xml:lang="fre">Complete metadata</dct:title> + <dct:description xml:lang="fre">All information about the resource</dct:description> + </foaf:Document> + </dcat:landingPage> + <dct:title xml:lang="fre">Plan de secteur en vigueur (version coordonnée vectorielle)</dct:title> + <dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-03-31</dct:modified> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-02-21</dct:issued> + <dcat:version>1.0</dcat:version> + <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://geodata.wallonie.be/id/7fe2f305-1302-4297-b67e-792f55acd834</dct:identifier> + <adms:identifier> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/adms#Identifier"/> + <skos:notation>DGATLPE__PDS</skos:notation> + <adms:schemaAgency>BE.SPW.INFRASIG.CARTON</adms:schemaAgency> + </rdf:Description> + </adms:identifier> + <dct:description xml:lang="fre">Le plan de secteur est un outil réglementaire d'aménagement du territoire et d'urbanisme + régional wallon constitué de plusieurs couches de données spatiales. + + Le plan de secteur organise l'espace territorial wallon et en définit les différentes affectations afin + d'assurer le développement des activités humaines de manière harmonieuse et d'éviter la consommation abusive + d'espace. Il dispose d'une pleine valeur réglementaire et constitue ainsi la colonne vertébrale d’un + développement territorial efficace, cohérent et concerté. Cet aspect est renforcé par la réforme engendrée par + l'entrée en vigueur du Code du Développement Territorial (CoDT). + + La Région wallonne est couverte par 23 plans de secteur, adoptés entre 1977 et 1987. + + Le plan de secteur est divisé en zones destinées à l'urbanisation (zone d'habitat, de loisirs, d'activité + économique, etc.) et en zones non destinées à l'urbanisation (zones agricoles, forestières, espaces verts, + etc.). Plusieurs couches de données spatiales constituent le plan de secteur. Elles sont définies dans le + CoDT. Outre la détermination des différentes zones d'affectation du territoire wallon, il contient : + - les limites communales du PdS; + - les révisions (infrastructures en révision, périmètres de révisions partielles du PdS, mesures + d'aménagement, prescriptions supplémentaires); + - les infrastructures (réseau routier, ferroviaire, voies navigables, lignes électriques haute tension, + canalisations); + - les périmètres de protection (périmètres de liaison écologique, d'intérêt paysager, d'intérêt culture, + historique ou esthétique, les points de vue remarquable et leur périmètre, les réservations d'infrastructure + principale, les extension de zone d'extraction); + - la référence au Plan de Secteur d'origine; + - les étiquettes des secteurs d'aménagement de 1978. + + Ces différentes couches de données sont présentées sous format vectoriel (point, ligne ou polygone). + + Si le plan de secteur a valeur réglementaire, il n’est pas figé pour autant. Les modalités de révision sont + formalisées dans des procédures qui ont été simplifiées et rationalisées dans le CoDT. Cette version constitue + la version la plus récente des couches de données et intègre les mises à jour faisant suite à la mise en œuvre + du CoDT. + + A ce jour, la gestion du plan de secteur relève de la Direction de l’Aménagement régional (DAR) qui est en + charge de l'outil "plan de secteur" : évolution au regard des objectifs régionaux, notamment du développement + économique dans une perspective durable, information, sensibilisation, lien avec la planification stratégique + régionale et avec les outils communaux. Les révisions sont instruites par la DAR, à l'exception de celles qui + ont été attribuées à la cellule de développement territorial (CDT), également dénommée "ESPACE", dont la + création a été décidée par le Gouvernement wallon le 19 septembre 2005.</dct:description> + <adms:status> + <skos:Concept rdf:about="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#onGoing"> + <skos:prefLabel xml:lang="fre">Mis à jour continue</skos:prefLabel> + </skos:Concept> + </adms:status> + <dct:creator> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:creator> + <dct:publisher> + <rdf:Description> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dct:publisher> + <dcat:contactPoint> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la + Géomatique - Direction de l'Intégration des géodonnées)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + </rdf:Description> + </dcat:contactPoint> + <geodcatap:custodian> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:fn>Thierry Berthet</vcard:fn> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:developpement.territorial@spw.wallonie.be"/> + </rdf:Description> + </geodcatap:custodian> + <geodcatap:custodian> + <rdf:Description rdf:about="https://orcid.org/jb98765"> + <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Organization"/> + <vcard:fn>Jean Berthet</vcard:fn> + <vcard:org> + <rdf:Description> + <vcard:organisation-name xml:lang="fre">Direction du Développement territorial (SPW - Territoire, Logement, Patrimoine, + Énergie - Département de l'Aménagement du territoire et de l'Urbanisme - Direction du Développement + territorial)</vcard:organisation-name> + </rdf:Description> + </vcard:org> + <vcard:hasEmail rdf:resource="mailto:jean.b@spw.org"/> + </rdf:Description> + </geodcatap:custodian> + <dct:rightsHolder> + <rdf:Description rdf:about="https://geoportail.wallonie.be"> + <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> + <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> + <foaf:name xml:lang="fre">Service public de Wallonie (SPW)</foaf:name> + <foaf:mbox rdf:resource="mailto:helpdesk.carto@spw.wallonie.be"/> + <foaf:workplaceHomepage xml:lang="fre">https://geoportail.wallonie.be</foaf:workplaceHomepage> + </rdf:Description> + </dct:rightsHolder> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6020"> + <skos:prefLabel xml:lang="fre">Agriculture</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60"> + <skos:prefLabel xml:lang="fre">Société et activités</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/20"> + <skos:prefLabel xml:lang="fre">Aménagement du territoire</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/2010"> + <skos:prefLabel xml:lang="fre">Plans et règlements</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">espace</dcat:keyword> + <dcat:keyword xml:lang="fre">zones naturelles, paysages, écosystèmes</dcat:keyword> + <dcat:keyword xml:lang="fre">législation</dcat:keyword> + <dcat:keyword xml:lang="fre">géographie</dcat:keyword> + <dcat:keyword xml:lang="fre">agriculture</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du paysage</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau ferroviaire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification écologique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'aménagement</dcat:keyword> + <dcat:keyword xml:lang="fre">extraction</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat rural</dcat:keyword> + <dcat:keyword xml:lang="fre">gestion et planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">secteur d'activité</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de gestion</dcat:keyword> + <dcat:keyword xml:lang="fre">planification rurale</dcat:keyword> + <dcat:keyword xml:lang="fre">planification économique</dcat:keyword> + <dcat:keyword xml:lang="fre">plan</dcat:keyword> + <dcat:keyword xml:lang="fre">développement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">infrastructure routière</dcat:keyword> + <dcat:keyword xml:lang="fre">plan d'occupation des sols</dcat:keyword> + <dcat:keyword xml:lang="fre">activité économique</dcat:keyword> + <dcat:keyword xml:lang="fre">réseau routier</dcat:keyword> + <dcat:keyword xml:lang="fre">planification urbaine</dcat:keyword> + <dcat:keyword xml:lang="fre">loisirs</dcat:keyword> + <dcat:keyword xml:lang="fre">canalisation</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat urbain</dcat:keyword> + <dcat:keyword xml:lang="fre">mesure d'aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">planification régionale</dcat:keyword> + <dcat:keyword xml:lang="fre">habitat</dcat:keyword> + <dcat:keyword xml:lang="fre">PanierTelechargementGeoportail</dcat:keyword> + <dcat:keyword xml:lang="fre">Open Data</dcat:keyword> + <dcat:keyword xml:lang="fre">WalOnMap</dcat:keyword> + <dcat:keyword xml:lang="fre">Extraction_DIG</dcat:keyword> + <dcat:keyword xml:lang="fre">BDInfraSIGNO</dcat:keyword> + <dcat:keyword xml:lang="fre">aménagement du territoire</dcat:keyword> + <dcat:keyword xml:lang="fre">plan de secteur</dcat:keyword> + <dcat:keyword xml:lang="fre">point remarquable</dcat:keyword> + <dcat:keyword xml:lang="fre">PDS</dcat:keyword> + <dcat:keyword xml:lang="fre">CoDT</dcat:keyword> + <dcat:keyword xml:lang="fre">Point de vue</dcat:keyword> + <dcat:keyword xml:lang="fre">centre d'enfouissement</dcat:keyword> + <dcat:keyword xml:lang="fre">servitude</dcat:keyword> + <dcat:keyword xml:lang="fre">Code du Développement Territorial</dcat:keyword> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/el"> + <skos:prefLabel xml:lang="fre">Altitude</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mf"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + météorologiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/of"> + <skos:prefLabel xml:lang="fre">Caractéristiques géographiques + océanographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ac"> + <skos:prefLabel xml:lang="fre">Conditions atmosphériques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/gn"> + <skos:prefLabel xml:lang="fre">Dénominations géographiques</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/ge"> + <skos:prefLabel xml:lang="fre">Géologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hy"> + <skos:prefLabel xml:lang="fre">Hydrographie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/af"> + <skos:prefLabel xml:lang="fre">Installations agricoles et aquacoles</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sr"> + <skos:prefLabel xml:lang="fre">Régions maritimes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/sd"> + <skos:prefLabel xml:lang="fre">Répartition des espèces</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/mr"> + <skos:prefLabel xml:lang="fre">Ressources minérales</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://inspire.ec.europa.eu/theme/hh"> + <skos:prefLabel xml:lang="fre">Santé et sécurité des personnes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:keyword xml:lang="fre">Mobilité</dcat:keyword> + <dcat:keyword xml:lang="fre">Observation de la terre et environnement</dcat:keyword> + <dcatap:applicableLegislation rdf:resource="http://data.europa.eu/eli/reg/2014/1143/oj"/> + <dct:accessRights> + <dct:RightsStatement rdf:about="http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations"/> + </dct:accessRights> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/BSL_1_0"/> + </dct:license> + <dct:license> + <dct:LicenseDocument rdf:about="http://publications.europa.eu/resource/authority/licence/CATOSL_1_1"/> + </dct:license> + <dct:rights> + <dct:RightsStatement> + <dct:description xml:lang="fre">Conditions d'accès et d'utilisation spécifiques</dct:description> + </dct:RightsStatement> + </dct:rights> + <dct:isPartOf rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/be875ddb-ffd9-4c23-a013-53063a366b5b"/> + <dct:references rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058"/> + <dct:hasPart rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/201ee90c-1971-4bdc-855e-9c9bcbc2c647"/> + <pav:previousVersion rdf:resource="https://metawal.wallonie.be/geonetwork/srv/api/records/19cff95e-1971-4bdc-855e-9c9bcbc2c647"/> + <dct:relation rdf:resource="http://localhost:8080/geonetwork/srv/api/records/ffc45d44-1cc2-4924-bb8c-214096eb9058?language=all"/> + <dct:isPartOf rdf:resource="http://localhost:8080/geonetwork/srv/api/records/da165110-88fd-11da-a88f-000d939bc5d8"/> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/FRA"/> + </dct:language> + <dct:language> + <dct:LinguisticSystem rdf:about="http://publications.europa.eu/resource/authority/language/ENG"/> + </dct:language> + <dct:conformsTo> + <dct:Standard rdf:about="http://data.europa.eu/eli/reg/2010/1089"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard rdf:about="https://inspire.ec.europa.eu/id/document/tg/tn"/> + </dct:conformsTo> + <dct:conformsTo> + <dct:Standard> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <rdfs:label xml:lang="fre">INSPIRE Data Specification on Transport Networks – Technical Guidelines, + version 3.2</rdfs:label> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2014-04-17</dct:issued> + </dct:Standard> + </dct:conformsTo> + <dct:provenance> + <dct:ProvenanceStatement> + <dct:description xml:lang="fre">La version numérique vectorielle du plan de secteur se base sur la version papier originale + digitalisée par l'Institut Wallon en juin 1994 (fond de plan au 1/10.000) qui a été complétée en mai 2001 par + ce même institut. La donnée intègre la légende actuellement en vigueur et est mise à jour en continu par la + DGO4 depuis 2001. + + L'intégration des nouveaux dossiers, la correction d'erreurs et la suppression des dossiers abrogés se font au + fur et à mesure de la réception des informations. Les données publiées sont mises à jour mensuellement sur + base des données de travail. + + Depuis leur adoption, les plans de secteur ont fait l’objet de nombreuses révisions. Le Gouvernement wallon a + en effet estimé nécessaire de les adapter pour y inscrire de nouveaux projets: routes, lignes électriques à + haute tension, tracé TGV, nouvelles zones d'activité économique, zones d’extraction, etc. + + La procédure de révision et la légende ont été modifiées à plusieurs reprises. + + Suite à l'entrée en vigueur du CoDT, des changements sont à noter : + - Trois nouvelles zones destinées à l'urbanisation : Zone de dépendance d’extraction destinée à accueillir les + dépôts et dépendances industrielles (transformation des matières) à l’activité d’extraction, la zone d'enjeu + communal (ZEC) et la zone d'enjeu régional (ZER). Les ZEC et ZER sont toutes deux accompagnées d'une carte + d'affectation des sols à valeur indicative + - une nouvelle zone non destinée à l'urbanisation : zone d'extraction (ZE).</dct:description> + </dct:ProvenanceStatement> + </dct:provenance> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/AGRI"> + <skos:prefLabel xml:lang="fr">Agriculture, pêche, sylviculture et alimentation</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ECON"> + <skos:prefLabel xml:lang="fr">Économie et finances</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENER"> + <skos:prefLabel xml:lang="fr">Énergie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/ENVI"> + <skos:prefLabel xml:lang="fr">Environnement</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/HEAL"> + <skos:prefLabel xml:lang="fr">Santé</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/REGI"> + <skos:prefLabel xml:lang="fr">Régions et villes</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/SOCI"> + <skos:prefLabel xml:lang="fr">Population et société</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <dcat:theme> + <skos:Concept rdf:about="http://publications.europa.eu/resource/authority/data-theme/TECH"> + <skos:prefLabel xml:lang="fr">Science et technologie</skos:prefLabel> + </skos:Concept> + </dcat:theme> + <geodcatap:referenceSystem> + <rdf:Description rdf:about="http://www.opengis.net/def/crs/EPSG/0/31370"> + <rdf:type rdf:resource="http://purl.org/dc/terms/Standard"/> + <dct:type rdf:resource="http://inspire.ec.europa.eu/glossary/SpatialReferenceSystem"/> + </rdf:Description> + </geodcatap:referenceSystem> + <geodcatap:topicCategory rdf:resource="http://inspire.ec.europa.eu/metadata-codelist/TopicCategory/planningCadastre"/> + + <geodcatap:topicCategory rdf:resource="http://inspire.ec.europa.eu/metadata-codelist/TopicCategory/imageryBaseMapsEarthCover"/> + + <geodcatap:topicCategory rdf:resource="http://inspire.ec.europa.eu/metadata-codelist/TopicCategory/location"/> + <dcat:spatialResolutionInMeters rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">0.01</dcat:spatialResolutionInMeters> + <dcat:temporalResolution rdf:datatype="http://www.w3.org/2001/XMLSchema#duration">P0Y2M0DT0H0M0S</dcat:temporalResolution> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <dcat:bbox rdf:datatype="http://www.opengis.net/ont/geosparql#geoJSONLiteral"><![CDATA[{"type":"Polygon","coordinates":[[[2.75,50.85],[6.50,50.85],[6.50,49.45],[2.75,49.45],[2.75,50.85]]]}]]></dcat:bbox> + </rdf:Description> + </dct:spatial> + <dct:spatial> + <dct:Location rdf:about="https://en.wikipedia.org/wiki/Wallonia"/> + </dct:spatial> + <dct:spatial> + <rdf:Description> + <rdf:type rdf:resource="http://purl.org/dc/terms/Location"/> + <skos:prefLabel xml:lang="fre">Région wallonne</skos:prefLabel> + </rdf:Description> + </dct:spatial> + <dct:temporal> + <dct:PeriodOfTime> + <dcat:startDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-06</dcat:startDate> + <dcat:endDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2023-12-08</dcat:endDate> + </dct:PeriodOfTime> + </dct:temporal> + <dct:accrualPeriodicity> + <dct:Frequency rdf:about="http://publications.europa.eu/resource/authority/frequency/MONTHLY"/> + </dct:accrualPeriodicity> + <foaf:page> + <foaf:Document rdf:about="https://metawal.wallonie.be/geonetwork/srv/api/records/7fe2f305-1302-4297-b67e-792f55acd834/attachments/pds_codt.png"> + <dct:description xml:lang="fre">pds_codt_pic</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-12-08T00:00:00</dct:issued> + <dcat:accessURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:downloadURL rdf:resource="https://data.monde.org/secteur.shp"/> + <dcat:byteSize rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">10485760</dcat:byteSize> + <dct:format> + <dct:MediaTypeOrExtent> + <rdfs:label>ESRI Shapefile (.shp)</rdfs:label> + </dct:MediaTypeOrExtent> + </dct:format> + <dcat:compressFormat> + <dct:MediaType rdf:about="https://publications.europa.eu/resource/authority/file-type/ZIP"/> + </dcat:compressFormat> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://geoapps.wallonie.be/webgisdgo4/#CTX=PDS"> + <dct:title xml:lang="fre">Application de consultation des données de la DGO4 - Plan de secteur</dct:title> + <dct:description xml:lang="fre">Application dédiée à la consultation des couches de données relatives au Plan de + secteur. Cette application constitue un thème de l'application de consultation des données de la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"> + <dct:title xml:lang="fre">Application WalOnMap - Toute la Wallonie à la carte</dct:title> + <dct:description xml:lang="fre">Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les + données géographiques de la Wallonie.</dct:description> + </foaf:Document> + </foaf:page> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dct:description xml:lang="fre">Ce service ESRI-REST permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation ESRI-REST</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/rest/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer"/> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <dcat:distribution> + <dcat:Distribution> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dct:description xml:lang="fre">Ce service WMS permet de visualiser la série de couches de données "Plan de + secteur"</dct:description> + <dcat:accessURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dcat:accessService> + <rdf:Description> + <rdf:type rdf:resource="http://www.w3.org/ns/dcat#DataService"/> + <dct:title xml:lang="fre">Service de visualisation WMS</dct:title> + <dcat:endpointURL rdf:resource="https://geoservices.wallonie.be/arcgis/services/AMENAGEMENT_TERRITOIRE/PDS/MapServer/WMSServer?request=GetCapabilities&service=WMS"/> + <dct:conformsTo> + <dct:Standard rdf:about="http://www.opengeospatial.org/standards/wms"/> + </dct:conformsTo> + </rdf:Description> + </dcat:accessService> + </dcat:Distribution> + </dcat:distribution> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_thema/index.php?thema=modif_ps"> + <dct:title xml:lang="fre">Base de données du Plan de secteur</dct:title> + <dct:description xml:lang="fre">Site permettant la recherche de Plans de secteur et des modifications dans la base + de données</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="https://lampspw.wallonie.be/dgo4/site_thema/index.php/synthese"> + <dct:title xml:lang="fre">Inventaire des données géographiques de la DGO4</dct:title> + <dct:description xml:lang="fre">Inventaire des données géographiques produites ou exploitées à la DGO4.</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://spw.wallonie.be/dgo4/site_amenagement/site/directions/dar"> + <dct:title xml:lang="fre">La Direction de l'Aménagement Régional</dct:title> + <dct:description xml:lang="fre">Site de la Direction de l'Aménagement Régional (DAR)</dct:description> + </foaf:Document> + </foaf:page> + <foaf:page> + <foaf:Document rdf:about="http://geoservices.wallonie.be/geotraitement/spwdatadownload/get/7fe2f305-1302-4297-b67e-792f55acd834/PDS_SHAPE_31370.zip"> + <dct:title xml:lang="fre">Plan de Secteur au format SHP</dct:title> + <dct:description xml:lang="fre">Dossier compressé contenant le jeu de données du Plan de Secteur au format + shapefile en coordonnées Lambert 72</dct:description> + </foaf:Document> + </foaf:page> + </rdf:Description> +</rdf:RDF> diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/mobilitydcat-ap_shacl_shapes.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/mobilitydcat-ap_shacl_shapes.ttl new file mode 100644 index 00000000000..7fc10e5f229 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/mobilitydcat-ap_shacl_shapes.ttl @@ -0,0 +1,411 @@ +@prefix : <http://w3id.org/mobilitydcat-ap#> . +@prefix mobilitydcatap: <http://w3id.org/mobilitydcat-ap#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix bibo: <http://purl.org/ontology/bibo/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dcatap: <http://data.europa.eu/r5r/> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix dqv: <http://www.w3.org/ns/dqv#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix locn: <http://www.w3.org/ns/locn#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix oa: <http://www.w3.org/ns/oa#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + + +<http://w3id.org/mobilitydcat-ap#> a owl:Ontology , adms:Asset ; + owl:imports <https://raw.githubusercontent.com/SEMICeu/DCAT-AP/master/releases/2.0.1/dcat-ap_2.0.1_shacl_shapes.ttl> ; + owl:imports <https://raw.githubusercontent.com/SEMICeu/DCAT-AP/master/releases/2.0.1/dcat-ap_2.0.1_shacl_deprecateduris.ttl> ; + owl:imports <https://raw.githubusercontent.com/SEMICeu/DCAT-AP/master/releases/2.0.1/dcat-ap_2.0.1_shacl_mdr-vocabularies.shape.ttl> ; + owl:imports <https://mobilitydcat-ap.github.io/mobilityDCAT-AP/releases/1.0.0/mobilitydcat-ap.ttl> ; + owl:imports <http://www.w3.org/ns/dqv.ttl> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/SpatialDataServiceCategory.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ConditionsApplyingToAccessAndUse/ConditionsApplyingToAccessAndUse.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/DegreeOfConformity/DegreeOfConformity.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/PriorityDataset.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ProtocolValue/ProtocolValue.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/LimitationsOnPublicAccess.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/OnLineDescriptionCode/OnLineDescriptionCode.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/QualityOfServiceCriteria/QualityOfServiceCriteria.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ResourceType/ResourceType.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ResponsiblePartyRole/ResponsiblePartyRole.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType/SpatialDataServiceType.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/SpatialScope.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/TopicCategory/TopicCategory.en.rdf> ; + owl:versionIRI <http://w3id.org/mobilityDCAT-AP/releases/1.0.0/> ; + adms:status <http://publications.europa.eu/resource/dataset/dataset-status/COMPLETED> ; + dcatap:availability dcatap:stable ; + dct:conformsTo <https://www.w3.org/TR/shacl> ; + rdfs:isDefinedBy <https://w3id.org/mobilitydcat-ap/releases/1.0.0/> ; + dct:license <https://creativecommons.org/licenses/by/4.0> ; + dct:created "2023-08-14"^^xsd:date ; + dct:issued "2023-08-14"^^xsd:date ; + dct:modified "2023-10-19"^^xsd:date ; + dct:dateCopyrighted "2023"^^xsd:gYear ; + dct:title "The constraints of mobilityDCAT-AP Application Profile for Data Portals in Europe"@en ; + owl:versionInfo "1.0.0" ; + dct:description "This document specifies the constraints on properties and classes expressed by mobilityDCAT-AP in SHACL."@en ; + bibo:editor [ + a foaf:Person ; + owl:sameAs <https://lina-molinas-comet.name/foaf/#me>; + owl:sameAs <https://orcid.org/0000-0001-5446-6947> ; + foaf:name "Lina Molinas Comet" + ] ; + dct:creator [ a foaf:Group ; + foaf:name "NAPCORE SWG 4.4" ; + foaf:page <https://github.com/mobilityDCAT-AP/mobilityDCAT-AP> ] ; + dct:publisher <https://napcore.eu/> ; + dct:rightsHolder <https://napcore.eu/> ; + dcat:distribution [ a adms:AssetDistribution ; + dct:format <http://publications.europa.eu/resource/authority/file-type/RDF_TURTLE>, + <http://www.w3.org/ns/formats/data/Turtle> ; + dct:title "SHACL (Turtle)"@en ; + dcat:downloadURL <http://w3id.org/mobilitydcat-ap/releases/1.0.0/mobilitydcat-ap.shacl.ttl> ; + dcat:mediaType "text/turtle"^^dct:IMT + ] ; + . + +#------------------------------------------------------------------------- +# The shapes in this file complement the DCAT-AP ones to cover all classes +# in mobilityDCAT-AP 1.0.0. +#------------------------------------------------------------------------- + +:Address_Agent_Shape + a sh:NodeShape ; + sh:name "Address (Agent)"@en ; + sh:property [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:adminUnitL2 ; + sh:name "administrative area" ; + sh:description "The administrative area of an Address of the Agent. Depending on the country, this corresponds to a province, a county, a region, or a state." ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:postName ; + sh:name "city" ; + sh:description "The city of an Address of the Agent." ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:adminUnitL1 ; + sh:name "country" ; + sh:description "The country of an Address of the Agent." ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:postCode ; + sh:name "postal code" ; + sh:description "The postal code of an Address of the Agent." ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:thoroughfare ; + sh:name "street address" ; + sh:description "In mobilityDCAT-AP, this is a recommended property to be used for Address (Agent)" ; + sh:severity sh:Violation + ] ; + sh:targetClass locn:Address . + +:Agent_Shape + a sh:NodeShape ; + sh:name "Agent"@en ; + sh:property [ + sh:maxCount 1 ; + sh:class owl:Thing ; + sh:path foaf:mbox ; + sh:name "email" ; + sh:description "This property SHOULD be used to provide the email address of the Agent, specified using fully qualified mailto: URI scheme [RFC6068]. The email SHOULD be used to establish a communication channel to the agent." ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:class rdfs:Resource ; + sh:path foaf:workplaceHomepage ; + sh:name "URL" ; + sh:description "This property MAY be used to specify the Web site of the Agent." ; + sh:severity sh:Violation + ]; + sh:targetClass foaf:Agent . + +:CatalogRecord_Shape + a sh:NodeShape ; + sh:name "Catalogue Record"@en ; + sh:property [ + sh:minCount 1 ; + sh:maxCount 1 ; + sh:path dct:created ; + sh:or ( + [ + sh:datatype xsd:date ; + ] + [ + sh:datatype xsd:dateTime ; + ] + ); + sh:name "creation date" ; + sh:description "This property contains the date stamp (date and time) when the metadata entry was created for the first time. It SHOULD be generated by the system, whenever a platform user enters the metadata entry. " ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:CatalogRecord . + +:Dataset_Shape + a sh:NodeShape ; + sh:name "Dataset"@en ; + sh:property [ + sh:minCount 1 ; + sh:class skos:Concept ; + sh:path mobilitydcatap:mobilityTheme ; + sh:name "mobility theme" ; + sh:description "This property refers to the mobility-related theme (i.e., a specific subject, category, or type) of the delivered content. A dataset may be associated with multiple themes. A theme is important for data seekers who are interested in a particular type of data content. " ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path mobilitydcatap:georeferencingMethod ; + sh:name "georeferencing method" ; + sh:description "This property SHOULD be used to specify the georeferencing method used in the dataset." ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path mobilitydcatap:networkCoverage ; + sh:name "network coverage" ; + sh:description "This property describes the part of the transport network that is covered by the delivered content. For road traffic, the property SHOULD refer to the network classification for which the data is provided. As a minimum, an international or higher-level classification, e.g., via functional road classes, is recommended to allow data search across different countries. In addition, national classifications are allowed." ; + sh:severity sh:Violation + ], [ + sh:class dct:Standard ; + sh:path dct:conformsTo ; + sh:name "reference system" ; + sh:description "This property SHOULD be used to specify the spatial reference system used in the dataset. Spatial reference systems SHOULD be specified by using the corresponding URIs from the “EPSG coordinate reference systems” register operated by OGC." ; + sh:severity sh:Violation + ], [ + sh:class foaf:Agent ; + sh:path dct:rightsHolder ; + sh:name "rights holder" ; + sh:description "This property refers to an entity that legally owns or holds the rights of the data provided in a dataset. This entity is legally responsible for the content of the data. It is also responsible for any statements about the data quality (if applicable, see property dqv:hasQualityAnnotation) and/or the relevance to legal frameworks (if applicable, see property dcatap:applicableLegislation)." ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path mobilitydcatap:transportMode ; + sh:name "transport mode" ; + sh:description "This property describes the transport mode that is covered by the delivered content. Data can be valid for more than one mode, so a multiple choice should be applied. " ; + sh:severity sh:Violation + ]; + sh:targetClass dcat:Dataset . + +:Distribution_Shape + a sh:NodeShape ; + sh:name "Distribution"@en ; + sh:property [ + sh:class skos:Concept ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:path mobilitydcatap:mobilityDataStandard ; + sh:name "mobility data standard" ; + sh:description "This property describes the mobility data standard, as applied for the delivered content within the Distribution. A mobility data standard, e.g., DATEX II, combines syntax and semantic definitions of entities in a certain domain (e.g., for DATEX II: road traffic information), and optionally adds technical rules for data exchange. " ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path mobilitydcatap:applicationLayerProtocol ; + sh:name "application layer protocol" ; + sh:description "This property describes the transmitting channel, i.e., the Application Layer Protocol, of the distribution." ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Distribution . + +:Kind_Shape + a sh:NodeShape ; + sh:name "Kind"@en ; + sh:property [ + sh:class owl:Thing ; + sh:minCount 1 ; + sh:path vcard:hasEmail ; + sh:name "email" ; + sh:description "This property contains an email address of the Kind, specified using fully qualified mailto: URI scheme [RFC6068]. " ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path vcard:fn ; + sh:minCount 1 ; + sh:name "name" ; + sh:description "This property contains a name of the Kind. This property can be repeated for different versions of the name (e.g., the name in different languages) - see § 8. Accessibility and Multilingual Aspects." ; + sh:severity sh:Violation + ], [ + sh:class owl:Thing ; + sh:path vcard:hasURL ; + sh:maxCount 1 ; + sh:name "URL" ; + sh:description "This property points to a Web site of the Kind." ; + sh:severity sh:Violation + ]; + sh:targetClass vcard:Kind . + +:LicenseDocument_Shape + a sh:NodeShape ; + sh:name "License Document"@en ; + sh:property [ + sh:class skos:Concept ; + sh:maxCount 1 ; + sh:path dct:identifier ; + sh:name "Standard licence" ; + sh:description "This property MAY be be used to link to a concrete standard license. A controlled vocabulary § 5.2 Controlled vocabularies to be used is provided. " ; + sh:severity sh:Violation + ]; + sh:targetClass dct:LicenseDocument . + +:Location_Shape + a sh:NodeShape ; + sh:name "Location"@en ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:path skos:inScheme ; + sh:maxCount 1 ; + sh:name "gazetteer" ; + sh:description "This property MAY be used to specify the gazetteer to which the Location belongs. " ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:identifier ; + sh:name "geographic identifier" ; + sh:description "This property contains the geographic identifier for the Location, e.g., the URI or other unique identifier in the context of the relevant gazetteer." ; + sh:severity sh:Violation + ]; + sh:targetClass dct:Location . + +:RightsStatement_Shape + a sh:NodeShape ; + sh:name "Rights Statement"@en ; + sh:property [ + sh:class skos:Concept ; + sh:path dct:type ; + sh:maxCount 1 ; + sh:name "conditions for access and usage" ; + sh:description "This property SHOULD be used to indicate the conditions if any contracts, licences and/or are applied for the use of the dataset. The conditions are declared on an aggregated level: whether a free and unrestricted use is possible, a contract has to be concluded and/or a licence has to be agreed on to use a dataset. " ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path rdfs:label ; + sh:name "Additional information for access and usage" ; + sh:description "This property MAY describes in a textual form any additional access, usage or licensing information, besides other information under classes dct:RightsStatement and dct:LicenseDocument. " ; + sh:severity sh:Violation + ]; + sh:targetClass dct:RightsStatement . + +#------------------------------------------------------------------------- +# Concepts from controlled vocabularies defined and used in mobilityDCAT-AP. +#------------------------------------------------------------------------- + +<https://w3id.org/mobilitydcat-ap/data-model> a skos:ConceptScheme ; + skos:prefLabel "Data model"@en ; +. + +<https://w3id.org/mobilitydcat-ap/data-content-category> a skos:ConceptScheme ; + skos:prefLabel "Data content category"@en ; +. + +<https://w3id.org/mobilitydcat-ap/update-frequency> a skos:ConceptScheme ; + skos:prefLabel "Update frequency"@en ; +. + +<https://w3id.org/mobilitydcat-ap/georeferencing-method/> a skos:ConceptScheme ; + skos:prefLabel "Georeferencing method"@en ; +. + +<https://w3id.org/mobilitydcat-ap/network-coverage> a skos:ConceptScheme ; + skos:prefLabel "Network coverage"@en ; +. + +<https://w3id.org/mobilitydcat-ap/transport-mode> a skos:ConceptScheme ; + skos:prefLabel "Transport mode"@en ; +. + +<https://w3id.org/mobilitydcat-ap/service-category> a skos:ConceptScheme ; + skos:prefLabel "Service category"@en ; +. + +<https://w3id.org/mobilitydcat-ap/grammar> a skos:ConceptScheme ; + skos:prefLabel "Grammar"@en ; +. + +<https://w3id.org/mobilitydcat-ap/application-layer-protocol> a skos:ConceptScheme ; + skos:prefLabel "Application layer protocol"@en ; +. + +<https://w3id.org/mobilitydcat-ap/communication-method> a skos:ConceptScheme ; + skos:prefLabel "Communication method"@en ; +. + +<https://w3id.org/mobilitydcat-ap/conditions-for-access-and-usage> a skos:ConceptScheme ; + skos:prefLabel "Conditions for access and usage"@en ; +. + +#------------------------------------------------------------------------- +# Concepts from additional controlled vocabularies used in mobilityDCAT-AP. +#------------------------------------------------------------------------- + +<http://publications.europa.eu/resource/authority/data-theme> a skos:ConceptScheme ; + skos:prefLabel "Data Themes"@en ; +. + +<http://publications.europa.eu/resource/authority/data-theme> a skos:ConceptScheme ; + skos:prefLabel "Dataset Theme Vocabulary"@en ; +. + +<http://publications.europa.eu/resource/authority/access-right> a skos:ConceptScheme ; + skos:prefLabel "Access right"@en ; +. + +<http://publications.europa.eu/resource/authority/frequency> a skos:ConceptScheme ; + skos:prefLabel "Frequency"@en ; +. + +<http://www.opengis.net/def/crs/EPSG/0/> a skos:ConceptScheme ; + skos:prefLabel "OGC EPSG Coordinate Reference Systems Register"@en ; +. + +<http://publications.europa.eu/resource/authority/file-type> a skos:ConceptScheme ; + skos:prefLabel "File Type"@en ; +. + +<http://publications.europa.eu/resource/authority/language> a skos:ConceptScheme ; + skos:prefLabel "Language"@en ; +. + +<http://publications.europa.eu/resource/authority/corporate-body> a skos:ConceptScheme ; + skos:prefLabel "Corporate body"@en ; +. + +<http://publications.europa.eu/resource/authority/continent> a skos:ConceptScheme ; + skos:prefLabel "Continents"@en ; +. + +<http://publications.europa.eu/resource/authority/country> a skos:ConceptScheme ; + skos:prefLabel "Countries"@en ; +. + +<http://publications.europa.eu/resource/authority/place> a skos:ConceptScheme ; + skos:prefLabel "Places"@en ; +. + +<http://sws.geonames.org/> a skos:ConceptScheme ; + skos:prefLabel "GeoNames"@en ; +. + +<http://nuts.geovocab.org/> a skos:ConceptScheme; + skos:prefLabel "NUTS (Nomenclature of Territorial Units for Statistics)"@en ; +. + +<http://purl.org/adms/publishertype/> a skos:ConceptScheme ; + skos:prefLabel "ADMS publisher type"@en ; +. + +<https://eur-lex.europa.eu/eli-register/eu_publications_office.html> a skos:ConceptScheme ; + skos:prefLabel "European Legislation Identifier (ELI)"@en ; +. \ No newline at end of file diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/dcat-ap-2.1.1-base-SHACL.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/dcat-ap-2.1.1-base-SHACL.ttl new file mode 100644 index 00000000000..1e5ab9d194f --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/dcat-ap-2.1.1-base-SHACL.ttl @@ -0,0 +1,7771 @@ +# FROM https://www.itb.ec.europa.eu/shacl/dcat-ap/upload +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix cc: <http://creativecommons.org/ns#> . +@prefix dc: <http://purl.org/dc/elements/1.1/> . +@prefix dcam: <http://purl.org/dc/dcam/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dcatap: <http://data.europa.eu/r5r/> . +@prefix dcterms: <http://purl.org/dc/terms/> . +@prefix dctype: <http://purl.org/dc/dcmitype/> . +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . +@prefix gsp: <http://www.opengis.net/ont/geosparql#> . +@prefix j.0: <https://schema.org/> . +@prefix locn: <http://www.w3.org/ns/locn#> . +@prefix odrl: <http://www.w3.org/ns/odrl/2/> . +@prefix org: <http://www.w3.org/ns/org#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix rec: <http://www.w3.org/2001/02pd/rec54#> . +@prefix sdo: <http://schema.org/> . +@prefix sf: <http://www.opengis.net/ont/sf#> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix sioc: <http://rdfs.org/sioc/ns#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix spdx: <http://spdx.org/rdf/terms#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix vann: <http://purl.org/vocab/vann/> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix voaf: <http://purl.org/vocommons/voaf#> . +@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> . +@prefix wdsr: <http://www.w3.org/2007/05/powder-s#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +prov:entity rdf:type owl:ObjectProperty ; + rdfs:domain prov:EntityInfluence ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "entity" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:influencer ; + prov:category "qualified" ; + prov:editorialNote "This property behaves in spirit like rdf:object; it references the object of a prov:wasInfluencedBy triple."@en ; + prov:editorsDefinition "The prov:entity property references an prov:Entity which influenced a resource. This property applies to an prov:EntityInfluence, which is given by a subproperty of prov:qualifiedInfluence from the influenced prov:Entity, prov:Activity or prov:Agent." ; + prov:inverse "entityOfInfluence" . + +spdx:relationshipType_packageOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "To be used when SPDXRef-A is used as a package as part of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +dcat:DataService rdf:type owl:Class ; + rdfs:comment "A site or end-point providing operations related to the discovery of, access to, or processing functions on, data or related resources."@en , "Umístění či přístupový bod poskytující operace související s hledáním, přistupem k, či výkonem funkcí na datech či souvisejících zdrojích."@cs , "Et websted eller endpoint der udstiller operationer relateret til opdagelse af, adgang til eller behandlende funktioner på data eller relaterede ressourcer."@da , "Un sitio o end-point que provee operaciones relacionadas a funciones de descubrimiento, acceso, o procesamiento de datos o recursos relacionados."@es , "Un sito o end-point che fornisce operazioni relative alla scoperta, all'accesso o all'elaborazione di funzioni su dati o risorse correlate."@it ; + rdfs:label "Servizio di dati"@it , "Data service"@en , "Servicio de datos"@es , "Datatjeneste"@da ; + rdfs:subClassOf dctype:Service , dcat:Resource ; + skos:altLabel "Dataservice"@da ; + skos:changeNote "New class added in DCAT 2.0."@en , "Nová třída přidaná ve verzi DCAT 2.0."@cs , "Ny klasse tilføjet i DCAT 2.0."@da , "Nueva clase añadida en DCAT 2.0."@es , "Nuova classe aggiunta in DCAT 2.0."@it ; + skos:definition "Umístění či přístupový bod poskytující operace související s hledáním, přistupem k, či výkonem funkcí na datech či souvisejících zdrojích."@cs , "Un sitio o end-point que provee operaciones relacionadas a funciones de descubrimiento, acceso, o procesamiento de datos o recursos relacionados."@es , "A site or end-point providing operations related to the discovery of, access to, or processing functions on, data or related resources."@en , "Et site eller endpoint der udstiller operationer relateret til opdagelse af, adgang til eller behandlende funktioner på data eller relaterede ressourcer."@da , "Un sito o end-point che fornisce operazioni relative alla scoperta, all'accesso o all'elaborazione di funzioni su dati o risorse correlate."@it ; + skos:scopeNote "Pokud je dcat:DataService navázána na jednu či více Datových sad, jsou tyto indikovány vlstností dcat:servesDataset."@cs , "El tipo de servicio puede indicarse usando la propiedad dct:type. Su valor puede provenir de un vocabulario controlado, como por ejemplo el vocabulario de servicios de datos espaciales de INSPIRE."@es , "Hvis en dcat:DataService er bundet til en eller flere specifikke datasæt kan dette indikeres ved hjælp af egenskaben dcat:servesDataset. "@da , "Druh služby může být indikován vlastností dct:type. Její hodnota může být z řízeného slovníku, kterým je například slovník typů prostorových datových služeb INSPIRE."@cs , "If a dcat:DataService is bound to one or more specified Datasets, they are indicated by the dcat:servesDataset property."@en , "Si un dcat:DataService está asociado con uno o más conjuntos de datos especificados, dichos conjuntos de datos pueden indicarse con la propiedad dcat:servesDataset."@es , "Il tipo di servizio può essere indicato usando la proprietà dct:type. Il suo valore può essere preso da un vocabolario controllato come il vocabolario dei tipi di servizi per dati spaziali di INSPIRE."@it , "Se un dcat:DataService è associato a uno o più Dataset specificati, questi sono indicati dalla proprietà dcat:serveDataset."@it , "The kind of service can be indicated using the dct:type property. Its value may be taken from a controlled vocabulary such as the INSPIRE spatial data service type vocabulary."@en , "Datatjenestetypen kan indikeres ved hjælp af egenskaben dct:type. Værdien kan tages fra kontrollerede udfaldsrum såsom INSPIRE spatial data service vocabulary."@da . + +spdx:relationshipType + rdf:type owl:ObjectProperty ; + rdfs:comment "Describes the type of relationship between two SPDX elements."@en ; + rdfs:domain spdx:Relationship ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_amendment ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_ancestorOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_buildToolOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_containedBy ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_contains ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_copyOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_dataFile ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_dataFileOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_descendantOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_describedBy ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_describes ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_distributionArtifact ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_documentation ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_dynamicLink ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_expandedFromArchive ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_fileAdded ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_fileDeleted ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_fileModified ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_generatedFrom ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_generates ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_hasPrerequisite ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_metafileOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_optionalComponentOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_other ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_packageOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_patchApplied ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_patchFor ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_prerequisiteFor ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_staticLink ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_testcaseOf ; + owl:onProperty spdx:relationshipType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:relationshipType_variantOf ; + owl:onProperty spdx:relationshipType + ] + ) + ] ; + vs:term_status "stable"@en . + +spdx:packageName rdf:type owl:DatatypeProperty ; + rdfs:comment "Identify the full name of the package as given by Package Originator."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + rdfs:subPropertyOf spdx:name ; + vs:term_status "stable"@en . + +spdx:licenseInfoFromFiles + rdf:type owl:ObjectProperty ; + rdfs:comment "The licensing information that was discovered directly within the package. There will be an instance of this property for each distinct value of alllicenseInfoInFile properties of all files contained in the package.\n\nIf the licenseInfoFromFiles field is not present for a package and filesAnalyzed property for that same pacakge is true or omitted, it implies an equivalent meaning to NOASSERTION."@en ; + rdfs:domain spdx:Package ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( spdx:AnyLicenseInfo + [ rdf:type owl:Restriction ; + owl:hasValue spdx:noassertion ; + owl:onProperty spdx:licenseInfoFromFiles + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:none ; + owl:onProperty spdx:licenseInfoFromFiles + ] + ) + ] ; + vs:term_status "stable"@en . + +vcard:Msg rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Msg"@en ; + rdfs:subClassOf vcard:TelephoneType ; + owl:deprecated true . + +[ rdf:type owl:AllDifferent ; + owl:distinctMembers ( spdx:annotationType_other spdx:annotationType_review ) +] . + +vcard:Intl rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Intl"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +spdx:licenseComments rdf:type owl:DatatypeProperty ; + rdfs:comment "The licenseComments property allows the preparer of the SPDX document to describe why the licensing in spdx:licenseConcluded was chosen."@en ; + rdfs:domain spdx:SpdxItem ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:packageVerificationCodeValue + rdf:type owl:DatatypeProperty ; + rdfs:comment "The actual package verification code as a hex encoded value."@en ; + rdfs:domain spdx:PackageVerificationCode ; + rdfs:range xsd:hexBinary ; + vs:term_status "stable"@en . + +dcterms:creator rdf:type rdf:Property ; + rdfs:comment "An entity responsible for making the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Creator"@en ; + rdfs:subPropertyOf dcterms:contributor , dc:creator ; + dcam:rangeIncludes dcterms:Agent ; + dcterms:description "Recommended practice is to identify the creator with a URI. If this is not possible or feasible, a literal value that identifies the creator may be provided."@en ; + dcterms:issued "2008-01-14"^^xsd:date ; + owl:equivalentProperty foaf:maker . + +dcterms:contributor rdf:type rdf:Property ; + rdfs:comment "An entity responsible for making contributions to the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Contributor"@en ; + rdfs:subPropertyOf dc:contributor ; + dcam:rangeIncludes dcterms:Agent ; + dcterms:description "The guidelines for using names of persons or organizations as creators apply to contributors."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:Car rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Car"@en ; + rdfs:subClassOf vcard:TelephoneType ; + owl:deprecated true . + +spdx:ListedLicense rdf:type owl:Class ; + rdfs:comment "A license which is included in the SPDX License List (http://spdx.org/licenses)."@en ; + rdfs:subClassOf spdx:License ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:deprecatedVersion + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:isDeprecatedLicenseId + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseTextHtml + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:standardLicenseHeaderHtml + ] ; + vs:term_status "stable"@en . + +vcard:hasValue rdf:type owl:ObjectProperty ; + rdfs:comment "Used to indicate the resource value of an object property that requires property parameters"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has value"@en . + +vcard:n rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "name"@en ; + owl:equivalentProperty vcard:hasName . + +vcard:honorific-suffix + rdf:type owl:DatatypeProperty ; + rdfs:comment "The honorific suffix of the name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "honorific suffix"@en ; + rdfs:range xsd:string . + +dcterms:dateSubmitted + rdf:type rdf:Property ; + rdfs:comment "Date of submission of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Submitted"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty. Examples of resources to which a 'Date Submitted' may be relevant include a thesis (submitted to a university department) or an article (submitted to a journal)."@en ; + dcterms:issued "2002-07-13"^^xsd:date . + +prov:editorsDefinition + rdf:type owl:AnnotationProperty ; + rdfs:comment "When the prov-o term does not have a definition drawn from prov-dm, and the prov-o editor provides one."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf prov:definition . + +dcat:compressFormat rdf:type rdf:Property , owl:ObjectProperty ; + rdfs:comment "Il formato di compressione della distribuzione nel quale i dati sono in forma compressa, ad es. per ridurre le dimensioni del file da scaricare."@it , "Formát komprese souboru, ve kterém jsou data poskytována v komprimované podobě, např. ke snížení velikosti souboru ke stažení."@cs , "The compression format of the distribution in which the data is contained in a compressed form, e.g. to reduce the size of the downloadable file."@en , "Kompressionsformatet for distributionen som indeholder data i et komprimeret format, fx for at reducere størrelsen af downloadfilen."@da , "El formato de la distribución en el que los datos están en forma comprimida, e.g. para reducir el tamaño del archivo a bajar."@es ; + rdfs:domain dcat:Distribution ; + rdfs:isDefinedBy <https://www.w3.org/TR/vocab-dcat-2/> ; + rdfs:label "compression format"@en , "kompressionsformat"@da , "formato de compresión"@es , "formato di compressione"@it , "formát komprese"@cs ; + rdfs:range dcterms:MediaType ; + rdfs:subPropertyOf dcterms:format ; + skos:changeNote "Ny egenskab tilføjet i DCAT 2.0."@da , "Nueva propiedad agregada en DCAT 2.0."@es , "Nuova proprietà aggiunta in DCAT 2.0."@it , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "New property added in DCAT 2.0."@en ; + skos:definition "Kompressionsformatet for distributionen som indeholder data i et komprimeret format, fx for at reducere størrelsen af downloadfilen."@da , "Formát komprese souboru, ve kterém jsou data poskytována v komprimované podobě, např. ke snížení velikosti souboru ke stažení."@cs , "El formato de la distribución en el que los datos están en forma comprimida, e.g. para reducir el tamaño del archivo a bajar."@es , "Il formato di compressione della distribuzione nel quale i dati sono in forma compressa, ad es. per ridurre le dimensioni del file da scaricare."@it , "The compression format of the distribution in which the data is contained in a compressed form, e.g. to reduce the size of the downloadable file."@en ; + skos:scopeNote "Questa proprietà deve essere utilizzata quando i file nella distribuzione sono compressi, ad es. in un file ZIP. Il formato DOVREBBE essere espresso usando un tipo di media come definito dal registro dei tipi di media IANA https://www.iana.org/assignments/media-types/, se disponibile."@it , "Denne egenskab kan anvendes når filerne i en distribution er blevet komprimeret, fx i en ZIP-fil. Formatet BØR udtrykkes ved en medietype som defineret i 'IANA media types registry', hvis der optræder en relevant medietype dér: https://www.iana.org/assignments/media-types/."@da , "This property is to be used when the files in the distribution are compressed, e.g. in a ZIP file. The format SHOULD be expressed using a media type as defined by IANA media types registry https://www.iana.org/assignments/media-types/, if available."@en , "Tato vlastnost se použije, když jsou soubory v distribuci komprimovány, např. v ZIP souboru. Formát BY MĚL být vyjádřen pomocí typu média definovaného v registru IANA https://www.iana.org/assignments/media-types/, pokud existuje."@cs , "Esta propiedad se debe usar cuando los archivos de la distribución están comprimidos, por ejemplo en un archivo ZIP. El formato DEBERÍA expresarse usando un 'media type', tales como los definidos en el registro IANA de 'media types' https://www.iana.org/assignments/media-types/, si está disponibles."@es . + +dcat:keyword rdf:type rdf:Property , owl:DatatypeProperty ; + rdfs:comment "Una parola chiave o un'etichetta per descrivere la risorsa."@it , "Et nøgleord eller tag til beskrivelse af en ressource."@da , "Μία λέξη-κλειδί ή μία ετικέτα που περιγράφει το σύνολο δεδομένων."@el , "Un mot-clé ou étiquette décrivant une ressource."@fr , "Una palabra clave o etiqueta que describe un recurso."@es , "Klíčové slovo nebo značka popisující zdroj."@cs , "A keyword or tag describing a resource."@en , "データセットを記述しているキーワードまたはタグ。"@ja , "كلمة مفتاحيه توصف قائمة البيانات"@ar ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "كلمة مفتاحية "@ar , "mot-clés "@fr , "λέξη-κλειδί"@el , "キーワード/タグ"@ja , "nøgleord"@da , "palabra clave"@es , "keyword"@en , "parola chiave"@it , "klíčové slovo"@cs ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dcterms:subject ; + skos:definition "Klíčové slovo nebo značka popisující zdroj."@cs , "データセットを記述しているキーワードまたはタグ。"@ja , "Un mot-clé ou étiquette décrivant une ressource."@fr , "A keyword or tag describing a resource."@en , "Una palabra clave o etiqueta que describe un recurso."@es , "Et nøgleord eller tag til beskrivelse af en ressource."@da , "كلمة مفتاحيه توصف قائمة البيانات"@ar , "Μία λέξη-κλειδί ή μία ετικέτα που περιγράφει το σύνολο δεδομένων."@el , "Una parola chiave o un'etichetta per descrivere la risorsa."@it . + +[ rdf:type owl:Axiom ; + owl:annotatedProperty rdfs:range ; + owl:annotatedSource prov:wasInfluencedBy ; + owl:annotatedTarget [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + prov:definition "influencer: an identifier (o1) for an ancestor entity, activity, or agent that the former depends on;" ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-influence" +] . + +vcard:sort-string rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the string to be used for national-language-specific sorting. Used as a property parameter only."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "sort as"@en ; + rdfs:range xsd:string . + +dcat:centroid rdf:type owl:DatatypeProperty , rdf:Property ; + rdfs:domain dcterms:Location ; + rdfs:label "centroid"@cs , "centroide"@it , "centroide"@es , "centroid"@en , "geometrisk tyngdepunkt"@da ; + rdfs:range rdfs:Literal ; + skos:altLabel "centroide"@da ; + skos:changeNote "Ny egenskab tilføjet i DCAT 2.0."@da , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "Nuova proprietà aggiunta in DCAT 2.0."@it , "Nueva propiedad agregada en DCAT 2.0."@es , "New property added in DCAT 2.0."@en ; + skos:definition "Il centro geografico (centroide) di una risorsa."@it , "Geografický střed (centroid) zdroje."@cs , "Det geometrisk tyngdepunkt (centroid) for en ressource."@da , "El centro geográfico (centroide) de un recurso."@es , "The geographic center (centroid) of a resource."@en ; + skos:scopeNote "Rækkevidden for denne egenskab er bevidst generisk definere med det formål at tillade forskellige geokodninger. Geometrien kan eksempelvis repræsenteres som WKT (geosparql:asWKT [GeoSPARQL]) eller [GML] (geosparql:asGML [GeoSPARQL])."@da , "The range of this property is intentionally generic, with the purpose of allowing different geometry encodings. E.g., the geometry could be encoded with as WKT (geosparql:wktLiteral [GeoSPARQL]) or [GML] (geosparql:asGML [GeoSPARQL])."@en , "Obor hodnot této vlastnosti je úmyslně obecný, aby umožnil různé kódování geometrií. Geometrie by kupříkladu mohla být kódována jako WKT (geosparql:wktLiteral [GeoSPARQL]) či [GML] (geosparql:asGML [GeoSPARQL])."@cs , "El rango de esta propiedad es intencionalmente genérico con el objetivo de permitir distintas codificaciones geométricas. Por ejemplo, la geometría puede codificarse como WKT (geosparql:wktLiteral [GeoSPARQL]) o [GML] (geosparql:asGML [GeoSPARQL])."@es , "Il range di questa proprietà è volutamente generica, con lo scopo di consentire diverse codifiche geometriche. Ad esempio, la geometria potrebbe essere codificata con WKT (geosparql:wktLiteral [GeoSPARQL]) o [GML] (geosparql:asGML [GeoSPARQL])."@it . + +spdx:relationshipType_dataFile + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a data file used in SPDXRef-B. Replaced by relationshipType_dataFileOf"@en ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +dcterms:hasVersion rdf:type rdf:Property ; + rdfs:comment "A related resource that is a version, edition, or adaptation of the described resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Has Version"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "Changes in version imply substantive changes in content rather than differences in format. This property is intended to be used with non-literal values. This property is an inverse property of Is Version Of."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +skos:changeNote rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "change note"@en ; + rdfs:subPropertyOf skos:note ; + skos:definition "A note about a modification to a concept."@en . + +spdx:relationshipType_ancestorOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_ancestorOf expresses that an SPDXElement is an ancestor of (same lineage but pre-dates) the relatedSPDXElement. For example, an upstream File is an ancestor of a modified downstream File"@en ; + vs:term_status "stable"@en . + +vcard:hasUID rdf:type owl:ObjectProperty ; + rdfs:comment "To specify a value that represents a globally unique identifier corresponding to the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has uid"@en . + +prov:Usage rdf:type owl:Class ; + rdfs:comment "An instance of prov:Usage provides additional descriptions about the binary prov:used relation from some prov:Activity to an prov:Entity that it used. For example, :keynote prov:used :podium; prov:qualifiedUsage [ a prov:Usage; prov:entity :podium; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Usage" ; + rdfs:subClassOf prov:InstantaneousEvent , prov:EntityInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Usage"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Usage"^^xsd:anyURI ; + prov:unqualifiedForm prov:used . + +time:TRS rdf:type owl:Class ; + rdfs:comment "A temporal reference system, such as a temporal coordinate system (with an origin, direction, and scale), a calendar-clock combination, or a (possibly hierarchical) ordinal system. \n\nThis is a stub class, representing the set of all temporal reference systems."@en , "Un sistema de referencia temporal, tal como un sistema de coordenadas temporales (con un origen, una dirección y una escala), una combinación calendario-reloj, o un sistema ordinal (posiblemente jerárquico).\n Esta clase comodín representa el conjunto de todos los sistemas de referencia temporal."@es ; + rdfs:label "Temporal Reference System"@en , "sistema de referencia temporal"@es ; + skos:definition "A temporal reference system, such as a temporal coordinate system (with an origin, direction, and scale), a calendar-clock combination, or a (possibly hierarchical) ordinal system. \n\nThis is a stub class, representing the set of all temporal reference systems."@en , "Un sistema de referencia temporal, tal como un sistema de coordenadas temporales (con un origen, una dirección y una escala), una combinación calendario-reloj, o un sistema ordinal (posiblemente jerárquico).\n Esta clase comodín representa el conjunto de todos los sistemas de referencia temporal."@es ; + skos:note "A taxonomy of temporal reference systems is provided in ISO 19108:2002 [ISO19108], including (a) calendar + clock systems; (b) temporal coordinate systems (i.e. numeric offset from an epoch); (c) temporal ordinal reference systems (i.e. ordered sequence of named intervals, not necessarily of equal duration)."@en , "En el ISO 19108:2002 [ISO19108] se proporciona una taxonomía de sistemas de referencia temporal, incluyendo (a) sistemas de calendario + reloj; (b) sistemas de coordenadas temporales (es decir, desplazamiento numérico a partir de una época); (c) sistemas de referencia ordinales temporales (es decir, secuencia ordenada de intervalos nombrados, no necesariamente de igual duración)."@es . + +vcard:given-name rdf:type owl:DatatypeProperty ; + rdfs:comment "The given name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "given name"@en ; + rdfs:range xsd:string . + +dcterms:source rdf:type rdf:Property ; + rdfs:comment "A related resource from which the described resource is derived."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Source"@en ; + rdfs:subPropertyOf dc:source , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. The described resource may be derived from the related resource in whole or in part. Best practice is to identify the related resource by means of a URI or a string conforming to a formal identification system."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:checksumAlgorithm_blake2b384 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was BLAKE2b-384."@en ; + vs:term_status "stable"@en . + +spdx:licenseExceptionText + rdf:type owl:DatatypeProperty ; + rdfs:comment "Full text of the license exception."@en ; + rdfs:domain spdx:LicenseException ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +dcterms:PhysicalMedium + rdf:type rdfs:Class ; + rdfs:comment "A physical material or carrier."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Physical Medium"@en ; + rdfs:subClassOf dcterms:MediaType ; + dcterms:description "Examples include paper, canvas, or DVD."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:relationshipType_testOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is used for testing SPDXRef-B."@en ; + vs:term_status "stable"@en . + +vcard:value rdf:type owl:DatatypeProperty ; + rdfs:comment "Used to indicate the literal value of a data property that requires property parameters"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "value"@en . + +spdx:relationshipType_generates + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_generates expresses that an SPDXElement generates the relatedSPDXElement. For example, a source File generates a binary File."@en ; + vs:term_status "stable"@en . + +spdx:referenceCategory + rdf:type owl:ObjectProperty ; + rdfs:comment "Category for the external reference"@en ; + rdfs:domain spdx:ExternalRef ; + rdfs:range spdx:ReferenceCategory ; + vs:term_status "stable"@en . + +spdx:relationshipType_fileDeleted + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_fileDeleted expresses that the SPDXElement is a package where the relatedSPDXElement file has been removed. For example, a package has been patched to remove a file a file (the relatedSPDXElement resulting in the patched package (the SPDXElement). This relationship is typically used to express the result of a patched package when the actual patchfile is not present."@en ; + vs:term_status "stable"@en . + +spdx:checksumAlgorithm_md6 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was MD6"@en ; + vs:term_status "stable" . + +dcat:temporalResolution + rdf:type owl:DatatypeProperty ; + rdfs:comment "minimum time period resolvable in a dataset."@en , "minimální doba trvání rozlišitelná v datové sadě."@cs , "período de tiempo mínimo en el conjunto de datos."@es , "mindste tidsperiode der kan resolveres i datasættet."@da , "periodo di tempo minimo risolvibile in un set di dati."@it ; + rdfs:label "resolución temporal"@es , "tidslig opløsning"@da , "temporal resolution"@en , "časové rozlišení"@cs , "risoluzione temporale"@it ; + rdfs:range xsd:duration ; + skos:changeNote "Nueva propiedad añadida en DCAT 2.0."@es , "New property added in DCAT 2.0."@en , "Nuova proprietà aggiunta in DCAT 2.0."@it , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs ; + skos:definition "minimální doba trvání rozlišitelná v datové sadě."@cs , "período de tiempo mínimo en el conjunto de datos."@es , "minimum time period resolvable in a dataset."@en , "periodo di tempo minimo risolvibile in un set di dati."@it , "mindste tidsperiode der kan resolveres i datasættet."@da ; + skos:editorialNote "Může se vyskytnout v popisu Datové sady nebo Distribuce, takže nebyl specifikován definiční obor."@cs , "Might appear in the description of a Dataset or a Distribution, so no domain is specified."@en , "Kan optræde i forbindelse med beskrivelse af datasættet eller datasætditributionen, så der er ikke angivet et domæne for egenskaben."@da ; + skos:scopeNote "Alternative temporal resolutions might be provided as different dataset distributions."@en , "Různá časová rozlišení mohou být poskytována jako různé distribuce datové sady."@cs , "Si el conjunto de datos es una serie temporal, debe corresponder al espaciado de los elementos de la serie. Para otro tipo de conjuntos de datos, esta propiedad indicará usualmente la menor diferencia de tiempo entre elementos en el dataset."@es , "Alternative tidslige opløsninger kan leveres som forskellige datasætdistributioner."@da , "Pokud je datová sada časovou řadou, měla by tato vlastnost odpovídat rozestupu položek v řadě. Pro ostatní druhy datových sad bude tato vlastnost obvykle indikovat nejmenší časovou vzdálenost mezi položkami této datové sady."@cs , "Distintas distribuciones del conjunto de datos pueden tener resoluciones temporales diferentes."@es , "If the dataset is a time-series this should correspond to the spacing of items in the series. For other kinds of dataset, this property will usually indicate the smallest time difference between items in the dataset."@en , "Se il set di dati è una serie temporale, questo dovrebbe corrispondere alla spaziatura degli elementi della serie. Per altri tipi di set di dati, questa proprietà di solito indica la più piccola differenza di tempo tra gli elementi nel set di dati."@it , "Hvis datasættet er en tidsserie, så bør denne egenskab svare til afstanden mellem elementerne i tidsserien. For andre typer af datasæt indikerer denne egenskab den mindste tidsforskel mellem elementer i datasættet."@da , "Risoluzioni temporali alternative potrebbero essere fornite come diverse distribuzioni di set di dati."@it . + +spdx:externalReferenceSite + rdf:type owl:DatatypeProperty ; + rdfs:comment "Website for the maintainers of the external reference site"@en ; + rdfs:domain spdx:ReferenceType ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +spdx:relationshipType_testcaseOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B."@en ; + vs:term_status "stable"@en . + +time:intervalAfter rdf:type owl:ObjectProperty ; + rdfs:comment "If a proper interval T1 is intervalAfter another proper interval T2, then the beginning of T1 is after the end of T2."@en , "Si un intervalo propio T1 es posterior a otro intervalo propio T2, entonces el principio de T1 está después que el final de T2." ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval after"@en , "intervalo posterior"@es ; + rdfs:range time:ProperInterval ; + rdfs:subPropertyOf time:after , time:intervalDisjoint ; + owl:inverseOf time:intervalBefore ; + skos:definition "If a proper interval T1 is intervalAfter another proper interval T2, then the beginning of T1 is after the end of T2."@en , "Si un intervalo propio T1 es posterior a otro intervalo propio T2, entonces el principio de T1 está después que el final de T2."@es . + +spdx:none rdf:type owl:NamedIndividual ; + rdfs:comment "Individual to indicate that no value is applicable for the Object." . + +locn:postCode rdf:type rdf:Property ; + rdfs:comment "The post code (a.k.a postal code, zip code etc.). Post codes are common elements in many countries' postal address systems. The domain of locn:postCode is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "post code"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:postCode" ; + vs:term_status "testing"@en . + +vcard:X400 rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "X400"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +spdx:checksumAlgorithm_sha3_256 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA3-256."@en ; + vs:term_status "stable"@en . + +spdx:relationshipType_distributionArtifact + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_distributionArtifact expresses that distributing the SPDXElement requires that the relatedSPDXElement also be distributed. For example, distributing a binary File may require that a source tarball (another File) be made available with the distribuiton. "@en ; + vs:term_status "stable"@en . + +vcard:hasLanguage rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the language data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has language"@en . + +vcard:Work rdf:type owl:Class ; + rdfs:comment "This implies that the property is related to an individual's work place"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Work"@en ; + rdfs:subClassOf vcard:Type . + +time:DateTimeInterval + rdf:type owl:Class ; + rdfs:comment "DateTimeInterval is a subclass of ProperInterval, defined using the multi-element DateTimeDescription."@en , "'intervalo de fecha-hora' es una subclase de 'intervalo propio', definida utilizando el multi-elemento 'descripción de fecha-hora'."@es ; + rdfs:label "intervalo de fecha-hora"@es , "Date-time interval"@en ; + rdfs:subClassOf time:ProperInterval ; + skos:definition "DateTimeInterval is a subclass of ProperInterval, defined using the multi-element DateTimeDescription."@en , "'intervalo de fecha-hora' es una subclase de 'intervalo propio', definida utilizando el multi-elemento 'descripción de fecha-hora'."@es ; + skos:note ":DateTimeInterval can only be used for an interval whose limits coincide with a date-time element aligned to the calendar and timezone indicated. For example, while both have a duration of one day, the 24-hour interval beginning at midnight at the beginning of 8 May in Central Europe can be expressed as a :DateTimeInterval, but the 24-hour interval starting at 1:30pm cannot."@en , "'intervalo de fecha-hora' se puede utilizar sólo para un intervalo cuyos límites coinciden con un elemento de fecha-hora alineados con el calendario y la zona horaria indicados. Por ejemplo, aunque ambos tienen una duración de un día, el intervalo de 24 horas que empieza en la media noche del comienzo del 8 mayo en Europa Central se puede expresar como un 'intervalo de fecha-hora', el intervalo de 24 horas que empieza a las 1:30pm no."@es . + +vcard:org rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped. Use the organization-name data property."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "organization"@en ; + owl:equivalentProperty vcard:organization-name . + +rdfs:isDefinedBy rdf:type owl:AnnotationProperty . + +vcard:Tel rdf:type owl:Class ; + rdfs:comment "This class is deprecated. Use the hasTelephone object property."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Tel"@en ; + owl:deprecated true . + +prov:wasAssociatedWith + rdf:type owl:ObjectProperty ; + rdfs:comment "An prov:Agent that had some (unspecified) responsibility for the occurrence of this prov:Activity."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasAssociatedWith" ; + rdfs:range prov:Agent ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedAssociation prov:agent ) ; + owl:propertyChainAxiom ( prov:qualifiedAssociation prov:agent ) ; + prov:category "starting-point" ; + prov:component "agents-responsibility" ; + prov:inverse "wasAssociateFor" ; + prov:qualifiedForm prov:Association , prov:qualifiedAssociation . + +vcard:PCS rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "PCS"@en ; + rdfs:subClassOf vcard:TelephoneType ; + owl:deprecated true . + +prov:Generation rdf:type owl:Class ; + rdfs:comment "An instance of prov:Generation provides additional descriptions about the binary prov:wasGeneratedBy relation from a generated prov:Entity to the prov:Activity that generated it. For example, :cake prov:wasGeneratedBy :baking; prov:qualifiedGeneration [ a prov:Generation; prov:activity :baking; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Generation" ; + rdfs:subClassOf prov:ActivityInfluence , prov:InstantaneousEvent ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Generation"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Generation"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasGeneratedBy . + +dcterms:isRequiredBy rdf:type rdf:Property ; + rdfs:comment "A related resource that requires the described resource to support its function, delivery, or coherence."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Is Required By"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Requires."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +dcterms:mediator rdf:type rdf:Property ; + rdfs:comment "An entity that mediates access to the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Mediator"@en ; + rdfs:subPropertyOf dcterms:audience ; + dcam:rangeIncludes dcterms:AgentClass ; + dcterms:description "In an educational context, a mediator might be a parent, teacher, teaching assistant, or care-giver."@en ; + dcterms:issued "2001-05-21"^^xsd:date . + +adms:Identifier rdf:type owl:Class ; + rdfs:comment "This is based on the UN/CEFACT Identifier class."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "Identifier"@en . + +dcterms:URI rdf:type rdfs:Datatype ; + rdfs:comment "The set of identifiers constructed according to the generic syntax for Uniform Resource Identifiers as specified by the Internet Engineering Task Force."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "URI"@en ; + rdfs:seeAlso <http://www.ietf.org/rfc/rfc3986.txt> ; + dcterms:issued "2000-07-11"^^xsd:date . + +locn:adminUnitL2 rdf:type rdf:Property ; + rdfs:comment "The region of the address, usually a county, state or other such area that typically encompasses several localities. The domain of locn:adminUnitL2 is locn:Address and the range is a literal, conceptually defined by the INSPIRE Geographical Name data type."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "admin unit level 2"@en ; + dcterms:identifier "locn:adminUnitL2" ; + vs:term_status "testing"@en . + +dcterms:rights rdf:type rdf:Property ; + rdfs:comment "Information about rights held in and over the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Rights"@en ; + rdfs:subPropertyOf dc:rights ; + dcam:rangeIncludes dcterms:RightsStatement ; + dcterms:description "Typically, rights information includes a statement about various property rights associated with the resource, including intellectual property rights. Recommended practice is to refer to a rights statement with a URI. If this is not possible or feasible, a literal value (name, label, or short text) may be provided."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:nickname rdf:type owl:DatatypeProperty ; + rdfs:comment "The nick name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "nickname"@en ; + rdfs:range xsd:string . + +spdx:relationshipType_fileModified + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_fileModified expresses that the SPDXElement is a file which is a modified version of the relatedSPDXElement file. For example, a file (the SPDXElement) has been patched to modify the contents of the original file (the SPDXElement). This relationship is typically used to express the result of a patched package when the actual patchfile is not present."@en ; + vs:term_status "stable"@en . + +adms:status rdf:type owl:ObjectProperty ; + rdfs:comment "The status of the Asset in the context of a particular workflow process."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "status"@en ; + rdfs:range skos:Concept . + +prov:Agent rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Agent" ; + owl:disjointWith prov:InstantaneousEvent ; + prov:category "starting-point" ; + prov:component "agents-responsibility" ; + prov:definition "An agent is something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent's activity. "@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Agent"^^xsd:anyURI . + +spdx:ChecksumAlgorithm + rdf:type owl:Class ; + rdfs:comment "Algorighm for Checksums."@en ; + vs:term_status "stable"@en . + +skos:narrowMatch rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has narrower match"@en ; + rdfs:subPropertyOf skos:mappingRelation , skos:narrower ; + owl:inverseOf skos:broadMatch ; + skos:definition "skos:narrowMatch is used to state a hierarchical mapping link between two conceptual resources in different concept schemes."@en . + +dcat:themeTaxonomy rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "Il sistema di organizzazione della conoscenza (KOS) usato per classificare i dataset del catalogo."@it , "The knowledge organization system (KOS) used to classify catalog's datasets."@en , "Le systhème d'ogranisation de connaissances utilisé pour classifier les jeux de données du catalogue."@fr , "El sistema de organización del conocimiento utilizado para clasificar conjuntos de datos de catálogos."@es , "Vidensorganiseringssystem (KOS) som anvendes til at klassificere datasæt i kataloget."@da , "Systém organizace znalostí (KOS) použitý pro klasifikaci datových sad v katalogu."@cs , "カタログのデータセットを分類するために用いられる知識組織化体系(KOS;knowledge organization system)。"@ja , "لائحة التصنيفات المستخدمه لتصنيف قوائم البيانات ضمن الفهرس"@ar , "Το σύστημα οργάνωσης γνώσης που χρησιμοποιείται για την κατηγοριοποίηση των συνόλων δεδομένων του καταλόγου."@el ; + rdfs:domain dcat:Catalog ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "taxonomie de thèmes"@fr , "tassonomia dei temi"@it , "テーマ"@ja , "theme taxonomy"@en , "قائمة التصنيفات"@ar , "Ταξινομία θεματικών κατηγοριών."@el , "emnetaksonomi"@da , "taxonomie témat"@cs , "taxonomía de temas"@es ; + rdfs:range rdfs:Resource ; + sdo:rangeIncludes skos:ConceptScheme , owl:Ontology , skos:Collection ; + skos:altLabel "temataksonomi"@da ; + skos:definition "Vidensorganiseringssystem (KOS) som anvendes til at klassificere datasæt i kataloget."@da , "لائحة التصنيفات المستخدمه لتصنيف قوائم البيانات ضمن الفهرس"@ar , "El sistema de organización del conocimiento utilizado para clasificar conjuntos de datos de catálogos."@es , "Systém organizace znalostí (KOS) použitý pro klasifikaci datových sad v katalogu."@cs , "カタログのデータセットを分類するために用いられる知識組織化体系(KOS;knowledge organization system)。"@ja , "The knowledge organization system (KOS) used to classify catalog's datasets."@en , "Il sistema di organizzazione della conoscenza (KOS) usato per classificare i dataset del catalogo."@it , "Το σύστημα οργάνωσης γνώσης που χρησιμοποιείται για την κατηγοριοποίηση των συνόλων δεδομένων του καταλόγου."@el , "Le systhème d'ogranisation de connaissances utilisé pour classifier les jeux de données du catalogue."@fr ; + skos:scopeNote "Det anbefales at taksonomien organiseres i et skos:ConceptScheme, skos:Collection, owl:Ontology eller lignende, som giver mulighed for at ethvert medlem af taksonomien kan forsynes med en IRI og udgives som linked-data."@da , "It is recommended that the taxonomy is organized in a skos:ConceptScheme, skos:Collection, owl:Ontology or similar, which allows each member to be denoted by an IRI and published as linked-data."@en , "Je doporučeno, aby byla taxonomie vyjádřena jako skos:ConceptScheme, skos:Collection, owl:Ontology nebo podobné, aby mohla být každá položka identifikována pomocí IRI a publikována jako propojená data."@cs , "Se recomienda que la taxonomía se organice como un skos:ConceptScheme, skos:Collection, owl:Ontology o similar, los cuáles permiten que cada miembro se denote con una IRI y se publique como datos enlazados."@es , "Si raccomanda che la tassonomia sia organizzata in uno skos:ConceptScheme, skos:Collection, owl:Ontology o simili, che permette ad ogni membro di essere indicato da un IRI e pubblicato come linked-data."@it . + +spdx:packageFileName rdf:type owl:DatatypeProperty ; + rdfs:comment "The base name of the package file name. For example, zlib-1.2.5.tar.gz."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +prov:influenced rdf:type owl:ObjectProperty ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "influenced" ; + owl:inverseOf prov:wasInfluencedBy ; + prov:category "expanded" ; + prov:component "agents-responsibility" ; + prov:inverse "wasInfluencedBy" ; + prov:sharesDefinitionWith prov:Influence . + +[ rdf:type owl:Axiom ; + rdfs:comment "Attribution is a particular case of trace (see http://www.w3.org/TR/prov-dm/#concept-trace), in the sense that it links an entity to the agent that ascribed it." ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasAttributedTo ; + owl:annotatedTarget prov:wasInfluencedBy ; + prov:definition "IF wasAttributedTo(e2,ag1,aAttr) holds, THEN wasInfluencedBy(e2,ag1) also holds. " +] . + +dcterms:accessRights rdf:type rdf:Property ; + rdfs:comment "Information about who access the resource or an indication of its security status."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Access Rights"@en ; + rdfs:subPropertyOf dc:rights , dcterms:rights ; + dcam:rangeIncludes dcterms:RightsStatement ; + dcterms:description "Access Rights may include information regarding access or restrictions based on privacy, security, or other policies."@en ; + dcterms:issued "2003-02-15"^^xsd:date . + +spdx:checksumAlgorithm_sha384 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA384"@en ; + vs:term_status "stable"@en . + +[ rdf:type owl:Axiom ; + rdfs:comment "Quotation is a particular case of derivation (see http://www.w3.org/TR/prov-dm/#term-quotation) in which an entity is derived from an original entity by copying, or \"quoting\", some or all of it. " ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasQuotedFrom ; + owl:annotatedTarget prov:wasDerivedFrom +] . + +skos:hiddenLabel rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:comment "The range of skos:hiddenLabel is the class of RDF plain literals."@en , "skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise disjoint properties."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "hidden label"@en ; + rdfs:subPropertyOf rdfs:label ; + skos:definition "A lexical label for a resource that should be hidden when generating visual displays of the resource, but should still be accessible to free text search operations."@en . + +prov:Plan rdf:type owl:Class ; + rdfs:comment "There exist no prescriptive requirement on the nature of plans, their representation, the actions or steps they consist of, or their intended goals. Since plans may evolve over time, it may become necessary to track their provenance, so plans themselves are entities. Representing the plan explicitly in the provenance can be useful for various tasks: for example, to validate the execution as represented in the provenance record, to manage expectation failures, or to provide explanations."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Plan" ; + rdfs:subClassOf prov:Entity ; + prov:category "expanded" , "qualified" ; + prov:component "agents-responsibility" ; + prov:definition "A plan is an entity that represents a set of actions or steps intended by one or more agents to achieve some goals." ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Association"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Association"^^xsd:anyURI . + +vcard:anniversary rdf:type owl:DatatypeProperty ; + rdfs:comment "The date of marriage, or equivalent, of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "anniversary"@en ; + rdfs:range [ rdf:type rdfs:Datatype ; + owl:unionOf ( xsd:dateTime xsd:gYear ) + ] . + +prov:inverse rdf:type owl:AnnotationProperty ; + rdfs:comment "PROV-O does not define all property inverses. The directionalities defined in PROV-O should be given preference over those not defined. However, if users wish to name the inverse of a PROV-O property, the local name given by prov:inverse should be used."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:seeAlso <http://www.w3.org/TR/prov-o/#names-of-inverse-properties> . + +dcterms:accrualPeriodicity + rdf:type rdf:Property ; + rdfs:comment "The frequency with which items are added to a collection."@en ; + rdfs:domain dctype:Collection ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Accrual Periodicity"@en ; + dcam:rangeIncludes dcterms:Frequency ; + dcterms:description "Recommended practice is to use a value from the Collection Description Frequency Vocabulary [[DCMI-COLLFREQ](https://dublincore.org/groups/collections/frequency/)]."@en ; + dcterms:issued "2005-06-13"^^xsd:date . + +vs:term_status rdf:type owl:AnnotationProperty . + +skos:ConceptScheme rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "Concept Scheme"@en ; + owl:disjointWith skos:Concept ; + skos:definition "A set of concepts, optionally including statements about semantic relationships between those concepts."@en ; + skos:example "Thesauri, classification schemes, subject heading lists, taxonomies, 'folksonomies', and other types of controlled vocabulary are all examples of concept schemes. Concept schemes are also embedded in glossaries and terminologies."@en ; + skos:scopeNote "A concept scheme may be defined to include concepts from different sources."@en . + +dcterms:ProvenanceStatement + rdf:type rdfs:Class ; + rdfs:comment "Any changes in ownership and custody of a resource since its creation that are significant for its authenticity, integrity, and interpretation."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Provenance Statement"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcterms:identifier rdf:type rdf:Property ; + rdfs:comment "An unambiguous reference to the resource within a given context."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Identifier"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:identifier ; + dcterms:description "Recommended practice is to identify the resource by means of a string conforming to an identification system. Examples include International Standard Book Number (ISBN), Digital Object Identifier (DOI), and Uniform Resource Name (URN). Persistent identifiers should be provided as HTTP URIs."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +time:hasTRS rdf:type owl:FunctionalProperty , owl:ObjectProperty ; + rdfs:comment "El sistema de referencia temporal utilizado por una posición temporal o descripción de extensión."@es , "The temporal reference system used by a temporal position or extent description. "@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( time:TemporalPosition time:GeneralDurationDescription ) + ] ; + rdfs:label "sistema de referencia temporal utilizado"@es , "Temporal reference system used"@en ; + rdfs:range time:TRS ; + skos:definition "The temporal reference system used by a temporal position or extent description. "@en , "El sistema de referencia temporal utilizado por una posición temporal o descripción de extensión."@es . + +spdx:timestamp rdf:type owl:DatatypeProperty ; + rdfs:comment "Timestamp"@en ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:dateTime . + +spdx:standardLicenseHeaderHtml + rdf:type owl:DatatypeProperty ; + rdfs:comment "HTML representation of the standard license header"@en ; + rdfs:domain spdx:ListedLicense ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +vcard:Organization rdf:type owl:Class ; + rdfs:comment "An object representing an organization. An organization is a single entity, and might represent a business or government, a department or division within a business or government, a club, an association, or the like.\n"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Organization"@en ; + rdfs:subClassOf vcard:Kind . + +spdx:Review rdf:type owl:Class ; + rdfs:comment "This class has been deprecated in favor of an Annotation with an Annotation type of review."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:dateTime ; + owl:onProperty spdx:reviewDate ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:reviewer + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment + ] ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +spdx:checksumAlgorithm_sha224 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA224"@en ; + vs:term_status "stable"@en . + +spdx:checksumAlgorithm_sha1 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA-1" ; + vs:term_status "stable" . + +prov:aq rdf:type owl:AnnotationProperty ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +spdx:Snippet rdf:type owl:Class ; + rdfs:comment "The set of bytes in a file. The name of the snippet is the name of the file appended with the byte range in parenthesis (ie: \"./file/name(2145:5532)\")"@en ; + rdfs:subClassOf spdx:SpdxItem ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:licenseInfoInSnippet + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass <http://www.w3.org/2009/pointers#StartEndPointer> ; + owl:onProperty spdx:range + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:File ; + owl:onProperty spdx:snippetFromFile ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +time:inXSDDateTimeStamp + rdf:type owl:DatatypeProperty ; + rdfs:comment "Position of an instant, expressed using xsd:dateTimeStamp"@en , "Posición de un instante, expresado utilizando xsd:dateTimeStamp."@es ; + rdfs:domain time:Instant ; + rdfs:label "in XSD Date-Time-Stamp"@en , "en fecha-sello de tiempo XSD"@es ; + rdfs:range xsd:dateTimeStamp ; + skos:definition "Position of an instant, expressed using xsd:dateTimeStamp"@en , "Posición de un instante, expresado utilizando xsd:dateTimeStamp."@es . + +dcat:bbox rdf:type rdf:Property , owl:DatatypeProperty ; + rdfs:domain dcterms:Location ; + rdfs:label "bounding box"@da , "bounding box"@en , "cuadro delimitador"@es , "ohraničení oblasti"@cs , "quadro di delimitazione"@it ; + rdfs:range rdfs:Literal ; + skos:changeNote "Ny egenskab tilføjet i DCAT 2.0."@da , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "Propiedad nueva agregada en DCAT 2.0."@es , "New property added in DCAT 2.0."@en , "Nuova proprietà aggiunta in DCAT 2.0."@it ; + skos:definition "Den geografiske omskrevne firkant af en ressource."@da , "Il riquadro di delimitazione geografica di una risorsa."@it , "Ohraničení geografické oblasti zdroje."@cs , "El cuadro delimitador geográfico para un recurso."@es , "The geographic bounding box of a resource."@en ; + skos:scopeNote "El rango de esta propiedad es intencionalmente genérico con el propósito de permitir distintas codificaciones geométricas. Por ejemplo, la geometría puede ser codificada como WKT (geosparql:wktLiteral [GeoSPARQL]) o [GML] (geosparql:asGML [GeoSPARQL])."@es , "The range of this property is intentionally generic, with the purpose of allowing different geometry encodings. E.g., the geometry could be encoded with as WKT (geosparql:wktLiteral [GeoSPARQL]) or [GML] (geosparql:asGML [GeoSPARQL])."@en , "Il range di questa proprietà è volutamente generica, con lo scopo di consentire diverse codifiche geometriche. Ad esempio, la geometria potrebbe essere codificata con WKT (geosparql:wktLiteral [GeoSPARQL]) o [GML] (geosparql:asGML [GeoSPARQL])."@it , "Obor hodnot této vlastnosti je úmyslně obecný, aby umožnil různé kódování geometrií. Geometrie by kupříkladu mohla být kódována jako WKT (geosparql:wktLiteral [GeoSPARQL]) či [GML] (geosparql:asGML [GeoSPARQL])."@cs , "Rækkevidden for denne egenskab er bevidst generisk defineret med det formål at tillade forskellige kodninger af geometrier. Geometrien kan eksempelvis repræsenteres som WKT (geosparql:asWKT [GeoSPARQL]) eller [GML] (geosparql:asGML [GeoSPARQL])."@da . + +spdx:SimpleLicensingInfo + rdf:type owl:Class ; + rdfs:comment "The SimpleLicenseInfo class includes all resources that represent simple, atomic, licensing information."@en ; + rdfs:subClassOf spdx:AnyLicenseInfo ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:CrossRef ; + owl:onProperty spdx:crossRef + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:anyURI ; + owl:onProperty rdfs:seeAlso + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseId ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:name + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment + ] ; + vs:term_status "stable"@en . + +locn:Geometry rdf:type rdfs:Class ; + rdfs:comment "The locn:Geometry class provides the means to identify a location as a point, line, polygon, etc. expressed using coordinates in some coordinate reference system."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "Geometry"@en ; + dcterms:identifier "locn:Geometry" ; + vann:usageNote "This class defines the notion of \"geometry\" at the conceptual level, and it shall be encoded by using different formats (see usage note of the locn:geometry property)."@en ; + vs:term_status "unstable"@en . + +time:intervalDuring rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 está durante otro intervalo propio T2, entonces del principio de T1 está después del principio de T2, y el final de T1 está antes que el final de T2."@es , "If a proper interval T1 is intervalDuring another proper interval T2, then the beginning of T1 is after the beginning of T2, and the end of T1 is before the end of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo durante"@es , "interval during"@en ; + rdfs:range time:ProperInterval ; + rdfs:subPropertyOf time:intervalIn ; + owl:inverseOf time:intervalContains ; + skos:definition "Si un intervalo propio T1 está durante otro intervalo propio T2, entonces del principio de T1 está después del principio de T2, y el final de T1 está antes que el final de T2."@es , "If a proper interval T1 is intervalDuring another proper interval T2, then the beginning of T1 is after the beginning of T2, and the end of T1 is before the end of T2."@en . + +spdx:relationshipType_contains + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_contains expresses that an SPDXElement contains the relatedSPDXElement. For example, a Package contains a File. (relationshipType_contains introduced in SPDX 2.0 deprecates property 'hasFile' from SPDX 1.2)"@en ; + vs:term_status "stable"@en . + +dcat:catalog rdf:type owl:ObjectProperty ; + rdfs:comment "Un catálogo cuyo contenido es de interés en el contexto del catálogo que está siendo descripto."@es , "Un catalogo i cui contenuti sono di interesse nel contesto di questo catalogo."@it , "Et katalog hvis indhold er relevant i forhold til det aktuelle katalog."@da , "Katalog, jehož obsah je v kontextu tohoto katalogu zajímavý."@cs , "A catalog whose contents are of interest in the context of this catalog."@en ; + rdfs:domain dcat:Catalog ; + rdfs:label "catálogo"@es , "catalogo"@it , "katalog"@cs , "katalog"@da , "catalog"@en ; + rdfs:range dcat:Catalog ; + rdfs:subPropertyOf rdfs:member , dcterms:hasPart ; + skos:altLabel "har delkatalog"@da ; + skos:changeNote "Nuova proprietà aggiunta in DCAT 2.0."@it , "New property added in DCAT 2.0."@en , "Nueva propiedad agregada en DCAT 2.0."@es , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs ; + skos:definition "Un catalogo i cui contenuti sono di interesse nel contesto di questo catalogo."@it , "Katalog, jehož obsah je v kontextu tohoto katalogu zajímavý."@cs , "Et katalog hvis indhold er relevant i forhold til det aktuelle katalog."@da , "Un catálogo cuyo contenido es de interés en el contexto del catálogo que está siendo descripto."@es , "A catalog whose contents are of interest in the context of this catalog."@en . + +time:weeks rdf:type owl:DatatypeProperty ; + rdfs:comment "length of, or element of the length of, a temporal extent expressed in weeks"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en semanas."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "weeks duration"@en , "duración en semanas"@es ; + rdfs:range xsd:decimal . + +<http://data.europa.eu/r5r#CatalogRecord_Shape> + rdf:type sh:NodeShape ; + sh:name "Catalog Record"@en ; + sh:property [ sh:maxCount 1 ; + sh:minCount 1 ; + sh:node <http://data.europa.eu/r5r#DcatResource_Shape> ; + sh:path foaf:primaryTopic ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:source ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:language ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path adms:status ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcterms:description ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:minCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:modified ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:conformsTo ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:issued ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:CatalogRecord . + +spdx:SpdxElement rdf:type owl:Class ; + rdfs:comment "An SpdxElement is any thing described in SPDX, either a document or an SpdxItem. SpdxElements can be related to other SpdxElements."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Annotation ; + owl:onProperty spdx:annotation + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Relationship ; + owl:onProperty spdx:relationship + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:name ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment + ] ; + vs:term_status "stable" . + +time:monthOfYear rdf:type owl:ObjectProperty ; + rdfs:comment "The month of the year, whose value is a member of the class time:MonthOfYear"@en , "El mes del año, cuyo valor es un miembro de la clase 'mes del año'."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "month of year"@en , "mes del año"@es ; + rdfs:range time:MonthOfYear ; + skos:definition "The month of the year, whose value is a member of the class time:MonthOfYear"@en , "El mes del año, cuyo valor es un miembro de la clase 'mes del año'."@es ; + skos:editorialNote "Característica arriesgada - añadida en la revisión de 2017, y todavía no ampliamente utilizada."@es , "Feature at risk - added in 2017 revision, and not yet widely used. "@en . + +skos:member rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:domain skos:Collection ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has member"@en ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( skos:Concept skos:Collection ) + ] ; + skos:definition "Relates a collection to one of its members."@en . + +vcard:organization-name + rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the organizational name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "organization name"@en ; + rdfs:range xsd:string . + +dcterms:hasPart rdf:type rdf:Property ; + rdfs:comment "A related resource that is included either physically or logically in the described resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Has Part"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Is Part Of."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +prov:qualifiedPrimarySource + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Entity prov:hadPrimarySource Entity :e, then it can qualify how using prov:qualifiedPrimarySource [ a prov:PrimarySource; prov:entity :e; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedPrimarySource" ; + rdfs:range prov:PrimarySource ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "qualifiedSourceOf" ; + prov:sharesDefinitionWith prov:PrimarySource ; + prov:unqualifiedForm prov:hadPrimarySource . + +time:hour rdf:type owl:DatatypeProperty ; + rdfs:comment "Hour position in a calendar-clock system."@en , "Posición de hora en un sistema calendario-reloj."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "hour"@en , "hora"@es ; + rdfs:range xsd:nonNegativeInteger ; + skos:definition "Hour position in a calendar-clock system."@en , "Posición de hora en un sistema calendario-reloj."@es . + +dcat:endDate rdf:type rdf:Property , owl:DatatypeProperty ; + rdfs:domain dcterms:PeriodOfTime ; + rdfs:label "data di fine"@it , "datum konce"@cs , "slutdato"@da , "end date"@en , "fecha final"@es ; + rdfs:range rdfs:Literal ; + skos:altLabel "sluttidspunkt"@da ; + skos:changeNote "New property added in DCAT 2.0."@en , "Nueva propiedad agregada en DCAT 2.0."@es , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "Nuova proprietà aggiunta in DCAT 2.0."@it , "Ny egenskab i DCAT 2.0."@da ; + skos:definition "El fin del período."@es , "Slutningen på perioden."@da , "La fine del periodo."@it , "Konec doby trvání."@cs , "The end of the period."@en ; + skos:scopeNote "La range di questa proprietà è volutamente generico, con lo scopo di consentire diversi livelli di precisione temporale per specificare la fine di un periodo. Ad esempio, può essere espresso con una data (xsd:date), una data e un'ora (xsd:dateTime), o un anno (xsd:gYear)."@it , "Obor hodnot této vlastnosti je úmyslně obecný, aby umožnil různé úrovně časového rozlišení pro specifikaci konce doby trvání. Ten může být kupříkladu vyjádřen datumem (xsd:date), datumem a časem (xsd:dateTime) či rokem (xsd:gYear)."@cs , "Rækkeviden for denne egenskab er bevidst generisk defineret med det formål at tillade forskellige niveauer af tidslig præcision ifm. angivelse af slutdatoen for en periode. Den kan eksempelvis udtrykkes som en dato (xsd:date), en dato og et tidspunkt (xsd:dateTime), eller et årstal (xsd:gYear)."@da , "El rango de esta propiedad es intencionalmente genérico con el propósito de permitir distintos niveles de precisión temporal para especificar el fin del período. Por ejemplo, puede expresarse como una fecha (xsd:date), una fecha y un tiempo (xsd:dateTime), o un año (xsd:gYear)."@es , "The range of this property is intentionally generic, with the purpose of allowing different level of temporal precision for specifying the end of a period. E.g., it can be expressed with a date (xsd:date), a date and time (xsd:dateTime), or a year (xsd:gYear)."@en . + +prov:End rdf:type owl:Class ; + rdfs:comment "An instance of prov:End provides additional descriptions about the binary prov:wasEndedBy relation from some ended prov:Activity to an prov:Entity that ended it. For example, :ball_game prov:wasEndedBy :buzzer; prov:qualifiedEnd [ a prov:End; prov:entity :buzzer; :foo :bar; prov:atTime '2012-03-09T08:05:08-05:00'^^xsd:dateTime ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "End" ; + rdfs:subClassOf prov:EntityInfluence , prov:InstantaneousEvent ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "End is when an activity is deemed to have been ended by an entity, known as trigger. The activity no longer exists after its end. Any usage, generation, or invalidation involving an activity precedes the activity's end. An end may refer to a trigger entity that terminated the activity, or to an activity, known as ender that generated the trigger."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-End"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-End"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasEndedBy . + +prov:invalidatedAtTime + rdf:type owl:DatatypeProperty ; + rdfs:comment "The time at which an entity was invalidated (i.e., no longer usable)."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "invalidatedAtTime" ; + rdfs:range xsd:dateTime ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:editorialNote "It is the intent that the property chain holds: (prov:qualifiedInvalidation o prov:atTime) rdfs:subPropertyOf prov:invalidatedAtTime."@en ; + prov:qualifiedForm prov:atTime , prov:Invalidation . + +time:after rdf:type owl:ObjectProperty ; + rdfs:comment "Gives directionality to time. If a temporal entity T1 is after another temporal entity T2, then the beginning of T1 is after the end of T2."@en , "Asume una dirección en el tiempo. Si una entidad temporal T1 está después de otra entidad temporal T2, entonces el principio de T1 está después del final de T2."@es ; + rdfs:domain time:TemporalEntity ; + rdfs:label "después"@es , "after"@en ; + rdfs:range time:TemporalEntity ; + owl:inverseOf time:before ; + skos:definition "Asume una dirección en el tiempo. Si una entidad temporal T1 está después de otra entidad temporal T2, entonces el principio de T1 está después del final de T2."@es , "Gives directionality to time. If a temporal entity T1 is after another temporal entity T2, then the beginning of T1 is after the end of T2."@en . + +prov:agent rdf:type owl:ObjectProperty ; + rdfs:domain prov:AgentInfluence ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "agent" ; + rdfs:range prov:Agent ; + rdfs:subPropertyOf prov:influencer ; + prov:category "qualified" ; + prov:editorialNote "This property behaves in spirit like rdf:object; it references the object of a prov:wasInfluencedBy triple."@en ; + prov:editorsDefinition "The prov:agent property references an prov:Agent which influenced a resource. This property applies to an prov:AgentInfluence, which is given by a subproperty of prov:qualifiedInfluence from the influenced prov:Entity, prov:Activity or prov:Agent."@en ; + prov:inverse "agentOfInfluence" . + +rdfs:seeAlso rdf:type owl:AnnotationProperty , owl:DatatypeProperty ; + rdfs:comment ""@en , "rdfs:seeAlso fully represents the ISA Programme Location Core Vocabulary concept of a geographic identifier."@en ; + rdfs:isDefinedBy rdfs: ; + rdfs:label "geographic identifier"@en ; + dcterms:identifier "rdfs:seeAlso" ; + vann:usageNote "Used in the ISA Programme Location Core Vocabulary to provide a URI that identifies the location. This should be expressed using the rdfs:seeAlso property unless the identifier is already the subject of the description. Examples include URIs from GeoNames.org and DBpedia such as http://dbpedia.org/resource/ISO_3166-2:XX where XX is the ISO 3166 two character code for a country."@en ; + vs:term_status "unstable"@en . + +vcard:fn rdf:type owl:DatatypeProperty ; + rdfs:comment "The formatted text corresponding to the name of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "formatted name"@en ; + rdfs:range xsd:string . + +skos:definition rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "definition"@en ; + rdfs:subPropertyOf skos:note ; + skos:definition "A statement or formal explanation of the meaning of a concept."@en . + +time:TemporalPosition + rdf:type owl:Class ; + rdfs:comment "A position on a time-line"@en , "Una posición sobre una línea de tiempo."@es ; + rdfs:label "Temporal position"@en , "posición temporal"@es ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:hasTRS + ] ; + skos:definition "A position on a time-line"@en , "Una posición sobre una línea de tiempo."@es . + +spdx:DisjunctiveLicenseSet + rdf:type owl:Class ; + rdfs:comment "A DisjunctiveLicenseSet represents a set of licensing information where only one license applies at a time. This class implies that the recipient gets to choose one of these licenses they would prefer to use."@en ; + rdfs:subClassOf spdx:AnyLicenseInfo , rdfs:Container ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:member + ] ; + vs:term_status "stable"@en . + +<http://data.europa.eu/r5r#LicenceDocument_Shape> + rdf:type sh:NodeShape ; + sh:name "Licence Document"@en ; + sh:property [ sh:path dcterms:type ; + sh:severity sh:Violation + ] ; + sh:targetClass dcterms:LicenseDocument . + +spdx:relationshipType_buildToolOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "To be used when SPDXRef-A is used to to build SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:originator rdf:type owl:DatatypeProperty ; + rdfs:comment "The name and, optionally, contact information of the person or organization that originally created the package. Values of this property must conform to the agent and tool syntax."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string . + +dcterms:MediaType rdf:type rdfs:Class ; + rdfs:comment "A file format or physical medium."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Media Type"@en ; + rdfs:subClassOf dcterms:MediaTypeOrExtent ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:SpdxDocument rdf:type owl:Class ; + rdfs:comment "An SpdxDocument is a summary of the contents, provenance, ownership and licensing analysis of a specific software package. This is, effectively, the top level of SPDX information."@en ; + rdfs:subClassOf spdx:SpdxElement ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:ExternalDocumentRef ; + owl:onProperty spdx:externalDocumentRef + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Package ; + owl:onProperty spdx:describesPackage + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:specVersion ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Review ; + owl:onProperty spdx:reviewed + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:CreationInfo ; + owl:onProperty spdx:creationInfo ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:hasValue <http://spdx.org/licenses/CC0-1.0> ; + owl:onProperty spdx:dataLicense + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:dataLicense ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:ExtractedLicensingInfo ; + owl:onProperty spdx:hasExtractedLicensingInfo + ] ; + vs:term_status "stable" . + +skos:related rdf:type owl:ObjectProperty , owl:SymmetricProperty , rdf:Property ; + rdfs:comment "skos:related is disjoint with skos:broaderTransitive"@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has related"@en ; + rdfs:subPropertyOf skos:semanticRelation ; + skos:definition "Relates a concept to a concept with which there is an associative semantic relationship."@en . + +vcard:category rdf:type owl:DatatypeProperty ; + rdfs:comment "The category information about the object, also known as tags"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "category"@en ; + rdfs:range xsd:string . + +[ rdf:type owl:Axiom ; + rdfs:comment "A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections."@en ; + owl:annotatedProperty rdfs:range ; + owl:annotatedSource prov:hadMember ; + owl:annotatedTarget prov:Entity ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-collection" +] . + +vcard:Child rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Child"@en ; + rdfs:subClassOf vcard:RelatedType . + +spdx:licenseId rdf:type owl:DatatypeProperty ; + rdfs:comment "A human readable short form license identifier for a license. The license ID is either on the standard license list or the form \"LicenseRef-[idString]\" where [idString] is a unique string containing letters, numbers, \".\" or \"-\". When used within a license expression, the license ID can optionally include a reference to an external document in the form \"DocumentRef-[docrefIdString]:LicenseRef-[idString]\" where docRefIdString is an ID for an external document reference."@en ; + rdfs:domain spdx:SimpleLicensingInfo ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:annotator rdf:type owl:DatatypeProperty ; + rdfs:comment "This field identifies the person, organization, or tool that has commented on a file, package, snippet, or the entire document." ; + rdfs:domain spdx:Annotation ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +time:intervalDisjoint + rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 es disjunto con otro intervalo propio T2, entonces el principio de T1 está después del final de T2, o el final de T1 está antes que el principio de T2, es decir, los intervalos no se solapan de ninguna forma, aunque su relación de orden no se conozca."@es , "If a proper interval T1 is intervalDisjoint another proper interval T2, then the beginning of T1 is after the end of T2, or the end of T1 is before the beginning of T2, i.e. the intervals do not overlap in any way, but their ordering relationship is not known."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval disjoint"@en , "intervalo disjunto"@es ; + rdfs:range time:ProperInterval ; + skos:definition "If a proper interval T1 is intervalDisjoint another proper interval T2, then the beginning of T1 is after the end of T2, or the end of T1 is before the beginning of T2, i.e. the intervals do not overlap in any way, but their ordering relationship is not known."@en , "Si un intervalo propio T1 es disjunto con otro intervalo propio T2, entonces el principio de T1 está después del final de T2, o el final de T1 está antes que el principio de T2, es decir, los intervalos no se solapan de ninguna forma, aunque su relación de orden no se conozca."@es ; + skos:note "This interval relation is not included in the 13 basic relationships defined in Allen (1984), but is defined in (T.3) as the union of :intervalBefore v :intervalAfter . However, that is outside OWL2 expressivity, so is implemented as an explicit property, with :intervalBefore , :intervalAfter as sub-properties"@en , "Esta relación entre intervalos no estaba incluida en las 13 relaciones básicas definidas por Allen (1984), pero está definida en T.3 como la unión de 'intervalo anterior' con 'intervalo posterior'. Sin embargo, esto está fuera de la expresividad de OWL2, por tanto, está implementado como una propiedad explícita, con 'intervalo anterior' e 'intervalo posterior' como sub-propiedades."@es . + +<http://www.w3.org/2009/pointers#lineNumber> + rdf:type owl:DatatypeProperty ; + rdfs:domain <http://www.w3.org/2009/pointers#LineCharPointer> ; + rdfs:range xsd:positiveInteger ; + vs:term_status "stable"@en . + +time:Duration rdf:type owl:Class ; + rdfs:comment "Duration of a temporal extent expressed as a number scaled by a temporal unit"@en , "Duración de una extensión temporal expresada como un número escalado por una unidad temporal."@es ; + rdfs:label "duración de tiempo" , "Time duration"@en ; + rdfs:subClassOf time:TemporalDuration ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:unitType + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:numericDuration + ] ; + skos:definition "Duration of a temporal extent expressed as a number scaled by a temporal unit"@en , "Duración de una extensión temporal expresada como un número escalado por una unidad temporal."@es ; + skos:note "Alternative to time:DurationDescription to support description of a temporal duration other than using a calendar/clock system."@en , "Alternativa a 'descripción de tiempo' para proporcionar descripción soporte a una duración temporal diferente a utilizar un sistema de calendario/reloj."@es . + +locn:address rdf:type rdf:Property ; + rdfs:comment "The locn:address property relationship associates any resource with the locn:Address class "@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "address"@en ; + rdfs:range locn:Address ; + dcterms:identifier "locn:address" ; + vs:term_status "testing"@en . + +dcterms:ISO639-3 rdf:type rdfs:Datatype ; + rdfs:comment "The set of three-letter codes listed in ISO 639-3 for the representation of names of languages."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "ISO 639-3"@en ; + rdfs:seeAlso <http://www.sil.org/iso639-3/> ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:fileName rdf:type owl:DatatypeProperty ; + rdfs:comment "The name of the file relative to the root of the package."@en ; + rdfs:domain spdx:File ; + rdfs:range xsd:string ; + rdfs:subPropertyOf spdx:name ; + vs:term_status "stable"@en . + +time:days rdf:type owl:DatatypeProperty ; + rdfs:comment "length of, or element of the length of, a temporal extent expressed in days"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en días."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "days duration"@en , "duración en días"@es ; + rdfs:range xsd:decimal ; + skos:definition "length of, or element of the length of, a temporal extent expressed in days"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en días."@es . + +dcterms:isPartOf rdf:type rdf:Property ; + rdfs:comment "A related resource in which the described resource is physically or logically included."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Is Part Of"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Has Part."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:hasOrganizationUnit + rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the organization unit name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has organization unit name"@en . + +spdx:versionInfo rdf:type owl:DatatypeProperty ; + rdfs:comment "Provides an indication of the version of the package that is described by this SpdxDocument."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +vcard:hasAddress rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the components of the delivery address for the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has address"@en ; + rdfs:range vcard:Address . + +prov:Bundle rdf:type owl:Class ; + rdfs:comment "Note that there are kinds of bundles (e.g. handwritten letters, audio recordings, etc.) that are not expressed in PROV-O, but can be still be described by PROV-O."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Bundle" ; + rdfs:subClassOf prov:Entity ; + prov:category "expanded" ; + prov:definition "A bundle is a named set of provenance descriptions, and is itself an Entity, so allowing provenance of provenance to be expressed."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-bundle-entity"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-bundle-declaration"^^xsd:anyURI . + +<http://www.w3.org/2009/pointers#reference> + rdf:type owl:ObjectProperty ; + rdfs:domain <http://www.w3.org/2009/pointers#SinglePointer> ; + vs:term_status "stable"@en . + +time:intervalOverlaps + rdf:type owl:ObjectProperty ; + rdfs:comment "If a proper interval T1 is intervalOverlaps another proper interval T2, then the beginning of T1 is before the beginning of T2, the end of T1 is after the beginning of T2, and the end of T1 is before the end of T2."@en , "Si un intervalo propio T1 se solapa con otro intervalo propio T2, entonces el principio de T1 es anterior al principio de T2, el final de T1 es posterior al principio de T2, y el final de T1 es anterior al final de T2."@es , "Asume una dirección en el tiempo. Si una entidad temporal T1 está después de otra entidad temporal T2, entonces el principio de T1 está después del final de T2."@es ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval overlaps"@en , "intervalo se solapa"@es ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalOverlappedBy ; + skos:definition "If a proper interval T1 is intervalOverlaps another proper interval T2, then the beginning of T1 is before the beginning of T2, the end of T1 is after the beginning of T2, and the end of T1 is before the end of T2."@en , "Si un intervalo propio T1 se solapa con otro intervalo propio T2, entonces el principio de T1 es anterior al principio de T2, el final de T1 es posterior al principio de T2, y el final de T1 es anterior al final de T2."@es . + +time:hasEnd rdf:type owl:ObjectProperty ; + rdfs:comment "End of a temporal entity."@en , "Final de una entidad temporal."@es ; + rdfs:domain time:TemporalEntity ; + rdfs:label "tiene fin"@es , "has end"@en ; + rdfs:range time:Instant ; + rdfs:subPropertyOf time:hasTime ; + skos:definition "Final de una entidad temporal."@es , "End of a temporal entity."@en . + +spdx:checksumAlgorithm_sha3_512 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA3-512."@en ; + vs:term_status "stable"@en . + +skos:altLabel rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:comment "The range of skos:altLabel is the class of RDF plain literals."@en , "skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise disjoint properties."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "alternative label"@en ; + rdfs:subPropertyOf rdfs:label ; + skos:definition "An alternative lexical label for a resource."@en ; + skos:example "Acronyms, abbreviations, spelling variants, and irregular plural/singular forms may be included among the alternative labels for a concept. Mis-spelled terms are normally included as hidden labels (see skos:hiddenLabel)."@en . + +spdx:purpose_device rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package refers to a chipset, processor, or electronic board."@en ; + vs:term_status "stable"@en . + +spdx:standardLicenseHeader + rdf:type owl:DatatypeProperty ; + rdfs:comment "License author's preferred text to indicated that a file is covered by the license."@en ; + rdfs:domain spdx:License ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +vcard:locality rdf:type owl:DatatypeProperty ; + rdfs:comment "The locality (e.g. city or town) associated with the address of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "locality"@en ; + rdfs:range xsd:string . + +time:unitMonth rdf:type time:TemporalUnit ; + rdfs:label "Month (unit of temporal duration)"@en ; + skos:prefLabel "month"@en , "mese"@it , "mois"@fr , "mes"@es , "한달"@kr , "один месяц"@ru , "Monat"@de , "maand"@nl , "miesiąc"@pl , "一個月"@zh , "شهر واحد"@ar , "一か月"@jp ; + time:days "0"^^xsd:decimal ; + time:hours "0"^^xsd:decimal ; + time:minutes "0"^^xsd:decimal ; + time:months "1"^^xsd:decimal ; + time:seconds "0"^^xsd:decimal ; + time:weeks "0"^^xsd:decimal ; + time:years "0"^^xsd:decimal . + +vcard:Coresident rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Coresident"@en ; + rdfs:subClassOf vcard:RelatedType . + +<http://data.europa.eu/r5r#Agent_Shape> + rdf:type sh:NodeShape ; + sh:name "Agent"@en ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:type ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path foaf:name ; + sh:severity sh:Violation + ] ; + sh:targetClass foaf:Agent . + +prov:invalidated rdf:type owl:ObjectProperty ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "invalidated" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:influenced ; + owl:inverseOf prov:wasInvalidatedBy ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:editorialNote "prov:invalidated is one of few inverse property defined, to allow Activity-oriented assertions in addition to Entity-oriented assertions."@en ; + prov:inverse "wasInvalidatedBy" ; + prov:sharesDefinitionWith prov:Invalidation . + +vcard:Group rdf:type owl:Class ; + rdfs:comment "Object representing a group of persons or entities. A group object will usually contain hasMember properties to specify the members of the group."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Group"@en ; + rdfs:subClassOf vcard:Kind ; + owl:disjointWith vcard:Individual , vcard:Location , vcard:Organization ; + owl:equivalentClass [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:hasMember ; + owl:someValuesFrom vcard:Kind + ] + [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass vcard:Kind ; + owl:onProperty vcard:hasMember + ] + ) + ] . + +spdx:reviewed rdf:type owl:ObjectProperty , owl:NamedIndividual ; + rdfs:comment "This property has been deprecated since SPDX version 2.0. It has been replaced by an Annotation with an annotation type review."@en , "Reviewed" ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range spdx:Review ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +skos:scopeNote rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "scope note"@en ; + rdfs:subPropertyOf skos:note ; + skos:definition "A note that helps to clarify the meaning and/or the use of a concept."@en . + +prov:ActivityInfluence + rdf:type owl:Class ; + rdfs:comment "It is not recommended that the type ActivityInfluence be asserted without also asserting one of its more specific subclasses."@en , "ActivityInfluence provides additional descriptions of an Activity's binary influence upon any other kind of resource. Instances of ActivityInfluence use the prov:activity property to cite the influencing Activity."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "ActivityInfluence" ; + rdfs:seeAlso prov:activity ; + rdfs:subClassOf prov:Influence ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty prov:hadActivity + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty prov:hadActivity + ] ; + owl:disjointWith prov:EntityInfluence ; + prov:category "qualified" ; + prov:editorsDefinition "ActivitiyInfluence is the capacity of an activity to have an effect on the character, development, or behavior of another by means of generation, invalidation, communication, or other."@en . + +spdx:annotationType_review + rdf:type owl:NamedIndividual , spdx:AnnotationType ; + rdfs:comment "A Review represents an audit and signoff by an individual, organization or tool on the information for an SpdxElement."@en ; + vs:term_status "stable"@en . + +spdx:order rdf:type owl:DatatypeProperty ; + rdfs:comment "The ordinal order of this element within a list"@en ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:nonNegativeInteger . + +spdx:filesAnalyzed rdf:type owl:DatatypeProperty ; + rdfs:comment "Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document. If false indicates packages that represent metadata or URI references to a project, product, artifact, distribution or a component. If set to false, the package must not contain any files."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:boolean ; + vs:term_status "stable"@en . + +spdx:relationshipType_requirementDescriptionFor + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A describes, illustrates, or specifies a requirement statement for SPDXRef-B."@en ; + vs:term_status "stable"@en . + +vcard:RelatedType rdf:type owl:Class ; + rdfs:comment "Used for relation type codes. The URI of the relation type code must be used as the value for the Relation Type."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Relation Type"@en . + +prov:Invalidation rdf:type owl:Class ; + rdfs:comment "An instance of prov:Invalidation provides additional descriptions about the binary prov:wasInvalidatedBy relation from an invalidated prov:Entity to the prov:Activity that invalidated it. For example, :uncracked_egg prov:wasInvalidatedBy :baking; prov:qualifiedInvalidation [ a prov:Invalidation; prov:activity :baking; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Invalidation" ; + rdfs:subClassOf prov:ActivityInfluence , prov:InstantaneousEvent ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Invalidation is the start of the destruction, cessation, or expiry of an existing entity by an activity. The entity is no longer available for use (or further invalidation) after invalidation. Any generation or usage of an entity precedes its invalidation." ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Invalidation"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Invalidation"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasInvalidatedBy . + +[ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ] . + +vcard:Parcel rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Parcel"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +<http://www.w3.org/2009/pointers#OffsetPointer> + rdf:type owl:Class ; + rdfs:subClassOf <http://www.w3.org/2009/pointers#SinglePointer> ; + vs:term_status "stable" . + +vcard:Female rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Female"@en ; + rdfs:subClassOf vcard:Gender . + +skos:example rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "example"@en ; + rdfs:subPropertyOf skos:note ; + skos:definition "An example of the use of a concept."@en . + +spdx:annotationType rdf:type owl:ObjectProperty ; + rdfs:comment "Type of the annotation."@en ; + rdfs:domain spdx:Annotation ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Restriction ; + owl:hasValue spdx:annotationType_other ; + owl:onProperty spdx:annotationType + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:annotationType_review ; + owl:onProperty spdx:annotationType + ] + ) + ] ; + vs:term_status "stable"@en . + +prov:hadPrimarySource + rdf:type owl:ObjectProperty ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadPrimarySource" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasDerivedFrom ; + owl:propertyChainAxiom ( prov:qualifiedPrimarySource prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedPrimarySource prov:entity ) ; + prov:category "expanded" ; + prov:component "derivations" ; + prov:inverse "wasPrimarySourceOf" ; + prov:qualifiedForm prov:PrimarySource , prov:qualifiedPrimarySource . + +prov:wasQuotedFrom rdf:type owl:ObjectProperty ; + rdfs:comment "An entity is derived from an original entity by copying, or 'quoting', some or all of it."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasQuotedFrom" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasDerivedFrom ; + owl:propertyChainAxiom ( prov:qualifiedQuotation prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedQuotation prov:entity ) ; + prov:category "expanded" ; + prov:component "derivations" ; + prov:inverse "quotedAs" ; + prov:qualifiedForm prov:qualifiedQuotation , prov:Quotation . + +dcterms:instructionalMethod + rdf:type rdf:Property ; + rdfs:comment "A process, used to engender knowledge, attitudes and skills, that the described resource is designed to support."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Instructional Method"@en ; + dcam:rangeIncludes dcterms:MethodOfInstruction ; + dcterms:description "Instructional Method typically includes ways of presenting instructional materials or conducting instructional activities, patterns of learner-to-learner and learner-to-instructor interactions, and mechanisms by which group and individual levels of learning are measured. Instructional methods include all aspects of the instruction and learning processes from planning and implementation through evaluation and feedback."@en ; + dcterms:issued "2005-06-13"^^xsd:date . + +skos:hasTopConcept rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:domain skos:ConceptScheme ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has top concept"@en ; + rdfs:range skos:Concept ; + owl:inverseOf skos:topConceptOf ; + skos:definition "Relates, by convention, a concept scheme to a concept which is topmost in the broader/narrower concept hierarchies for that scheme, providing an entry point to these hierarchies."@en . + +prov:influencer rdf:type owl:ObjectProperty ; + rdfs:comment "Subproperties of prov:influencer are used to cite the object of an unqualified PROV-O triple whose predicate is a subproperty of prov:wasInfluencedBy (e.g. prov:used, prov:wasGeneratedBy). prov:influencer is used much like rdf:object is used."@en ; + rdfs:domain prov:Influence ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "influencer" ; + rdfs:range owl:Thing ; + prov:category "qualified" ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-influence"^^xsd:anyURI ; + prov:editorialNote "This property and its subproperties are used in the same way as the rdf:object property, i.e. to reference the object of an unqualified prov:wasInfluencedBy or prov:influenced triple."@en ; + prov:editorsDefinition "This property is used as part of the qualified influence pattern. Subclasses of prov:Influence use these subproperties to reference the resource (Entity, Agent, or Activity) whose influence is being qualified."@en ; + prov:inverse "hadInfluence" . + +time:timeZone rdf:type owl:ObjectProperty ; + rdfs:comment "The time zone for clock elements in the temporal position"@en ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "in time zone"@en , "en huso horario"@es ; + rdfs:range time:TimeZone ; + skos:historyNote "En la versión original de OWL-Time de 2006, el rango de 'en huso horario' se definió en un espacio de nombres diferente \"http://www.w3.org/2006/timezone#\".\n Un axioma de alineación permite que los datos codificados de acuerdo con la versión anterior sean consistentes con la ontología actualizada."@es , "In the original 2006 version of OWL-Time, the range of time:timeZone was a TimeZone class in a separate namespace \"http://www.w3.org/2006/timezone#\". \nAn alignment axiom \n\ttzont:TimeZone rdfs:subClassOf time:TimeZone . \nallows data encoded according to the previous version to be consistent with the updated ontology. " ; + skos:note "IANA maintains a database of timezones. These are well maintained and generally considered authoritative, but individual items are not available at individual URIs, so cannot be used directly in data expressed using OWL-Time.\n\nDBPedia provides a set of resources corresponding to the IANA timezones, with a URI for each (e.g. http://dbpedia.org/resource/Australia/Eucla). The World Clock service also provides a list of time zones with the description of each available as an individual webpage with a convenient individual URI (e.g. https://www.timeanddate.com/time/zones/acwst). These or other, similar, resources might be used as a value of the time:timeZone property." , "IANA mantiene una base de datos de husos horarios. Éstas están bien mantenidas y generalmente se consideran autorizadas, pero los ítems individuales no están disponibles en URIs individuales, por tanto, no se pueden utilizar directamente en datos expresados utilizando OWL-Time.\n La BDPedia proporciona un conjunto de recursos correspondientes a los husos horarios de IANA, con una URI para cada uno (por ejemplo, http://dbpedia.org/resource/Australia/Eucla). El Servicio de Reloj Mundial también proporciona una lista de husos horarios con la descripción de cada uno de los disponibles como una página Web individual con una URI adecuada individual (por ejemplo, https://www.timeanddate.com/time/zones/acwst). Éstos, y otros recursos similares, se puden usar como un valor de la propiedad 'huso horario'."@es . + +locn:locatorName rdf:type rdf:Property ; + rdfs:comment "Proper noun(s) applied to the real world entity identified by the locator. The locator name could be the name of the property or complex, of the building or part of the building, or it could be the name of a room inside a building. \n "@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "locator name"@en ; + dcterms:identifier "locn:locatorName" ; + vs:term_status "testing"@en . + +spdx:referenceCategory_persistentId + rdf:type owl:NamedIndividual , spdx:ReferenceCategory ; + rdfs:comment "These point to objects present in the Software Heritage archive by the means of persistent identifiers that are guaranteed to remain stable (persistent) over time."@en ; + vs:term_status "stable"@en . + +dcterms:references rdf:type rdf:Property ; + rdfs:comment "A related resource that is referenced, cited, or otherwise pointed to by the described resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "References"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Is Referenced By."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:relatedSpdxElement + rdf:type owl:ObjectProperty ; + rdfs:comment "A related SpdxElement."@en ; + rdfs:domain spdx:Relationship ; + rdfs:range spdx:SpdxElement ; + vs:term_status "stable"@en . + +prov:hadRole rdf:type owl:ObjectProperty ; + rdfs:comment "The _optional_ Role that an Entity assumed in the context of an Activity. For example, :baking prov:used :spoon; prov:qualified [ a prov:Usage; prov:entity :spoon; prov:hadRole roles:mixing_implement ]."@en , "This property has multiple RDFS domains to suit multiple OWL Profiles. See <a href=\"#owl-profile\">PROV-O OWL Profile</a>." ; + rdfs:domain prov:Influence ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Association prov:InstantaneousEvent ) + ] ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Association prov:InstantaneousEvent ) + ] ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadRole" ; + rdfs:range prov:Role ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:editorsDefinition "prov:hadRole references the Role (i.e. the function of an entity with respect to an activity), in the context of an instantaneous usage, generation, association, start, and end."@en ; + prov:inverse "wasRoleIn" ; + prov:sharesDefinitionWith prov:Role . + +dcterms:MethodOfAccrual + rdf:type rdfs:Class ; + rdfs:comment "A method by which resources are added to a collection."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Method of Accrual"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:Sweetheart rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Sweetheart"@en ; + rdfs:subClassOf vcard:RelatedType . + +prov:wasInfluencedBy rdf:type owl:ObjectProperty ; + rdfs:comment "This property has multiple RDFS domains to suit multiple OWL Profiles. See <a href=\"#owl-profile\">PROV-O OWL Profile</a>." , "Because prov:wasInfluencedBy is a broad relation, its more specific subproperties (e.g. prov:wasInformedBy, prov:actedOnBehalfOf, prov:wasEndedBy, etc.) should be used when applicable."@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasInfluencedBy" ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:editorialNote "The sub-properties of prov:wasInfluencedBy can be elaborated in more detail using the Qualification Pattern. For example, the binary relation :baking prov:used :spoon can be qualified by asserting :baking prov:qualifiedUsage [ a prov:Usage; prov:entity :spoon; prov:atLocation :kitchen ] .\n\nSubproperties of prov:wasInfluencedBy may also be asserted directly without being qualified.\n\nprov:wasInfluencedBy should not be used without also using one of its subproperties. \n"@en ; + prov:inverse "influenced" ; + prov:qualifiedForm prov:Influence , prov:qualifiedInfluence ; + prov:sharesDefinitionWith prov:Influence . + +time:Thursday rdf:type time:DayOfWeek ; + rdfs:label "Thursday"@en ; + skos:prefLabel "Четверг"@ru , "الخميس"@ar , "Donnerstag"@de , "Czwartek"@pl , "Donderdag"@nl , "Jeudi"@fr , "Quinta-feira"@pt , "Jueves"@es , "星期四"@zh , "Thursday"@en , "木曜日"@ja , "Giovedì"@it . + +time:inXSDDateTime rdf:type owl:DeprecatedProperty , owl:DatatypeProperty ; + rdfs:comment "Posición de un instante, expresado utilizando xsd:dateTime."@es , "Position of an instant, expressed using xsd:dateTime"@en ; + rdfs:domain time:Instant ; + rdfs:label "en fecha-tiempo XSD"@es , "in XSD Date-Time"@en ; + rdfs:range xsd:dateTime ; + owl:deprecated true ; + skos:definition "Posición de un instante, expresado utilizando xsd:dateTime."@es , "Position of an instant, expressed using xsd:dateTime"@en ; + skos:note "La propiedad 'en fecha-hora XSD' ha sido reemplazada por 'en fecha-sello de tiempo XSD' que hace obligatorio el campo 'huso horario'."@es , "The property :inXSDDateTime is replaced by :inXSDDateTimeStamp which makes the time-zone field mandatory."@en . + +dcterms:LinguisticSystem + rdf:type rdfs:Class ; + rdfs:comment "A system of signs, symbols, sounds, gestures, or rules used in communication."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Linguistic System"@en ; + dcterms:description "Written, spoken, sign, and computer languages are linguistic systems."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:ConjunctiveLicenseSet + rdf:type owl:Class ; + rdfs:comment "A ConjunctiveLicenseSet represents a set of licensing information all of which apply."@en ; + rdfs:subClassOf spdx:AnyLicenseInfo , rdfs:Container ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:member + ] ; + vs:term_status "stable"@en . + +vcard:Label rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Label"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +vcard:logo rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "logo"@en ; + owl:equivalentProperty vcard:hasLogo . + +spdx:snippetName rdf:type owl:DatatypeProperty ; + rdfs:comment "Identify a specific snippet in a human convenient manner."@en ; + rdfs:domain spdx:Snippet ; + rdfs:range xsd:string ; + rdfs:subPropertyOf spdx:name ; + vs:term_status "stable"@en . + +spdx:relationshipType_exampleOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is an example of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +dcat:downloadURL rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "URL til fil der kan downloades i et bestemt format. Fx en CSV-fil eller en RDF-fil. Formatet for distributionen angives ved hjælp af egenskaberne dct:format og/eller dcat:mediaType."@da , "The URL of the downloadable file in a given format. E.g. CSV file or RDF file. The format is indicated by the distribution's dct:format and/or dcat:mediaType."@en , "Ceci est un lien direct à un fichier téléchargeable en un format donnée. Exple fichier CSV ou RDF. Le format est décrit par les propriétés de distribution dct:format et/ou dcat:mediaType."@fr , "La URL de un archivo descargable en el formato dato. Por ejemplo, archivo CSV o archivo RDF. El formato se describe con las propiedades de la distribución dct:format y/o dcat:mediaType."@es , "Questo è un link diretto al file scaricabile in un dato formato. E.g. un file CSV o un file RDF. Il formato è descritto dal dct:format e/o dal dcat:mediaType della distribuzione."@it , "URL souboru ke stažení v daném formátu, například CSV nebo RDF soubor. Formát je popsán vlastností distribuce dct:format a/nebo dcat:mediaType."@cs , "dcat:downloadURLはdcat:accessURLの特定の形式です。しかし、DCATプロファイルが非ダウンロード・ロケーションに対してのみaccessURLを用いる場合には、より強い分離を課すことを望む可能性があるため、この含意を強化しないように、DCATは、dcat:downloadURLをdcat:accessURLのサブプロパティーであると定義しません。"@ja , "Είναι ένας σύνδεσμος άμεσης μεταφόρτωσης ενός αρχείου σε μια δεδομένη μορφή. Π.χ. ένα αρχείο CSV ή RDF. Η μορφη αρχείου περιγράφεται από τις ιδιότητες dct:format ή/και dcat:mediaType της διανομής."@el , "رابط مباشر لملف يمكن تحميله. نوع الملف يتم توصيفه باستخدام الخاصية dct:format dcat:mediaType "@ar ; + rdfs:domain dcat:Distribution ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "downloadURL"@da , "URL de descarga"@es , "رابط تحميل"@ar , "ダウンロードURL"@ja , "URL di scarico"@it , "download URL"@en , "URL souboru ke stažení"@cs , "URL μεταφόρτωσης"@el , "URL de téléchargement"@fr ; + rdfs:range rdfs:Resource ; + skos:definition "Ceci est un lien direct à un fichier téléchargeable en un format donnée. Exple fichier CSV ou RDF. Le format est décrit par les propriétés de distribution dct:format et/ou dcat:mediaType."@fr , "dcat:downloadURLはdcat:accessURLの特定の形式です。しかし、DCATプロファイルが非ダウンロード・ロケーションに対してのみaccessURLを用いる場合には、より強い分離を課すことを望む可能性があるため、この含意を強化しないように、DCATは、dcat:downloadURLをdcat:accessURLのサブプロパティーであると定義しません。"@ja , "Questo è un link diretto al file scaricabile in un dato formato. E.g. un file CSV o un file RDF. Il formato è descritto dal dct:format e/o dal dcat:mediaType della distribuzione."@it , "The URL of the downloadable file in a given format. E.g. CSV file or RDF file. The format is indicated by the distribution's dct:format and/or dcat:mediaType."@en , "رابط مباشر لملف يمكن تحميله. نوع الملف يتم توصيفه باستخدام الخاصية dct:format dcat:mediaType "@ar , "URL souboru ke stažení v daném formátu, například CSV nebo RDF soubor. Formát je popsán vlastností distribuce dct:format a/nebo dcat:mediaType."@cs , "Είναι ένας σύνδεσμος άμεσης μεταφόρτωσης ενός αρχείου σε μια δεδομένη μορφή. Π.χ. ένα αρχείο CSV ή RDF. Η μορφη αρχείου περιγράφεται από τις ιδιότητες dct:format ή/και dcat:mediaType της διανομής."@el , "URL til fil der kan downloades i et bestemt format. Fx en CSV-fil eller en RDF-fil. Formatet for distributionen angives ved hjælp af egenskaberne dct:format og/eller dcat:mediaType."@da , "La URL de un archivo descargable en el formato dato. Por ejemplo, archivo CSV o archivo RDF. El formato se describe con las propiedades de la distribución dct:format y/o dcat:mediaType."@es ; + skos:editorialNote "Status: English Definition text modified by DCAT revision team, Italian, Spanish and Czech translation updated, other translations pending."@en , "rdfs:label, rdfs:comment and/or skos:scopeNote have been modified. Non-english versions must be updated."@en ; + skos:scopeNote "La valeur est une URL."@fr , "dcat:downloadURL SHOULD be used for the address at which this distribution is available directly, typically through a HTTP Get request."@en , "dcat:downloadURL BY MĚLA být použita pro adresu, ze které je distribuce přímo přístupná, typicky skrze požadavek HTTP Get."@cs , "dcat:downloadURL DOVREBBE essere utilizzato per l'indirizzo a cui questa distribuzione è disponibile direttamente, in genere attraverso una richiesta Get HTTP."@it , "El valor es una URL."@es , "dcat:downloadURL BØR anvendes til angivelse af den adresse hvor distributionen er tilgængelig direkte, typisk gennem et HTTP Get request."@da , "Η τιμή είναι ένα URL."@el . + +spdx:referenceType rdf:type owl:ObjectProperty ; + rdfs:comment "Type of the external reference. These are definined in an appendix in the SPDX specification."@en ; + rdfs:domain spdx:ExternalRef ; + rdfs:range spdx:ReferenceType ; + vs:term_status "stable"@en . + +adms:translation rdf:type owl:ObjectProperty ; + rdfs:comment "Links Assets that are translations of each other."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "translation"@en ; + rdfs:range rdfs:Resource . + +vcard:tel rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "telephone"@en ; + owl:equivalentProperty vcard:hasTelephone . + +spdx:referenceCategory_packageManager + rdf:type owl:NamedIndividual , spdx:ReferenceCategory ; + vs:term_status "stable"@en . + +spdx:RelationshipType + rdf:type owl:Class ; + rdfs:comment "Type of relationship."@en ; + vs:term_status "stable"@en . + +vcard:hasRole rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the role data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has role"@en . + +dcterms:relation rdf:type rdf:Property ; + rdfs:comment "A related resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Relation"@en ; + rdfs:subPropertyOf dc:relation ; + dcterms:description "Recommended practice is to identify the related resource by means of a URI. If this is not possible or feasible, a string conforming to a formal identification system may be provided."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcat:landingPage rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "Una página web que puede ser visitada en un explorador Web para tener acceso el catálogo, un conjunto de datos, sus distribuciones y/o información adicional."@es , "A Web page that can be navigated to in a Web browser to gain access to the catalog, a dataset, its distributions and/or additional information."@en , "Μία ιστοσελίδα πλοηγίσιμη μέσω ενός φυλλομετρητή (Web browser) που δίνει πρόσβαση στο σύνολο δεδομένων, τις διανομές αυτού ή/και επιπρόσθετες πληροφορίες."@el , "Una pagina web che può essere navigata per ottenere l'accesso al catalogo, ad un dataset, alle distribuzioni del dataset e/o ad informazioni addizionali."@it , "データセット、その配信および(または)追加情報にアクセスするためにウエブ・ブラウザでナビゲートできるウェブページ。"@ja , "صفحة وب يمكن من خلالها الوصول الى قائمة البيانات أو إلى معلومات إضافية متعلقة بها "@ar , "En webside som der kan navigeres til i en webbrowser for at få adgang til kataloget, et datasæt, dets distributioner og/eller yderligere information."@da , "Webová stránka, na kterou lze pro získání přístupu ke katalogu, datové sadě, jejím distribucím a/nebo dalším informacím přistoupit webovým prohlížečem."@cs , "Une page Web accessible par un navigateur Web donnant accès au catalogue, un jeu de données, ses distributions et/ou des informations additionnelles."@fr ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "página de destino"@es , "landing page"@en , "vstupní stránka"@cs , "destinationsside"@da , "ランディング・ページ"@ja , "page d'atterrissage"@fr , "صفحة وصول"@ar , "pagina di destinazione"@it , "ιστοσελίδα αρχικής πρόσβασης"@el ; + rdfs:range foaf:Document ; + rdfs:subPropertyOf foaf:page ; + skos:definition "Una pagina web che può essere navigata per ottenere l'accesso al catalogo, ad un dataset, alle distribuzioni del dataset e/o ad informazioni addizionali."@it , "A Web page that can be navigated to in a Web browser to gain access to the catalog, a dataset, its distributions and/or additional information."@en , "Una página web que puede ser visitada en un explorador Web para tener acceso el catálogo, un conjunto de datos, sus distribuciones y/o información adicional."@es , "صفحة وب يمكن من خلالها الوصول الى قائمة البيانات أو إلى معلومات إضافية متعلقة بها "@ar , "En webside som en webbrowser kan navigeres til for at få adgang til kataloget, et datasæt, dets distritbutioner og/eller yderligere information."@da , "Webová stránka, na kterou lze pro získání přístupu ke katalogu, datové sadě, jejím distribucím a/nebo dalším informacím přistoupit webovým prohlížečem."@cs , "Μία ιστοσελίδα πλοηγίσιμη μέσω ενός φυλλομετρητή (Web browser) που δίνει πρόσβαση στο σύνολο δεδομένων, τις διανομές αυτού ή/και επιπρόσθετες πληροφορίες."@el , "Une page Web accessible par un navigateur Web donnant accès au catalogue, un jeu de données, ses distributions et/ou des informations additionnelles."@fr , "データセット、その配信および(または)追加情報にアクセスするためにウエブ・ブラウザでナビゲートできるウェブページ。"@ja ; + skos:scopeNote "Hvis en eller flere distributioner kun er tilgængelige via en destinationsside (dvs. en URL til direkte download er ikke kendt), så bør destinationssidelinket gentages som adgangsadresse for en distribution."@da , "Si la distribución es accesible solamente través de una página de aterrizaje (i.e., no se conoce una URL de descarga directa), entonces el enlance a la página de aterrizaje debe ser duplicado como accessURL sobre la distribución."@es , "ランディング・ページを通じてしか配信にアクセスできない場合(つまり、直接的なダウンロードURLが不明)には、配信におけるaccessURLとしてランディング・ページのリンクをコピーすべきです(SHOULD)。"@ja , "If the distribution(s) are accessible only through a landing page (i.e. direct download URLs are not known), then the landing page link should be duplicated as accessURL on a distribution."@en , "Αν η/οι διανομή/ές είναι προσβάσιμη/ες μόνο μέσω μίας ιστοσελίδας αρχικής πρόσβασης (δηλαδή αν δεν υπάρχουν γνωστές διευθύνσεις άμεσης μεταφόρτωσης), τότε ο σύνδεσμος της ιστοσελίδας αρχικής πρόσβασης πρέπει να αναπαραχθεί ως accessURL σε μία διανομή."@el , "Pokud je distribuce dostupná pouze přes vstupní stránku, t.j. přímý URL odkaz ke stažení není znám, URL přístupové stránky by mělo být duplikováno ve vlastnosti distribuce accessURL."@cs , "Se la distribuzione è accessibile solo attraverso una pagina di destinazione (cioè, un URL di download diretto non è noto), il link alla pagina di destinazione deve essere duplicato come accessURL sulla distribuzione."@it , "Si la distribution est seulement accessible à travers une page d'atterrissage (exple. pas de connaissance d'URLS de téléchargement direct ), alors le lien de la page d'atterrissage doit être dupliqué comme accessURL sur la distribution."@fr . + +dcterms:RFC1766 rdf:type rdfs:Datatype ; + rdfs:comment "The set of tags, constructed according to RFC 1766, for the identification of languages."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "RFC 1766"@en ; + rdfs:seeAlso <http://www.ietf.org/rfc/rfc1766.txt> ; + dcterms:issued "2000-07-11"^^xsd:date . + +dcat:Role rdf:type owl:Class ; + rdfs:comment "Role je funkce zdroje či agenta ve vztahu k jinému zdroji, v kontextu přiřazení zdrojů či vztahů mezi zdroji."@cs , "A role is the function of a resource or agent with respect to another resource, in the context of resource attribution or resource relationships."@en , "Un rol es la función de un recurso o agente con respecto a otro recuros, en el contexto de atribución del recurso o de las relaciones entre recursos."@es , "En rolle er den funktion en ressource eller aktør har i forhold til en anden ressource, i forbindelse med ressourcekreditering eller ressourcerelationer."@da , "Un ruolo è la funzione di una risorsa o di un agente rispetto ad un'altra risorsa, nel contesto dell'attribuzione delle risorse o delle relazioni tra risorse."@it ; + rdfs:label "Rolle"@da , "Rol"@es , "Ruolo"@it , "Role"@cs , "Role"@en ; + rdfs:seeAlso dcat:hadRole ; + rdfs:subClassOf skos:Concept ; + skos:changeNote "Nuova classe aggiunta in DCAT 2.0."@it , "Nueva clase agregada en DCAT 2.0."@es , "Ny klasse tilføjet i DCAT 2.0."@en , "Nová třída přidaná ve verzi DCAT 2.0."@cs , "New class added in DCAT 2.0."@en ; + skos:definition "Role je funkce zdroje či agenta ve vztahu k jinému zdroji, v kontextu přiřazení zdrojů či vztahů mezi zdroji."@cs , "A role is the function of a resource or agent with respect to another resource, in the context of resource attribution or resource relationships."@en , "Un ruolo è la funzione di una risorsa o di un agente rispetto ad un'altra risorsa, nel contesto dell'attribuzione delle risorse o delle relazioni tra risorse."@it , "Un rol es la función de un recurso o agente con respecto a otro recuros, en el contexto de atribución del recurso o de las relaciones entre recursos."@es , "En rolle er den funktion en ressource eller aktør har i forhold til en anden ressource, i forbindelse med ressourcekreditering eller ressourcerelationer."@da ; + skos:editorialNote "Introduced into DCAT to complement prov:Role (whose use is limited to roles in the context of an activity, as the range of prov:hadRole)."@en , "Introduceret i DCAT for at supplere prov:Role (hvis anvendelse er begrænset til roller i forbindelse med en aktivitet, som er rækkevidde for prov:hadRole)."@da , "Přidáno do DCAT pro doplnění třídy prov:Role (jejíž užití je omezeno na role v kontextu aktivit, jakožto obor hodnot vlastnosti prov:hadRole)."@cs , "Introdotta in DCAT per completare prov:Role (il cui uso è limitato ai ruoli nel contesto di un'attività, in conseguenza alla definizione del codominio di prov:hadRole)."@it , "Incluída en DCAT para complementar prov:Role (cuyo uso está limitado a roles en el contexto de una actividad, ya que es el rango es prov:hadRole)."@es ; + skos:scopeNote "Se usa en una relación cualificada para especificar el rol de una Entidad con respecto a otra Entidad. Se recomienda que los valores se administren como los valores de un vocabulario controlado de roles de entidad como por ejemplo: ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode; IANA Registry of Link Relations https://www.iana.org/assignments/link-relation; el esquema de metadatos de DataCite; MARC relators https://id.loc.gov/vocabulary/relators."@es , "Used in a qualified-attribution to specify the role of an Agent with respect to an Entity. It is recommended that the values be managed as a controlled vocabulary of agent roles, such as http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@en , "Anvendes i forbindelse med kvalificerede krediteringer til at angive aktørens rolle i forhold til en entitet. Det anbefales at værdierne styres som et kontrolleret udfaldsrum med aktørroller, såsom http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@da , "Used in a qualified-relation to specify the role of an Entity with respect to another Entity. It is recommended that the values be managed as a controlled vocabulary of entity roles such as: ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode; IANA Registry of Link Relations https://www.iana.org/assignments/link-relation; DataCite metadata schema; MARC relators https://id.loc.gov/vocabulary/relators."@en , "Použito v kvalifikovaném přiřazení pro specifikaci role Agenta ve vztahu k Entitě. Je doporučeno množinu hodnot spravovat jako řízený slovník rolí agentů, jako například http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@cs , "Se usa en una atribución cualificada para especificar el rol de un Agente con respecto a una Entidad. Se recomienda que los valores se administren como un vocabulario controlado de roles de agente, como por ejemplo http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@es , "Utilizzato in un'attribuzione qualificata per specificare il ruolo di un agente rispetto a un'entità. Si consiglia di attribuire i valori considerando un vocabolario controllato dei ruoli dell'agente, ad esempio http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@it , "Utilizzato in una relazione qualificata per specificare il ruolo di un'entità rispetto a un'altra entità. Si raccomanda che il valore sia preso da un vocabolario controllato di ruoli di entità come ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode, IANA Registry of Link Relations https://www.iana.org/assignments/link-relation, DataCite metadata schema, o MARC relators https://id.loc.gov/vocabulary/relators."@it , "Anvendes i forbindelse med kvalificerede relationer til at specificere en entitets rolle i forhold til en anden entitet. Det anbefales at værdierne styres med et kontrolleret udfaldsrum for for entitetsroller såsom: ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode; IANA Registry of Link Relations https://www.iana.org/assignments/link-relation; DataCite metadata schema; MARC relators https://id.loc.gov/vocabulary/relators."@da , "Použito v kvalifikovaném vztahu pro specifikaci role Entity ve vztahu k jiné Entitě. Je doporučeno množinu hodnot spravovat jako řízený slovník rolí entit, jako například ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode, IANA Registry of Link Relations https://www.iana.org/assignments/link-relation, DataCite metadata schema, či MARC relators https://id.loc.gov/vocabulary/relators."@cs . + +dcterms:available rdf:type rdf:Property ; + rdfs:comment "Date that the resource became or will become available."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Available"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +time:hours rdf:type owl:DatatypeProperty ; + rdfs:comment "length of, or element of the length of, a temporal extent expressed in hours"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en horas."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "hours duration"@en , "duración en horas"@es ; + rdfs:range xsd:decimal ; + skos:definition "length of, or element of the length of, a temporal extent expressed in hours"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en horas."@es . + +spdx:checksumAlgorithm_md5 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was MD5"@en ; + vs:term_status "stable"@en . + +spdx:member rdf:type owl:ObjectProperty ; + rdfs:comment "A license, or other licensing information, that is a member of the subject license set."@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( spdx:ConjunctiveLicenseSet spdx:DisjunctiveLicenseSet spdx:WithExceptionOperator ) + ] ; + rdfs:range spdx:AnyLicenseInfo ; + vs:term_status "stable"@en . + +spdx:checksumAlgorithm_blake3 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was BLAKE3."@en ; + vs:term_status "stable"@en . + +doap:homepage rdf:type owl:DatatypeProperty ; + rdfs:domain spdx:Package ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +time:TemporalEntity rdf:type owl:Class ; + rdfs:comment "A temporal interval or instant."@en , "Un intervalo temporal o un instante."@es ; + rdfs:label "Temporal entity"@en , "entidad temporal"@es ; + rdfs:subClassOf owl:Thing ; + owl:unionOf ( time:Instant time:Interval ) ; + skos:definition "A temporal interval or instant."@en , "Un intervalo temporal o un instante."@es . + +vcard:Spouse rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Spouse"@en ; + rdfs:subClassOf vcard:RelatedType . + +spdx:validUntilDate rdf:type owl:DatatypeProperty ; + rdfs:comment "This field provides a place for recording the end of the support period for a package from the supplier."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:dateTime ; + rdfs:subPropertyOf spdx:date ; + vs:term_status "stable"@en . + +time:minute rdf:type owl:DatatypeProperty ; + rdfs:comment "Minute position in a calendar-clock system."@en , "Posición de minuto en un sistema calendario-reloj."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "minute"@en , "minuto"@es ; + rdfs:range xsd:nonNegativeInteger ; + skos:definition "Minute position in a calendar-clock system."@en , "Posición de minuto en un sistema calendario-reloj."@es . + +spdx:isLive rdf:type owl:DatatypeProperty ; + rdfs:comment "Indicate a URL is still a live accessible location on the public internet"@en ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:boolean . + +dcterms:educationLevel + rdf:type rdf:Property ; + rdfs:comment "A class of agents, defined in terms of progression through an educational or training context, for which the described resource is intended."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Audience Education Level"@en ; + rdfs:subPropertyOf dcterms:audience ; + dcam:rangeIncludes dcterms:AgentClass ; + dcterms:issued "2002-07-13"^^xsd:date . + +vcard:key rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "key"@en ; + owl:equivalentProperty vcard:hasKey . + +skos:prefLabel rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:comment "A resource has no more than one value of skos:prefLabel per language tag, and no more than one value of skos:prefLabel without language tag."@en , "The range of skos:prefLabel is the class of RDF plain literals."@en , "skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise\n disjoint properties."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "preferred label"@en ; + rdfs:subPropertyOf rdfs:label ; + skos:definition "The preferred lexical label for a resource, in a given language."@en . + +dcterms:valid rdf:type rdf:Property ; + rdfs:comment "Date (often a range) of validity of a resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Valid"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:hasGender rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the sex or gender identity of the object. URIs are recommended to enable interoperable sex and gender codes to be used."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has gender"@en . + +vcard:Individual rdf:type owl:Class ; + rdfs:comment "An object representing a single person or entity"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Individual"@en ; + rdfs:subClassOf vcard:Kind ; + owl:disjointWith vcard:Location , vcard:Organization . + +dcterms:DDC rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of conceptual resources specified by the Dewey Decimal Classification."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "DDC"@en ; + rdfs:seeAlso <http://www.oclc.org/dewey/> ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:standardLicenseHeaderTemplate + rdf:type owl:DatatypeProperty ; + rdfs:comment "License template which describes sections of the license header which can be varied. See License Template section of the specification for format information."@en ; + rdfs:domain spdx:License ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +vcard:label rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "label"@en ; + owl:deprecated true . + +vcard:Muse rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Muse"@en ; + rdfs:subClassOf vcard:RelatedType . + +vcard:Email rdf:type owl:Class ; + rdfs:comment "To specify the electronic mail address for communication with the object the vCard represents. Use the hasEmail object property."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Email"@en ; + owl:deprecated true . + +[ rdf:type owl:Axiom ; + rdfs:comment "Revision is a derivation (see http://www.w3.org/TR/prov-dm/#term-Revision). Moreover, according to \nhttp://www.w3.org/TR/2013/REC-prov-constraints-20130430/#term-Revision 23 April 2012 'wasRevisionOf is a strict sub-relation of wasDerivedFrom since two entities e2 and e1 may satisfy wasDerivedFrom(e2,e1) without being a variant of each other.'" ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasRevisionOf ; + owl:annotatedTarget prov:wasDerivedFrom +] . + +spdx:packageVerificationCode + rdf:type owl:ObjectProperty ; + rdfs:comment "A manifest based verification code (the algorithm is defined in section 3.9.4 of the full specification) of the package. This allows consumers of this data and/or database to determine if a package they have in hand is identical to the package from which the data was produced. This algorithm works even if the SPDX document is included in the package."@en ; + rdfs:domain spdx:Package ; + rdfs:range spdx:PackageVerificationCode ; + vs:term_status "stable"@en . + +locn:adminUnitL1 rdf:type rdf:Property ; + rdfs:comment "The uppermost administrative unit for the address, almost always a country. The domain of locn:adminUnitL1 is locn:Address and the range is a literal, conceptually defined by the INSPIRE Geographical Name data type."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "admin unit level 1"@en ; + dcterms:identifier "locn:adminUnitL1" ; + vann:usageNote "Best practice is to use the ISO 3166-1 code but if this is inappropriate for the context, country names should be provided in a consistent manner to reduce ambiguity. For example, either write 'United Kingdom' or 'UK' consistently throughout the data set and avoid mixing the two."@en ; + vs:term_status "testing"@en . + +dcat:Dataset rdf:type rdfs:Class , owl:Class ; + rdfs:comment "1つのエージェントによって公開またはキュレートされ、1つ以上の形式でアクセスまたはダウンロードできるデータの集合。"@ja , "Raccolta di dati, pubblicati o curati da un'unica fonte, disponibili per l'accesso o il download in uno o più formati."@it , "Μία συλλογή από δεδομένα, δημοσιευμένη ή επιμελημένη από μία και μόνο πηγή, διαθέσιμη δε προς πρόσβαση ή μεταφόρτωση σε μία ή περισσότερες μορφές."@el , "قائمة بيانات منشورة أو مجموعة من قبل مصدر ما و متاح الوصول إليها أو تحميلها"@ar , "A collection of data, published or curated by a single source, and available for access or download in one or more representations."@en , "Une collection de données, publiée ou élaborée par une seule source, et disponible pour accès ou téléchargement dans un ou plusieurs formats."@fr , "Kolekce dat poskytovaná či řízená jedním zdrojem, která je k dispozici pro přístup či stažení v jednom či více formátech."@cs , "Una colección de datos, publicados o conservados por una única fuente, y disponibles para ser accedidos o descargados en uno o más formatos."@es , "En samling af data, udgivet eller udvalgt og arrangeret af en enkelt kilde og som er til råde for adgang til eller download af i en eller flere repræsentationer."@da ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "データセット"@ja , "Dataset"@en , "Dataset"@it , "قائمة بيانات"@ar , "Conjunto de datos"@es , "Σύνολο Δεδομένων"@el , "Jeu de données"@fr , "Datová sada"@cs , "Datasæt"@da ; + rdfs:subClassOf dcat:Resource ; + skos:altLabel "Datasamling"@da ; + skos:changeNote "2018-02 - subklasse af dctype:Dataset fjernet da scope af dcat:Dataset omfatter flere forskellige typer fra dctype-vokabularet."@da , "2018-02 - odstraněno tvrzení o podtřídě dctype:Dataset, jelikož rozsah dcat:Dataset zahrnuje několik dalších typů ze slovníku dctype."@cs , "2018-02 - subclass of dctype:Dataset removed because scope of dcat:Dataset includes several other types from the dctype vocabulary."@en , "2018-02 - se eliminó el axioma de subclase con dctype:Dataset porque el alcance de dcat:Dataset incluye muchos otros tipos del vocabulario dctype."@es , "2018-02 - sottoclasse di dctype:Dataset rimosso perché l'ambito di dcat:Dataset include diversi altri tipi dal vocabolario dctype."@it ; + skos:definition "Une collection de données, publiée ou élaborée par une seule source, et disponible pour accès ou téléchargement dans un ou plusieurs formats."@fr , "قائمة بيانات منشورة أو مجموعة من قبل مصدر ما و متاح الوصول إليها أو تحميلها"@ar , "Una colección de datos, publicados o conservados por una única fuente, y disponibles para ser accedidos o descargados en uno o más formatos."@es , "Raccolta di dati, pubblicati o curati da un'unica fonte, disponibili per l'accesso o il download in uno o più formati."@it , "Kolekce dat poskytovaná či řízená jedním zdrojem, která je k dispozici pro přístup či stažení v jednom či více formátech."@cs , "En samling a data, udgivet eller udvalgt og arrangeret af en enkelt kilde og som der er adgang til i en eller flere repræsentationer."@da , "1つのエージェントによって公開またはキュレートされ、1つ以上の形式でアクセスまたはダウンロードできるデータの集合。"@ja , "Μία συλλογή από δεδομένα, δημοσιευμένη ή επιμελημένη από μία και μόνο πηγή, διαθέσιμη δε προς πρόσβαση ή μεταφόρτωση σε μία ή περισσότερες μορφές."@el , "A collection of data, published or curated by a single source, and available for access or download in one or more represenations."@en ; + skos:editorialNote "2020-03-16 A new scopenote added and need to be translated"@en ; + skos:scopeNote "Questa classe rappresenta il dataset come pubblicato dall’editore. Nel caso in cui sia necessario operare una distinzione fra i metadati originali del dataset e il record dei metadati ad esso associato nel catalogo (ad esempio, per distinguere la data di modifica del dataset da quella del dataset nel catalogo) si può impiegare la classe catalog record."@it , "Cette classe représente le jeu de données publié par le fournisseur de données. Dans les cas où une distinction est nécessaire entre le jeu de donénes et son entrée dans le catalogue, la classe registre de données peut être utilisée pour ce dernier."@fr , "Esta clase representa el conjunto de datos publicados. En los casos donde es necesario distinguir entre el conjunto de datos y su entrada en el catálogo de datos, se debe utilizar la clase 'registro del catálogo'."@es , "Η κλάση αυτή αναπαριστά το σύνολο δεδομένων αυτό καθ'εαυτό, όπως έχει δημοσιευθεί από τον εκδότη. Σε περιπτώσεις όπου είναι απαραίτητος ο διαχωρισμός μεταξύ του συνόλου δεδομένων και της καταγραφής αυτού στον κατάλογο (γιατί μεταδεδομένα όπως η ημερομηνία αλλαγής και ο συντηρητής μπορεί να διαφέρουν) η κλάση της καταγραφής καταλόγου μπορεί να χρησιμοποιηθεί για το τελευταίο."@el , "This class represents the actual dataset as published by the dataset provider. In cases where a distinction between the actual dataset and its entry in the catalog is necessary (because metadata such as modification date and maintainer might differ), the catalog record class can be used for the latter."@en , "Tato třída reprezentuje datovou sadu tak, jak je publikována poskytovatelem dat. V případě potřeby rozlišení datové sady a jejího katalogizačního záznamu (jelikož metadata jako datum modifikace se mohou lišit) pro něj může být použita třída \"katalogizační záznam\"."@cs , "Questa classe descrive il dataset dal punto di vista concettuale. Possono essere disponibili una o più rappresentazioni, con diversi layout e formati schematici o serializzazioni."@it , "This class describes the conceptual dataset. One or more representations might be available, with differing schematic layouts and formats or serializations."@en , "このクラスは、データセットの公開者が公開する実際のデータセットを表わします。カタログ内の実際のデータセットとそのエントリーとの区別が必要な場合(修正日と維持者などのメタデータが異なるかもしれないので)は、後者にcatalog recordというクラスを使用できます。"@ja , "The notion of dataset in DCAT is broad and inclusive, with the intention of accommodating resource types arising from all communities. Data comes in many forms including numbers, text, pixels, imagery, sound and other multi-media, and potentially other types, any of which might be collected into a dataset."@en , "Denne klasse beskriver det konceptuelle datasæt. En eller flere repræsentationer kan være tilgængelige med forskellige skematiske opsætninger, formater eller serialiseringer."@da , "Denne klasse repræsenterer det konkrete datasæt som det udgives af datasætleverandøren. I de tilfælde hvor det er nødvendigt at skelne mellem det konkrete datasæt og dets registrering i kataloget (fordi metadata såsom ændringsdato og vedligeholder er forskellige), så kan klassen katalogpost anvendes. "@da . + +dcterms:description rdf:type rdf:Property ; + rdfs:comment "An account of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Description"@en ; + rdfs:subPropertyOf dc:description ; + dcterms:description "Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:Contact rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Contact"@en ; + rdfs:subClassOf vcard:RelatedType . + +dcterms:issued rdf:type rdf:Property ; + rdfs:comment "Date of formal issuance of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Issued"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +[ rdf:type owl:Axiom ; + owl:annotatedProperty rdfs:domain ; + owl:annotatedSource prov:wasInfluencedBy ; + owl:annotatedTarget [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + prov:definition "influencee: an identifier (o2) for an entity, activity, or agent; " ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-influence" +] . + +skos:mappingRelation rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "These concept mapping relations mirror semantic relations, and the data model defined below is similar (with the exception of skos:exactMatch) to the data model defined for semantic relations. A distinct vocabulary is provided for concept mapping relations, to provide a convenient way to differentiate links within a concept scheme from links between concept schemes. However, this pattern of usage is not a formal requirement of the SKOS data model, and relies on informal definitions of best practice."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "is in mapping relation with"@en ; + rdfs:subPropertyOf skos:semanticRelation ; + skos:definition "Relates two concepts coming, by convention, from different schemes, and that have comparable meanings"@en . + +vcard:title rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the position or job of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "title"@en ; + rdfs:range xsd:string . + +vcard:organization-unit + rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the organizational unit name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "organizational unit name"@en ; + rdfs:range xsd:string ; + rdfs:subPropertyOf vcard:organization-name . + +vcard:hasEmail rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the electronic mail address for communication with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has email"@en ; + rdfs:range vcard:Email . + +spdx:annotation rdf:type owl:ObjectProperty ; + rdfs:comment "Provide additional information about an SpdxElement."@en ; + rdfs:domain spdx:SpdxElement ; + rdfs:range spdx:Annotation ; + vs:term_status "stable" . + +spdx:relationshipType_dataFileOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a data file used in SPDXRef-B."@en ; + vs:term_status "stable"@en . + +dcterms:RFC3066 rdf:type rdfs:Datatype ; + rdfs:comment "The set of tags constructed according to RFC 3066 for the identification of languages."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "RFC 3066"@en ; + rdfs:seeAlso <http://www.ietf.org/rfc/rfc3066.txt> ; + dcterms:description "RFC 3066 has been obsoleted by RFC 4646."@en ; + dcterms:issued "2002-07-13"^^xsd:date . + +[ rdf:type owl:Axiom ; + rdfs:comment "hadPrimarySource property is a particular case of wasDerivedFrom (see http://www.w3.org/TR/prov-dm/#term-original-source) that aims to give credit to the source that originated some information." ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:hadPrimarySource ; + owl:annotatedTarget prov:wasDerivedFrom +] . + +spdx:reviewer rdf:type owl:DatatypeProperty ; + rdfs:comment "The name and, optionally, contact information of the person who performed the review. Values of this property must conform to the agent and tool syntax. The reviewer property is deprecated in favor of Annotation with an annotationType review."@en ; + rdfs:domain spdx:Review ; + rdfs:range xsd:string ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +dcterms:spatial rdf:type rdf:Property ; + rdfs:comment "Spatial characteristics of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Spatial Coverage"@en ; + rdfs:subPropertyOf dc:coverage , dcterms:coverage ; + dcam:rangeIncludes dcterms:Location ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:Address rdf:type owl:Class ; + rdfs:comment "To specify the components of the delivery address for the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Address"@en ; + owl:equivalentClass [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:country-name ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:country-name + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:locality ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:locality + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:postal-code ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:postal-code + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:region ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:region + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:street-address ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:street-address + ] + ) + ] + ) + ] . + +time:year rdf:type owl:DatatypeProperty ; + rdfs:comment "Year position in a calendar-clock system.\n\nThe range of this property is not specified, so can be replaced by any specific representation of a calendar year from any calendar. "@en , "Posición de año en un sistema calendario-reloj.\n\nl rango de esta propiedad no está especificado, por tanto, se puede reemplazar por cualquier representación específica de un año de calendario de un calendario cualquiera."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "year"@en . + +dcterms:MethodOfInstruction + rdf:type rdfs:Class ; + rdfs:comment "A process that is used to engender knowledge, attitudes, and skills."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Method of Instruction"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcterms:PhysicalResource + rdf:type rdfs:Class ; + rdfs:comment "A material thing."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Physical Resource"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:geo rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "geo"@en ; + owl:equivalentProperty vcard:hasGeo . + +time:DurationDescription + rdf:type owl:Class ; + rdfs:comment "Description of temporal extent structured with separate values for the various elements of a calendar-clock system. The temporal reference system is fixed to Gregorian Calendar, and the range of each of the numeric properties is restricted to xsd:decimal"@en , "Descripción de extensión temporal estructurada con valores separados para los distintos elementos de un sistema de horario-calendario. El sistema de referencia temporal se fija al calendario gregoriano, y el intervalo de cada una de las propiedades numéricas se restringe a xsd:decimal."@es ; + rdfs:label "descripción de duración"@es , "Duration description"@en ; + rdfs:subClassOf time:GeneralDurationDescription ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:minutes + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:days + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:seconds + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:hasValue <http://www.opengis.net/def/uom/ISO-8601/0/Gregorian> ; + owl:onProperty time:hasTRS + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:weeks + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:hours + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:years + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty time:months + ] ; + skos:definition "Description of temporal extent structured with separate values for the various elements of a calendar-clock system. The temporal reference system is fixed to Gregorian Calendar, and the range of each of the numeric properties is restricted to xsd:decimal"@en , "Descripción de extensión temporal estructurada con valores separados para los distintos elementos de un sistema de horario-calendario. El sistema de referencia temporal se fija al calendario gregoriano, y el intervalo de cada una de las propiedades numéricas se restringe a xsd:decimal."@es ; + skos:note "In the Gregorian calendar the length of the month is not fixed. Therefore, a value like \"2.5 months\" cannot be exactly compared with a similar duration expressed in terms of weeks or days."@en , "En el calendario gregoriano la longitud de los meses no es fija. Por lo tanto, un valor como \"2,5 meses\" no se puede comparar exactamente con una duración similar expresada en términos de semanas o días."@es . + +vcard:Unknown rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Unknown"@en ; + rdfs:subClassOf vcard:Gender . + +[ rdf:type owl:Axiom ; + owl:annotatedProperty rdfs:range ; + owl:annotatedSource prov:wasInfluencedBy ; + owl:annotatedTarget [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + prov:definition "influencer: an identifier (o1) for an ancestor entity, activity, or agent that the former depends on;" ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-influence" +] . + +dcterms:MediaTypeOrExtent + rdf:type rdfs:Class ; + rdfs:comment "A media type or extent."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Media Type or Extent"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +skos:broaderTransitive + rdf:type owl:ObjectProperty , owl:TransitiveProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has broader transitive"@en ; + rdfs:subPropertyOf skos:semanticRelation ; + owl:inverseOf skos:narrowerTransitive ; + skos:definition "skos:broaderTransitive is a transitive superproperty of skos:broader." ; + skos:scopeNote "By convention, skos:broaderTransitive is not used to make assertions. Rather, the properties can be used to draw inferences about the transitive closure of the hierarchical relation, which is useful e.g. when implementing a simple query expansion algorithm in a search application."@en . + +<https://www.w3.org/ns/locn.svg> + rdfs:label "Class and property diagram of the LOCN vocabulary" . + +dcterms:DCMIType rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of classes specified by the DCMI Type Vocabulary, used to categorize the nature or genre of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "DCMI Type Vocabulary"@en ; + rdfs:seeAlso dctype: ; + dcterms:issued "2000-07-11"^^xsd:date . + +time:unitWeek rdf:type time:TemporalUnit ; + rdfs:label "Week (unit of temporal duration)"@en ; + skos:prefLabel "一週間"@jp , "week"@nl , "week"@en , "settimana"@it , "semana"@es , "semana"@pt , "одна неделя"@ru , "tydzień"@pl , "일주일"@kr , "一周"@zh , "semaine"@fr , "Woche"@de , "سبوع واحد"@ar ; + time:days "0"^^xsd:decimal ; + time:hours "0"^^xsd:decimal ; + time:minutes "0"^^xsd:decimal ; + time:months "0"^^xsd:decimal ; + time:seconds "0"^^xsd:decimal ; + time:weeks "1"^^xsd:decimal ; + time:years "0"^^xsd:decimal . + +prov:qualifiedInvalidation + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Entity prov:wasInvalidatedBy Activity :a, then it can qualify how it was invalidated using prov:qualifiedInvalidation [ a prov:Invalidation; prov:activity :a; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedInvalidation" ; + rdfs:range prov:Invalidation ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:inverse "qualifiedInvalidationOf" ; + prov:sharesDefinitionWith prov:Invalidation ; + prov:unqualifiedForm prov:wasInvalidatedBy . + +prov:qualifiedForm rdf:type owl:AnnotationProperty ; + rdfs:comment "This annotation property links a subproperty of prov:wasInfluencedBy with the subclass of prov:Influence and the qualifying property that are used to qualify it. \n\nExample annotation:\n\n prov:wasGeneratedBy prov:qualifiedForm prov:qualifiedGeneration, prov:Generation .\n\nThen this unqualified assertion:\n\n :entity1 prov:wasGeneratedBy :activity1 .\n\ncan be qualified by adding:\n\n :entity1 prov:qualifiedGeneration :entity1Gen .\n :entity1Gen \n a prov:Generation, prov:Influence;\n prov:activity :activity1;\n :customValue 1337 .\n\nNote how the value of the unqualified influence (prov:wasGeneratedBy :activity1) is mirrored as the value of the prov:activity (or prov:entity, or prov:agent) property on the influence class."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +[ rdf:type owl:Axiom ; + rdfs:comment "Attribution is a particular case of trace (see http://www.w3.org/TR/prov-dm/#concept-trace), in the sense that it links an entity to the agent that ascribed it." ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasAttributedTo ; + owl:annotatedTarget prov:wasInfluencedBy ; + prov:definition "IF wasAttributedTo(e2,ag1,aAttr) holds, THEN wasInfluencedBy(e2,ag1) also holds. " +] . + +vcard:Neighbor rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Neighbor"@en ; + rdfs:subClassOf vcard:RelatedType . + +vcard:language rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the language that may be used for contacting the object. May also be used as a property parameter."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "language"@en . + +prov:Delegation rdf:type owl:Class ; + rdfs:comment "An instance of prov:Delegation provides additional descriptions about the binary prov:actedOnBehalfOf relation from a performing prov:Agent to some prov:Agent for whom it was performed. For example, :mixing prov:wasAssociatedWith :toddler . :toddler prov:actedOnBehalfOf :mother; prov:qualifiedDelegation [ a prov:Delegation; prov:entity :mother; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Delegation" ; + rdfs:subClassOf prov:AgentInfluence ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:definition "Delegation is the assignment of authority and responsibility to an agent (by itself or by another agent) to carry out a specific activity as a delegate or representative, while the agent it acts on behalf of retains some responsibility for the outcome of the delegated work.\n\nFor example, a student acted on behalf of his supervisor, who acted on behalf of the department chair, who acted on behalf of the university; all those agents are responsible in some way for the activity that took place but we do not say explicitly who bears responsibility and to what degree."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-delegation"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-delegation"^^xsd:anyURI ; + prov:unqualifiedForm prov:actedOnBehalfOf . + +dcterms:ISO3166 rdf:type rdfs:Datatype ; + rdfs:comment "The set of codes listed in ISO 3166-1 for the representation of names of countries."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "ISO 3166"@en ; + rdfs:seeAlso <https://www.iso.org/obp/ui/#search> , <http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html> ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:annotationDate rdf:type owl:DatatypeProperty ; + rdfs:comment "Identify when the comment was made. This is to be specified according to the combined date and time in the UTC format, as specified in the ISO 8601 standard."@en ; + rdfs:domain spdx:Annotation ; + rdfs:range xsd:dateTime ; + rdfs:subPropertyOf spdx:date ; + vs:term_status "stable" . + +adms:AssetRepository rdf:type owl:Class ; + rdfs:comment "A system or service that provides facilities for storage and maintenance of descriptions of Assets and Asset Distributions, and functionality that allows users to search and access these descriptions. An Asset Repository will typically contain descriptions of several Assets and related Asset Distributions."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "Asset repository"@en . + +skos:broader rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "Broader concepts are typically rendered as parents in a concept hierarchy (tree)."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has broader"@en ; + rdfs:subPropertyOf skos:broaderTransitive ; + owl:inverseOf skos:narrower ; + skos:definition "Relates a concept to a concept that is more general in meaning."@en ; + skos:scopeNote "By convention, skos:broader is only used to assert an immediate (i.e. direct) hierarchical link between two conceptual resources."@en . + +spdx:relationshipType_providedDependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a to be provided dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:exceptionTextHtml + rdf:type owl:DatatypeProperty ; + rdfs:comment "HTML representation of the License Exception Text"@en ; + rdfs:domain spdx:ListedLicenseException ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +<http://data.europa.eu/r5r#Location_Shape> + rdf:type sh:NodeShape ; + sh:name "Location"@en ; + sh:property [ sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:geometry ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcat:centroid ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcat:bbox ; + sh:severity sh:Violation + ] ; + sh:targetClass dcterms:Location . + +dcat:accessURL rdf:type rdf:Property , owl:ObjectProperty ; + rdfs:comment "A URL of a resource that gives access to a distribution of the dataset. E.g. landing page, feed, SPARQL endpoint. Use for all cases except a simple download link, in which case downloadURL is preferred."@en , "Puede ser cualquier tipo de URL que de acceso a una distribución del conjunto de datos, e.g., página de destino, descarga, URL feed, punto de acceso SPARQL. Esta propriedad se debe usar cuando su catálogo de datos no tiene información sobre donde está o cuando no se puede descargar."@es , "En URL for en ressource som giver adgang til en repræsentation af datsættet. Fx destinationsside, feed, SPARQL-endpoint. Anvendes i alle sammenhænge undtagen til angivelse af et simpelt download link hvor anvendelse af egenskaben downloadURL foretrækkes."@da , "URL zdroje, přes které je přístupná distribuce datové sady. Příkladem může být vstupní stránka, RSS kanál či SPARQL endpoint. Použijte ve všech případech kromě URL souboru ke stažení, pro které je lepší použít dcat:downloadURL."@cs , "Μπορεί να είναι οποιουδήποτε είδους URL που δίνει πρόσβαση στη διανομή ενός συνόλου δεδομένων. Π.χ. ιστοσελίδα αρχικής πρόσβασης, μεταφόρτωση, feed URL, σημείο διάθεσης SPARQL. Να χρησιμοποιείται όταν ο κατάλογος δεν περιέχει πληροφορίες εαν πρόκειται ή όχι για μεταφορτώσιμο αρχείο."@el , "Un URL di una risorsa che consente di accedere a una distribuzione del set di dati. Per esempio, pagina di destinazione, feed, endpoint SPARQL. Da utilizzare per tutti i casi, tranne quando si tratta di un semplice link per il download nel qual caso è preferito downloadURL."@it , "データセットの配信にアクセス権を与えるランディング・ページ、フィード、SPARQLエンドポイント、その他の種類の資源。"@ja , "Ceci peut être tout type d'URL qui donne accès à une distribution du jeu de données. Par exemple, un lien à une page HTML contenant un lien au jeu de données, un Flux RSS, un point d'accès SPARQL. Utilisez le lorsque votre catalogue ne contient pas d'information sur quoi il est ou quand ce n'est pas téléchargeable."@fr , "أي رابط يتيح الوصول إلى البيانات. إذا كان الرابط هو ربط مباشر لملف يمكن تحميله استخدم الخاصية downloadURL"@ar ; + rdfs:domain dcat:Distribution ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "přístupová adresa"@cs , "URL d'accès"@fr , "アクセスURL"@ja , "access address"@en , "URL πρόσβασης"@el , "رابط وصول"@ar , "URL de acceso"@es , "indirizzo di accesso"@it , "adgangsadresse"@da ; + rdfs:range rdfs:Resource ; + owl:propertyChainAxiom ( dcat:accessService dcat:endpointURL ) ; + skos:altLabel "adgangsURL"@da ; + skos:definition "En URL for en ressource som giver adgang til en repræsentation af datsættet. Fx destinationsside, feed, SPARQL-endpoint. Anvendes i alle sammenhænge undtagen til angivelse af et simpelt download link hvor anvendelse af egenskaben downloadURL foretrækkes."@da , "データセットの配信にアクセス権を与えるランディング・ページ、フィード、SPARQLエンドポイント、その他の種類の資源。"@ja , "A URL of a resource that gives access to a distribution of the dataset. E.g. landing page, feed, SPARQL endpoint. Use for all cases except a simple download link, in which case downloadURL is preferred."@en , "Ceci peut être tout type d'URL qui donne accès à une distribution du jeu de données. Par exemple, un lien à une page HTML contenant un lien au jeu de données, un Flux RSS, un point d'accès SPARQL. Utilisez le lorsque votre catalogue ne contient pas d'information sur quoi il est ou quand ce n'est pas téléchargeable."@fr , "Un URL di una risorsa che consente di accedere a una distribuzione del set di dati. Per esempio, pagina di destinazione, feed, endpoint SPARQL. Da utilizzare per tutti i casi, tranne quando si tratta di un semplice link per il download nel qual caso è preferito downloadURL."@it , "Μπορεί να είναι οποιουδήποτε είδους URL που δίνει πρόσβαση στη διανομή ενός συνόλου δεδομένων. Π.χ. ιστοσελίδα αρχικής πρόσβασης, μεταφόρτωση, feed URL, σημείο διάθεσης SPARQL. Να χρησιμοποιείται όταν ο κατάλογος δεν περιέχει πληροφορίες εαν πρόκειται ή όχι για μεταφορτώσιμο αρχείο."@el , "Puede ser cualquier tipo de URL que de acceso a una distribución del conjunto de datos, e.g., página de destino, descarga, URL feed, punto de acceso SPARQL. Esta propriedad se debe usar cuando su catálogo de datos no tiene información sobre donde está o cuando no se puede descargar."@es , "URL zdroje, přes které je přístupná distribuce datové sady. Příkladem může být vstupní stránka, RSS kanál či SPARQL endpoint. Použijte ve všech případech kromě URL souboru ke stažení, pro které je lepší použít dcat:downloadURL."@cs , "أي رابط يتيح الوصول إلى البيانات. إذا كان الرابط هو ربط مباشر لملف يمكن تحميله استخدم الخاصية downloadURL"@ar ; + skos:editorialNote "rdfs:label, rdfs:comment and skos:scopeNote have been modified. Non-english versions except for Italian must be updated."@en , "Status: English Definition text modified by DCAT revision team, updated Italian and Czech translation provided, translations for other languages pending."@en ; + skos:scopeNote "Se le distribuzioni sono accessibili solo attraverso una pagina web (ad esempio, gli URL per il download diretto non sono noti), allora il link della pagina web deve essere duplicato come accessURL sulla distribuzione."@it , "Hvis en eller flere distributioner kun er tilgængelige via en destinationsside (dvs. en URL til direkte download er ikke kendt), så bør destinationssidelinket gentages som adgangsadresse for distributionen."@da , "Pokud jsou distribuce přístupné pouze přes vstupní stránku (tj. URL pro přímé stažení nejsou známa), pak by URL přístupové stránky mělo být duplikováno ve vlastnosti distribuce accessURL."@cs , "El rango es una URL. Si la distribución es accesible solamente través de una página de destino (es decir, si no se conoce una URL de descarga directa), entonces el enlance a la página de destino debe ser duplicado como accessURL en la distribución."@es , "Η τιμή είναι ένα URL. Αν η/οι διανομή/ές είναι προσβάσιμη/ες μόνο μέσω μίας ιστοσελίδας αρχικής πρόσβασης (δηλαδή αν δεν υπάρχουν γνωστές διευθύνσεις άμεσης μεταφόρτωσης), τότε ο σύνδεσμος της ιστοσελίδας αρχικής πρόσβασης πρέπει να αναπαραχθεί ως accessURL σε μία διανομή."@el , "La valeur est une URL. Si la distribution est accessible seulement au travers d'une page d'atterrissage (c-à-dire on n'ignore une URL de téléchargement direct), alors le lien à la page d'atterrissage doit être dupliqué comee accessURL sur la distribution."@fr , "確実にダウンロードでない場合や、ダウンロードかどうかが不明である場合は、downloadURLではなく、accessURLを用いてください。ランディング・ページを通じてしか配信にアクセスできない場合(つまり、直接的なダウンロードURLが不明)は、配信におけるaccessURLとしてランディング・ページのリンクをコピーすべきです(SHOULD)。"@ja , "If the distribution(s) are accessible only through a landing page (i.e. direct download URLs are not known), then the landing page link should be duplicated as accessURL on a distribution."@en . + +spdx:snippetFromFile rdf:type owl:ObjectProperty ; + rdfs:comment "File containing the SPDX element (e.g. the file contaning a snippet)."@en ; + rdfs:domain spdx:Snippet ; + rdfs:range spdx:File ; + vs:term_status "stable"@en . + +prov:Communication rdf:type owl:Class ; + rdfs:comment "An instance of prov:Communication provides additional descriptions about the binary prov:wasInformedBy relation from an informed prov:Activity to the prov:Activity that informed it. For example, :you_jumping_off_bridge prov:wasInformedBy :everyone_else_jumping_off_bridge; prov:qualifiedCommunication [ a prov:Communication; prov:activity :everyone_else_jumping_off_bridge; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Communication" ; + rdfs:subClassOf prov:ActivityInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Communication is the exchange of an entity by two activities, one activity using the entity generated by the other." ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Communication"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-wasInformedBy"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasInformedBy . + +vcard:email rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "email"@en ; + owl:equivalentProperty vcard:hasEmail . + +prov:qualifiedGeneration + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Activity prov:generated Entity :e, then it can qualify how it performed the Generation using prov:qualifiedGeneration [ a prov:Generation; prov:entity :e; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedGeneration" ; + rdfs:range prov:Generation ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:inverse "qualifiedGenerationOf" ; + prov:sharesDefinitionWith prov:Generation ; + prov:unqualifiedForm prov:wasGeneratedBy . + +dcterms:BibliographicResource + rdf:type rdfs:Class ; + rdfs:comment "A book, article, or other documentary resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Bibliographic Resource"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:fileType_audio rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "The file is associated with an audio file (MIME type of audio/* , ie. .mp3 ); \nIMAGE if the file is assoicated with an picture image file (MIME type of image/*, ie. .jpg, .gif )"@en ; + vs:term_status "stable"@en . + +prov:wasInformedBy rdf:type owl:ObjectProperty ; + rdfs:comment "An activity a2 is dependent on or informed by another activity a1, by way of some unspecified entity that is generated by a1 and used by a2."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasInformedBy" ; + rdfs:range prov:Activity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedCommunication prov:activity ) ; + owl:propertyChainAxiom ( prov:qualifiedCommunication prov:activity ) ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:inverse "informed" ; + prov:qualifiedForm prov:qualifiedCommunication , prov:Communication . + +dcat:CatalogRecord rdf:type owl:Class , rdfs:Class ; + rdfs:comment "A record in a data catalog, describing the registration of a single dataset or data service."@en , "1つのデータセットを記述したデータ・カタログ内のレコード。"@ja , "En post i et datakatalog der beskriver registreringen af et enkelt datasæt eller en datatjeneste."@da , "Záznam v datovém katalogu popisující jednu datovou sadu či datovou službu."@cs , "Un registre du catalogue ou une entrée du catalogue, décrivant un seul jeu de données."@fr , "Un registro en un catálogo de datos que describe un solo conjunto de datos o un servicio de datos."@es , "Un record in un catalogo di dati che descrive un singolo dataset o servizio di dati."@it , "Μία καταγραφή ενός καταλόγου, η οποία περιγράφει ένα συγκεκριμένο σύνολο δεδομένων."@el ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "カタログ・レコード"@ja , "Καταγραφή καταλόγου"@el , "سجل"@ar , "Registro del catálogo"@es , "Record di catalogo"@it , "Catalog Record"@en , "Katalogizační záznam"@cs , "Katalogpost"@da , "Registre du catalogue"@fr ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom dcat:Resource ; + owl:onProperty foaf:primaryTopic + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty foaf:primaryTopic + ] ; + skos:definition "Un record in un catalogo di dati che descrive un singolo dataset o servizio di dati."@it , "Záznam v datovém katalogu popisující jednu datovou sadu či datovou službu."@cs , "Un registro en un catálogo de datos que describe un solo conjunto de datos o un servicio de datos."@es , "En post i et datakatalog der beskriver registreringen af et enkelt datasæt eller en datatjeneste."@da , "1つのデータセットを記述したデータ・カタログ内のレコード。"@ja , "A record in a data catalog, describing the registration of a single dataset or data service."@en , "Μία καταγραφή ενός καταλόγου, η οποία περιγράφει ένα συγκεκριμένο σύνολο δεδομένων."@el , "Un registre du catalogue ou une entrée du catalogue, décrivant un seul jeu de données."@fr ; + skos:editorialNote "English definition updated in this revision. Multilingual text not yet updated except the Spanish one and the Czech one and Italian one."@en ; + skos:scopeNote "このクラスはオプションで、すべてのカタログがそれを用いるとは限りません。これは、データセットに関するメタデータとカタログ内のデータセットのエントリーに関するメタデータとで区別が行われるカタログのために存在しています。例えば、データセットの公開日プロパティーは、公開機関が情報を最初に利用可能とした日付を示しますが、カタログ・レコードの公開日は、データセットがカタログに追加された日付です。両方の日付が異っていたり、後者だけが分かっている場合は、カタログ・レコードに対してのみ公開日を指定すべきです。W3CのPROVオントロジー[prov-o]を用いれば、データセットに対する特定の変更に関連するプロセスやエージェントの詳細などの、さらに詳しい来歴情報の記述が可能となることに注意してください。"@ja , "Questa classe è opzionale e non tutti i cataloghi la utilizzeranno. Esiste per cataloghi in cui si opera una distinzione tra i metadati relativi al dataset ed i metadati relativi alla gestione del dataset nel catalogo. Ad esempio, la proprietà per indicare la data di pubblicazione del dataset rifletterà la data in cui l'informazione è stata originariamente messa a disposizione dalla casa editrice, mentre la data di pubblicazione per il record nel catalogo rifletterà la data in cui il dataset è stato aggiunto al catalogo. Nei casi dove solo quest'ultima sia nota, si utilizzerà esclusivamente la data di pubblicazione relativa al record del catalogo. Si noti che l'Ontologia W3C PROV permette di descrivere ulteriori informazioni sulla provenienza, quali i dettagli del processo, la procedura e l'agente coinvolto in una particolare modifica di un dataset."@it , "Tato třída je volitelná a ne všechny katalogy ji využijí. Existuje pro katalogy, ve kterých se rozlišují metadata datové sady či datové služby a metadata o záznamu o datové sadě či datové službě v katalogu. Například datum publikace datové sady odráží datum, kdy byla datová sada původně zveřejněna poskytovatelem dat, zatímco datum publikace katalogizačního záznamu je datum zanesení datové sady do katalogu. V případech kdy se obě data liší, nebo je známo jen to druhé, by mělo být specifikováno jen datum publikace katalogizačního záznamu. Všimněte si, že ontologie W3C PROV umožňuje popsat další informace o původu jako například podrobnosti o procesu konkrétní změny datové sady a jeho účastnících."@cs , "Esta clase es opcional y no todos los catálogos la utilizarán. Esta clase existe para catálogos que hacen una distinción entre los metadatos acerca de un conjunto de datos o un servicio de datos y los metadatos acerca de una entrada en ese conjunto de datos en el catálogo. Por ejemplo, la propiedad sobre la fecha de la publicación de los datos refleja la fecha en que la información fue originalmente publicada, mientras que la fecha de publicación del registro del catálogo es la fecha en que los datos se agregaron al mismo. En caso en que ambas fechas fueran diferentes, o en que sólo la fecha de publicación del registro del catálogo estuviera disponible, sólo debe especificarse en el registro del catálogo. Tengan en cuenta que la ontología PROV de W3C permite describir otra información sobre la proveniencia de los datos, como por ejemplo detalles del proceso y de los agentes involucrados en algún cambio específico a los datos."@es , "This class is optional and not all catalogs will use it. It exists for catalogs where a distinction is made between metadata about a dataset or data service and metadata about the entry for the dataset or data service in the catalog. For example, the publication date property of the dataset reflects the date when the information was originally made available by the publishing agency, while the publication date of the catalog record is the date when the dataset was added to the catalog. In cases where both dates differ, or where only the latter is known, the publication date should only be specified for the catalog record. Notice that the W3C PROV Ontology allows describing further provenance information such as the details of the process and the agent involved in a particular change to a dataset."@en , "Αυτή η κλάση είναι προαιρετική και δεν χρησιμοποιείται από όλους τους καταλόγους. Υπάρχει για τις περιπτώσεις καταλόγων όπου γίνεται διαχωρισμός μεταξύ των μεταδεδομένων για το σύνολο των δεδομένων και των μεταδεδομένων για την καταγραφή του συνόλου δεδομένων εντός του καταλόγου. Για παράδειγμα, η ιδιότητα της ημερομηνίας δημοσίευσης του συνόλου δεδομένων δείχνει την ημερομηνία κατά την οποία οι πληροφορίες έγιναν διαθέσιμες από τον φορέα δημοσίευσης, ενώ η ημερομηνία δημοσίευσης της καταγραφής του καταλόγου δείχνει την ημερομηνία που το σύνολο δεδομένων προστέθηκε στον κατάλογο. Σε περιπτώσεις που οι δύο ημερομηνίες διαφέρουν, ή που μόνο η τελευταία είναι γνωστή, η ημερομηνία δημοσίευσης θα πρέπει να δίνεται για την καταγραφή του καταλόγου. Να σημειωθεί πως η οντολογία W3C PROV επιτρέπει την περιγραφή επιπλέον πληροφοριών ιστορικού όπως λεπτομέρειες για τη διαδικασία και τον δράστη που εμπλέκονται σε μία συγκεκριμένη αλλαγή εντός του συνόλου δεδομένων."@el , "C'est une classe facultative et tous les catalogues ne l'utiliseront pas. Cette classe existe pour les catalogues\tayant une distinction entre les métadonnées sur le jeu de données et les métadonnées sur une entrée du jeu de données dans le catalogue."@fr , "Denne klasse er valgfri og ikke alle kataloger vil anvende denne klasse. Den kan anvendes i de kataloger hvor der skelnes mellem metadata om datasættet eller datatjenesten og metadata om selve posten til registreringen af datasættet eller datatjenesten i kataloget. Udgivelsesdatoen for datasættet afspejler for eksempel den dato hvor informationerne oprindeligt blev gjort tilgængelige af udgiveren, hvorimod udgivelsesdatoen for katalogposten er den dato hvor datasættet blev føjet til kataloget. I de tilfælde hvor de to datoer er forskellige eller hvor blot sidstnævnte er kendt, bør udgivelsesdatoen kun angives for katalogposten. Bemærk at W3Cs PROV ontologi gør til muligt at tilføje yderligere proveniensoplysninger eksempelvis om processen eller aktøren involveret i en given ændring af datasættet."@da . + +spdx:isValid rdf:type owl:DatatypeProperty ; + rdfs:comment "True if the URL is a valid well formed URL"@en ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:boolean . + +<http://www.w3.org/2009/pointers#startPointer> + rdf:type owl:ObjectProperty ; + rdfs:domain <http://www.w3.org/2009/pointers#CompoundPointer> ; + rdfs:range <http://www.w3.org/2009/pointers#SinglePointer> ; + vs:term_status "stable"@en . + +skos:Collection rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "Collection"@en ; + owl:disjointWith skos:Concept , skos:ConceptScheme ; + skos:definition "A meaningful collection of concepts."@en ; + skos:scopeNote "Labelled collections can be used where you would like a set of concepts to be displayed under a 'node label' in the hierarchy."@en . + +doap:Project rdf:type owl:Class . + +dcterms:modified rdf:type rdf:Property ; + rdfs:comment "Date on which the resource was changed."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Modified"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +adms:supportedSchema rdf:type owl:ObjectProperty ; + rdfs:comment "A schema according to which the Asset Repository can provide data about its content, e.g. ADMS."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "supported schema"@en ; + rdfs:range adms:Asset . + +adms:versionNotes rdf:type owl:DatatypeProperty ; + rdfs:comment "A description of changes between this version and the previous version of the Asset."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "version notes"@en ; + rdfs:range rdfs:Literal . + +spdx:purpose_install rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package is used to install software on disk."@en ; + vs:term_status "stable"@en . + +prov:hadActivity rdf:type owl:ObjectProperty ; + rdfs:comment "The _optional_ Activity of an Influence, which used, generated, invalidated, or was the responsibility of some Entity. This property is _not_ used by ActivityInfluence (use prov:activity instead)."@en , "This property has multiple RDFS domains to suit multiple OWL Profiles. See <a href=\"#owl-profile\">PROV-O OWL Profile</a>." ; + rdfs:domain prov:Influence ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Delegation prov:Derivation prov:End prov:Start ) + ] ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Delegation prov:Derivation prov:End prov:Start ) + ] ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadActivity" ; + rdfs:range prov:Activity ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:editorialNote "The multiple rdfs:domain assertions are intended. One is simpler and works for OWL-RL, the union is more specific but is not recognized by OWL-RL."@en ; + prov:inverse "wasActivityOfInfluence" ; + prov:sharesDefinitionWith prov:Activity . + +vcard:hasFamilyName rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the family name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has family name"@en . + +time:dayOfWeek rdf:type owl:ObjectProperty ; + rdfs:comment "The day of week, whose value is a member of the class time:DayOfWeek"@en , "El día de la semana, cuyo valor es un miembro de la clase 'día de la semana'." ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "day of week"@en , "día de la semana"@es ; + rdfs:range time:DayOfWeek ; + skos:definition "The day of week, whose value is a member of the class time:DayOfWeek"@en , "El día de la semana, cuyo valor es un miembro de la clase 'día de la semana'."@es . + +spdx:relationshipType_devDependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a development dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +time:intervalMeets rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 se encuentra con otro intervalo propio T2, entonces el final de T1 coincide con el principio de T2."@es , "If a proper interval T1 is intervalMeets another proper interval T2, then the end of T1 is coincident with the beginning of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo se encuentra"@es , "interval meets"@en ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalMetBy ; + skos:definition "If a proper interval T1 is intervalMeets another proper interval T2, then the end of T1 is coincident with the beginning of T2."@en , "Si un intervalo propio T1 se encuentra con otro intervalo propio T2, entonces el final de T1 coincide con el principio de T2."@es . + +time:unitSecond rdf:type time:TemporalUnit ; + rdfs:label "Second (unit of temporal duration)"@en ; + skos:prefLabel "segundo"@pt , "segundo"@es , "seconde"@fr , "seconde"@nl , "Sekunde"@de , "second"@en , "ثانية واحدة"@ar , "一秒"@jp , "一秒"@zh , "일초"@kr , "Sekundę"@pl , "secondo"@it ; + time:days "0"^^xsd:decimal ; + time:hours "0"^^xsd:decimal ; + time:minutes "0"^^xsd:decimal ; + time:months "0"^^xsd:decimal ; + time:seconds "1"^^xsd:decimal ; + time:weeks "0"^^xsd:decimal ; + time:years "0"^^xsd:decimal . + +spdx:created rdf:type owl:DatatypeProperty ; + rdfs:comment "Identify when the SPDX document was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard."@en ; + rdfs:domain spdx:CreationInfo ; + rdfs:range xsd:dateTime ; + rdfs:subPropertyOf spdx:date ; + vs:term_status "stable" . + +dcterms:ISO639-2 rdf:type rdfs:Datatype ; + rdfs:comment "The three-letter alphabetic codes listed in ISO639-2 for the representation of names of languages."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "ISO 639-2"@en ; + rdfs:seeAlso <http://lcweb.loc.gov/standards/iso639-2/langhome.html> ; + dcterms:issued "2000-07-11"^^xsd:date . + +skos:historyNote rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "history note"@en ; + rdfs:subPropertyOf skos:note ; + skos:definition "A note about the past state/use/meaning of a concept."@en . + +<http://www.w3.org/2009/pointers#StartEndPointer> + rdf:type owl:Class ; + rdfs:subClassOf <http://www.w3.org/2009/pointers#CompoundPointer> ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass <http://www.w3.org/2009/pointers#SinglePointer> ; + owl:onProperty <http://www.w3.org/2009/pointers#endPointer> ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass <http://www.w3.org/2009/pointers#SinglePointer> ; + owl:onProperty <http://www.w3.org/2009/pointers#startPointer> ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable" . + +vcard:Name rdf:type owl:Class ; + rdfs:comment "To specify the components of the name of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Name"@en ; + owl:equivalentClass [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:additional-name ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:minCardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:additional-name + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:family-name ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:family-name + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:given-name ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:given-name + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:honorific-prefix ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:minCardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:honorific-prefix + ] + ) + ] + [ rdf:type owl:Class ; + owl:intersectionOf ( [ rdf:type owl:Restriction ; + owl:onProperty vcard:honorific-suffix ; + owl:someValuesFrom xsd:string + ] + [ rdf:type owl:Restriction ; + owl:minCardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty vcard:honorific-suffix + ] + ) + ] + ) + ] . + +<http://www.w3.org/2006/vcard/ns> + rdf:type owl:Ontology ; + rdfs:comment "Ontology for vCard based on RFC6350"@en ; + rdfs:label "Ontology for vCard"@en ; + owl:versionInfo "Final"@en . + +vcard:tz rdf:type owl:DatatypeProperty ; + rdfs:comment "To indicate time zone information that is specific to the object. May also be used as a property parameter."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "time zone"@en ; + rdfs:range xsd:string . + +vcard:Pref rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Pref"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +spdx:algorithm rdf:type owl:ObjectProperty ; + rdfs:comment "Identifies the algorithm used to produce the subject Checksum. Currently, SHA-1 is the only supported algorithm. It is anticipated that other algorithms will be supported at a later time."@en ; + rdfs:domain spdx:Checksum ; + vs:term_status "stable" . + +<http://www.w3.org/2009/pointers#Pointer> + rdf:type owl:Class ; + vs:term_status "stable" . + +spdx:ListedLicenseException + rdf:type owl:Class ; + rdfs:comment "License exception specific to ListedLicenses" ; + rdfs:subClassOf spdx:LicenseException ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:exceptionTextHtml + ] . + +vcard:family-name rdf:type owl:DatatypeProperty ; + rdfs:comment "The family name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "family name"@en ; + rdfs:range xsd:string . + +spdx:standardLicenseTemplate + rdf:type owl:DatatypeProperty ; + rdfs:comment "License template which describes sections of the license which can be varied. See License Template section of the specification for format information."@en ; + rdfs:domain spdx:License ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:spdxDocument rdf:type owl:ObjectProperty ; + rdfs:comment "A property containing an SPDX document."@en ; + rdfs:domain spdx:ExternalDocumentRef ; + rdfs:range spdx:SpdxDocument ; + vs:term_status "stable"@en . + +prov:Role rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Role" ; + rdfs:seeAlso prov:hadRole ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:definition "A role is the function of an entity or agent with respect to an activity, in the context of a usage, generation, invalidation, association, start, and end."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-role"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-attribute"^^xsd:anyURI . + +spdx:SpdxItem rdf:type owl:Class ; + rdfs:comment "An SpdxItem is a potentially copyrightable work."@en ; + rdfs:subClassOf spdx:SpdxElement ; + rdfs:subClassOf [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Restriction ; + owl:hasValue spdx:noassertion ; + owl:onProperty spdx:licenseConcluded + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:none ; + owl:onProperty spdx:licenseConcluded + ] + [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:licenseConcluded + ] + ) + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:licenseInfoFromFiles + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:attributionText + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:copyrightText + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseComments + ] ; + vs:term_status "stable"@en . + +prov:qualifiedAttribution + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Entity prov:wasAttributedTo Agent :ag, then it can qualify how it was influenced using prov:qualifiedAttribution [ a prov:Attribution; prov:agent :ag; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedAttribution" ; + rdfs:range prov:Attribution ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:inverse "qualifiedAttributionOf" ; + prov:sharesDefinitionWith prov:Attribution ; + prov:unqualifiedForm prov:wasAttributedTo . + +adms:includedAsset rdf:type owl:ObjectProperty ; + rdfs:comment "An Asset that is contained in the Asset being described, e.g. when there are several vocabularies defined in a single document."@en ; + rdfs:domain adms:Asset ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "included asset"@en ; + rdfs:range adms:Asset . + +prov:definition rdf:type owl:AnnotationProperty ; + rdfs:comment "A definition quoted from PROV-DM or PROV-CONSTRAINTS that describes the concept expressed with this OWL term."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> . + +time:week rdf:type owl:DatatypeProperty ; + rdfs:comment "Week number within the year."@en , "Número de semana en el año."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "week"@en , "semana"@es ; + rdfs:range xsd:nonNegativeInteger ; + skos:note "Weeks are numbered differently depending on the calendar in use and the local language or cultural conventions (locale). ISO-8601 specifies that the first week of the year includes at least four days, and that Monday is the first day of the week. In that system, week 1 is the week that contains the first Thursday in the year."@en ; + skos:scopeNote "Las semanas están numeradas de forma diferente dependiendo del calendario en uso y de las convenciones lingüísticas y culturales locales (locale en inglés). El ISO-8601 especifica que la primera semana del año incluye al menos cuatro días, y que el lunes es el primer día de la semana. En ese sistema, la semana 1 es la semana que contiene el primer jueves del año."@es . + +spdx:builtDate rdf:type owl:DatatypeProperty ; + rdfs:comment "This field provides a place for recording the actual date the package was built."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:dateTime ; + rdfs:subPropertyOf spdx:date ; + vs:term_status "stable"@en . + +prov:category rdf:type owl:AnnotationProperty ; + rdfs:comment "Classify prov-o terms into three categories, including 'starting-point', 'qualifed', and 'extended'. This classification is used by the prov-o html document to gently introduce prov-o terms to its users. "@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> . + +vcard:Acquaintance rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Acquaintance"@en ; + rdfs:subClassOf vcard:RelatedType . + +dcterms:FileFormat rdf:type rdfs:Class ; + rdfs:comment "A digital resource format."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "File Format"@en ; + rdfs:subClassOf dcterms:MediaType ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:relationshipType_runtimeDependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a dependency required for the execution of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +time:intervalBefore rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 está antes que otro intervalo propio T2, entonces el final de T1 está antes que el principio de T2."@es , "If a proper interval T1 is intervalBefore another proper interval T2, then the end of T1 is before the beginning of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval before"@en , "intervalo anterior"@es ; + rdfs:range time:ProperInterval ; + rdfs:subPropertyOf time:intervalDisjoint , time:before ; + owl:inverseOf time:intervalAfter ; + skos:definition "Si un intervalo propio T1 está antes que otro intervalo propio T2, entonces el final de T1 está antes que el principio de T2."@es , "If a proper interval T1 is intervalBefore another proper interval T2, then the end of T1 is before the beginning of T2."@en . + +time:intervalContains + rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 contiene otro intervalo propio T2, entonces el principio de T1 está antes que el principio de T2, y el final de T1 está después del final de T2."@es , "If a proper interval T1 is intervalContains another proper interval T2, then the beginning of T1 is before the beginning of T2, and the end of T1 is after the end of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo contiene"@es , "interval contains"@en ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalDuring ; + skos:definition "Si un intervalo propio T1 contiene otro intervalo propio T2, entonces el principio de T1 está antes que el principio de T2, y el final de T1 está después del final de T2."@es , "If a proper interval T1 is intervalContains another proper interval T2, then the beginning of T1 is before the beginning of T2, and the end of T1 is after the end of T2."@en . + +time:DateTimeDescription + rdf:type owl:Class ; + rdfs:comment "Descripción de fecha y tiempo estructurada con valores separados para los diferentes elementos de un sistema calendario-reloj. El sistema de referencia temporal está fijado al calendario gregoriano, y el rango de las propiedades año, mes, día restringidas a los correspondientes tipos del XML Schema xsd:gYear, xsd:gMonth y xsd:gDay respectivamente."@es , "Description of date and time structured with separate values for the various elements of a calendar-clock system. The temporal reference system is fixed to Gregorian Calendar, and the range of year, month, day properties restricted to corresponding XML Schema types xsd:gYear, xsd:gMonth and xsd:gDay, respectively."@en ; + rdfs:label "descripción de fecha-tiempo"@es , "Date-Time description"@en ; + rdfs:subClassOf time:GeneralDateTimeDescription ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:gMonth ; + owl:onProperty time:month + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:gYear ; + owl:onProperty time:year + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:hasValue <http://www.opengis.net/def/uom/ISO-8601/0/Gregorian> ; + owl:onProperty time:hasTRS + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:allValuesFrom xsd:gDay ; + owl:onProperty time:day + ] ; + skos:definition "Descripción de fecha y tiempo estructurada con valores separados para los diferentes elementos de un sistema calendario-reloj. El sistema de referencia temporal está fijado al calendario gregoriano, y el rango de las propiedades año, mes, día restringidas a los correspondientes tipos del XML Schema xsd:gYear, xsd:gMonth y xsd:gDay respectivamente."@es , "Description of date and time structured with separate values for the various elements of a calendar-clock system. The temporal reference system is fixed to Gregorian Calendar, and the range of year, month, day properties restricted to corresponding XML Schema types xsd:gYear, xsd:gMonth and xsd:gDay, respectively."@en . + +<https://joinup.ec.europa.eu/node/55858> + dcterms:title "Core Vocabularies Specification" . + +spdx:contextualExample + rdf:type owl:DatatypeProperty ; + rdfs:comment "Example for use of the external repository identifier"@en ; + rdfs:domain spdx:ReferenceType ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +locn:geographicName rdf:type rdf:Property ; + rdfs:comment "\nA geographic name is a proper noun applied to a spatial object. Taking the example used in the relevant INSPIRE data specification (page 18), the following are all valid geographic names for the Greek capital:\n- Αθήνα (the Greek endonym written in the Greek script)\n- Athína (the standard Romanisation of the endonym)\n- Athens (the English language exonym)\nFor INSPIRE-conformant data, provide the metadata for the geographic name using a skos:Concept as a datatype.\n"@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "geographic name"@en ; + dcterms:identifier "locn:geographicName" ; + vs:term_status "testing"@en ; + wdsr:describedby <https://joinup.ec.europa.eu/node/55858> . + +time:TimeZone rdf:type owl:Class ; + rdfs:comment "Un huso horario especifica la cantidad en que la hora local está desplazada con respecto a UTC.\n Un huso horario normalmente se denota geográficamente (p.ej. el horario de verano del este de Australia), con un valor constante en una región dada.\n La región donde aplica y el desplazamiento desde UTC las especifica una autoridad gubernamental localmente reconocida."@es , "A Time Zone specifies the amount by which the local time is offset from UTC. \n\tA time zone is usually denoted geographically (e.g. Australian Eastern Daylight Time), with a constant value in a given region. \nThe region where it applies and the offset from UTC are specified by a locally recognised governing authority."@en ; + rdfs:label "Time Zone"@en , "huso horario"@es ; + skos:definition "Un huso horario especifica la cantidad en que la hora local está desplazada con respecto a UTC.\n Un huso horario normalmente se denota geográficamente (p.ej. el horario de verano del este de Australia), con un valor constante en una región dada.\n La región donde aplica y el desplazamiento desde UTC las especifica una autoridad gubernamental localmente reconocida."@es , "A Time Zone specifies the amount by which the local time is offset from UTC. \n\tA time zone is usually denoted geographically (e.g. Australian Eastern Daylight Time), with a constant value in a given region. \nThe region where it applies and the offset from UTC are specified by a locally recognised governing authority."@en ; + skos:historyNote "En la versión original de OWL-Time de 2006, se definió, en un espacio de nombres diferente \"http://www.w3.org/2006/timezone#\", la clase 'huso horario', con varias propiedades específicas correspondientes a un modelo específico de huso horario.\n En la versión actual hay una clase con el mismo nombre local en el espacio de nombres de OWL-Time, eliminando la dependencia del espacio de nombres externo.\n Un axioma de alineación permite que los datos codificados de acuerdo con la versión anterior sean consistentes con la ontología actualizada."@es , "In the original 2006 version of OWL-Time, the TimeZone class, with several properties corresponding to a specific model of time-zones, was defined in a separate namespace \"http://www.w3.org/2006/timezone#\". \n\nIn the current version a class with same local name is put into the main OWL-Time namespace, removing the dependency on the external namespace. \n\nAn alignment axiom \n\ttzont:TimeZone rdfs:subClassOf time:TimeZone . \nallows data encoded according to the previous version to be consistent with the updated ontology. " ; + skos:note "A designated timezone is associated with a geographic region. However, for a particular region the offset from UTC often varies seasonally, and the dates of the changes may vary from year to year. The timezone designation usually changes for the different seasons (e.g. Australian Eastern Standard Time vs. Australian Eastern Daylight Time). Furthermore, the offset for a timezone may change over longer timescales, though its designation might not. \n\nDetailed guidance about working with time zones is given in http://www.w3.org/TR/timezone/ ."@en , "An ontology for time zone descriptions was described in [owl-time-20060927] and provided as RDF in a separate namespace tzont:. However, that ontology was incomplete in scope, and the example datasets were selective. Furthermore, since the use of a class from an external ontology as the range of an ObjectProperty in OWL-Time creates a dependency, reference to the time zone class has been replaced with the 'stub' class in the normative part of this version of OWL-Time."@en , "Un huso horario designado está asociado con una región geográfica. Sin embargo, para una región particular el desplazamiento desde UTC a menudo varía según las estaciones, y las fechas de los cambios pueden variar de un año a otro. La designación de huso horario normalmente cambia de una estación a otra (por ejemplo, el horario estándar frente al horario de verano ambos del este de Australia). Además, del desplazamiento para un huso horario puede cambiar sobre escalas de tiempo mayores, aunque su designación no lo haga.\n Se puede encontrar una guía detallada sobre el funcionamiento de husos horarios en http://www.w3.org/TR/timezone/.\"@es , \"En [owl-time-20060927] se describió una ontología para descripciones de husos horarios, y se proporcionó en un espacio de nombres separado tzont:. Sin embargo, dicha ontología estaba incompleta en su alcance, y el ejemplo de conjuntos de datos (datasets) era selectivo. Además, puesto que el uso de una clase de una ontología externa como el rango de una propiedad de objeto en OWL-Time crea una dependencia, la referencia a la clase huso horario se ha reemplazado por una clase que viene a ser un \"cajón de sastre\" en la en la parte normativa de esta versión de OWL-Time."@es ; + skos:scopeNote "En esta implementación 'huso horario' no tiene definidas propiedades. Se debería pensar como una superclase \"abstracta\" de todas las implementaciones de huso horario específicas."@es , "In this implementation TimeZone has no properties defined. It should be thought of as an 'abstract' superclass of all specific timezone implementations." . + +vcard:latitude rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated. See hasGeo"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "latitude"@en ; + owl:deprecated true . + +<http://www.w3.org/ns/prov-o#> + rdf:type owl:Ontology ; + rdfs:comment "This document is published by the Provenance Working Group (http://www.w3.org/2011/prov/wiki/Main_Page). \n\nIf you wish to make comments regarding this document, please send them to public-prov-comments@w3.org (subscribe public-prov-comments-request@w3.org, archives http://lists.w3.org/Archives/Public/public-prov-comments/). All feedback is welcome."@en ; + rdfs:label "W3C PROVenance Interchange Ontology (PROV-O)"@en ; + rdfs:seeAlso <http://www.w3.org/TR/prov-o/> , <http://www.w3.org/ns/prov> ; + owl:versionIRI <http://www.w3.org/ns/prov-o-20130430> ; + owl:versionInfo "Recommendation version 2013-04-30"@en ; + prov:specializationOf <http://www.w3.org/ns/prov-o> ; + prov:wasRevisionOf <http://www.w3.org/ns/prov-o-20130312> . + +spdx:FileType rdf:type owl:Class ; + rdfs:comment "Type of file."@en ; + vs:term_status "stable"@en . + +rdfs:comment rdf:type owl:AnnotationProperty , owl:DatatypeProperty ; + rdfs:comment ""@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:range xsd:string . + +spdx:purpose_framework + rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package is a software framework."@en ; + vs:term_status "stable"@en . + +spdx:specVersion rdf:type owl:DatatypeProperty ; + rdfs:comment "Provide a reference number that can be used to understand how to parse and interpret the rest of the file. It will enable both future changes to the specification and to support backward compatibility. The version number consists of a major and minor version indicator. The major field will be incremented when incompatible changes between versions are made (one or more sections are created, modified or deleted). The minor field will be incremented when backwards compatible changes are made."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range xsd:string . + +dcterms:RFC5646 rdf:type rdfs:Datatype ; + rdfs:comment "The set of tags constructed according to RFC 5646 for the identification of languages."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "RFC 5646"@en ; + rdfs:seeAlso <http://www.ietf.org/rfc/rfc5646.txt> ; + dcterms:description "RFC 5646 obsoletes RFC 4646."@en ; + dcterms:issued "2010-10-11"^^xsd:date . + +skos:narrower rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "Narrower concepts are typically rendered as children in a concept hierarchy (tree)."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has narrower"@en ; + rdfs:subPropertyOf skos:narrowerTransitive ; + owl:inverseOf skos:broader ; + skos:definition "Relates a concept to a concept that is more specific in meaning."@en ; + skos:scopeNote "By convention, skos:broader is only used to assert an immediate (i.e. direct) hierarchical link between two conceptual resources."@en . + +spdx:ExternalDocumentRef + rdf:type owl:Class ; + rdfs:comment "Information about an external SPDX document reference including the checksum. This allows for verification of the external references."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:Checksum ; + owl:onProperty spdx:checksum ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:SpdxDocument ; + owl:onProperty spdx:spdxDocument ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:externalDocumentId ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +skos:memberList rdf:type owl:ObjectProperty , owl:FunctionalProperty , rdf:Property ; + rdfs:comment "For any resource, every item in the list given as the value of the\n skos:memberList property is also a value of the skos:member property."@en ; + rdfs:domain skos:OrderedCollection ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has member list"@en ; + rdfs:range rdf:List ; + skos:definition "Relates an ordered collection to the RDF list containing its members."@en . + +spdx:purpose_other rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package doesn't fit into other purpose defined terms."@en ; + vs:term_status "stable"@en . + +prov:atLocation rdf:type owl:ObjectProperty ; + rdfs:comment "The Location of any resource."@en , "This property has multiple RDFS domains to suit multiple OWL Profiles. See <a href=\"#owl-profile\">PROV-O OWL Profile</a>." ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity prov:InstantaneousEvent ) + ] ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity prov:InstantaneousEvent ) + ] ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "atLocation" ; + rdfs:range prov:Location ; + prov:category "expanded" ; + prov:editorialNote "This property is not functional because the many values could be at a variety of granularies (In this building, in this room, in that chair)."@en , "The naming of prov:atLocation parallels prov:atTime, and is not named prov:hadLocation to avoid conflicting with the convention that prov:had* properties are used on prov:Influence classes."@en ; + prov:inverse "locationOf" ; + prov:sharesDefinitionWith prov:Location . + +foaf:primaryTopic rdf:type owl:ObjectProperty ; + rdfs:comment "This axiom needed so that Protege loads DCAT2 without errors." . + +adms:last rdf:type owl:ObjectProperty ; + rdfs:comment "A link to the current or latest version of the Asset."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "last"@en ; + rdfs:range rdfs:Resource ; + rdfs:subPropertyOf <http://www.w3.org/1999/xhtml/vocab#last> . + +dcterms:replaces rdf:type rdf:Property ; + rdfs:comment "A related resource that is supplanted, displaced, or superseded by the described resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Replaces"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Is Replaced By."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:hasSource rdf:type owl:ObjectProperty ; + rdfs:comment "To identify the source of directory information of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has source"@en . + +vcard:Location rdf:type owl:Class ; + rdfs:comment "An object representing a named geographical place"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Location"@en ; + rdfs:subClassOf vcard:Kind ; + owl:disjointWith vcard:Organization . + +spdx:ReferenceType rdf:type owl:Class ; + rdfs:comment "Types used to external reference identifiers."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:contextualExample ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:documentation ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:externalReferenceSite ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +spdx:artifactOf rdf:type owl:ObjectProperty ; + rdfs:comment "Deprecated as of version 2.1"@en , "Indicates the project in which the SpdxElement originated. Tools must preserve doap:homepage and doap:name properties and the URI (if one is known) of doap:Project resources that are values of this property. All other properties of doap:Projects are not directly supported by SPDX and may be dropped when translating to or from some SPDX formats."@en ; + rdfs:domain spdx:SpdxElement ; + rdfs:range doap:Project ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +spdx:licenseListVersion + rdf:type owl:DatatypeProperty , owl:FunctionalProperty ; + rdfs:comment "An optional field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created."@en ; + rdfs:domain spdx:CreationInfo ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:copyrightText rdf:type owl:DatatypeProperty ; + rdfs:comment "The text of copyright declarations recited in the package, file or snippet.\n\nIf the copyrightText field is not present, it implies an equivalent meaning to NOASSERTION."@en ; + rdfs:domain spdx:SpdxItem ; + rdfs:range rdfs:Literal , xsd:string ; + vs:term_status "stable"@en . + +<http://www.w3.org/2009/pointers#ByteOffsetPointer> + rdf:type owl:Class ; + rdfs:subClassOf <http://www.w3.org/2009/pointers#OffsetPointer> ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:positiveInteger ; + owl:onProperty <http://www.w3.org/2009/pointers#offset> ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable" . + +spdx:OrLaterOperator rdf:type owl:Class ; + rdfs:comment "A license with an or later operator indicating this license version or any later version of the license"@en ; + rdfs:subClassOf spdx:AnyLicenseInfo ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:SimpleLicensingInfo ; + owl:onProperty spdx:member ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +dcterms:Policy rdf:type rdfs:Class ; + rdfs:comment "A plan or course of action by an authority, intended to influence and determine decisions, actions, and other matters."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Policy"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +<http://data.europa.eu/r5r#Relationship_Shape> + rdf:type sh:NodeShape ; + sh:name "Relationship"@en ; + sh:property [ sh:minCount 1 ; + sh:path dcat:hadRole ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:path dcterms:relation ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Relationship . + +dcat:servesDataset rdf:type owl:ObjectProperty ; + rdfs:comment "Una colección de datos que este Servicio de Datos puede distribuir."@es , "En samling af data som denne datatjeneste kan distribuere."@da , "Una raccolta di dati che questo DataService può distribuire."@it , "Kolekce dat, kterou je tato Datová služba schopna poskytnout."@cs , "A collection of data that this DataService can distribute."@en ; + rdfs:domain dcat:DataService ; + rdfs:label "serve set di dati"@it , "datatjeneste for datasæt"@da , "poskytuje datovou sadu"@cs , "serves dataset"@en , "provee conjunto de datos"@es ; + rdfs:range dcat:Dataset ; + skos:altLabel "udstiller"@da , "ekspederer"@da , "distribuerer"@da ; + skos:changeNote "New property in DCAT 2.0."@en , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "Nuova proprietà in DCAT 2.0."@it , "Nueva propiedad agregada en DCAT 2.0."@es ; + skos:definition "En samling af data som denne datatjeneste kan distribuere."@da , "Una raccolta di dati che questo DataService può distribuire."@it , "A collection of data that this DataService can distribute."@en , "Una colección de datos que este Servicio de Datos puede distribuir."@es , "Kolekce dat, kterou je tato Datová služba schopna poskytnout."@cs . + +dcterms:Standard rdf:type rdfs:Class ; + rdfs:comment "A reference point against which other things can be evaluated or compared."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Standard"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +time:Tuesday rdf:type time:DayOfWeek ; + rdfs:label "Tuesday"@en ; + skos:prefLabel "Dienstag"@de , "Terça-feira"@pt , "الثلاثاء"@ar , "Mardi"@fr , "Вторник"@ru , "Dinsdag"@nl , "火曜日"@ja , "Wtorek"@pl , "Tuesday"@en , "Martes"@es , "星期二"@zh , "Martedì"@it . + +spdx:relationshipType_optionalDependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +time:hasDuration rdf:type owl:ObjectProperty ; + rdfs:comment "Duration of a temporal entity, expressed as a scaled value or nominal value"@en , "Duración de una entidad temporal, expresada como un valor escalado o un valor nominal."@es ; + rdfs:label "has duration"@en , "tiene duración"@es ; + rdfs:range time:Duration ; + rdfs:subPropertyOf time:hasTemporalDuration ; + skos:definition "Duration of a temporal entity, event or activity, or thing, expressed as a scaled value"@en , "Duración de una entidad temporal, evento o actividad, o cosa, expresada como un valor escalado."@es . + +dcterms:PeriodOfTime rdf:type rdfs:Class ; + rdfs:comment "An interval of time that is named or defined by its start and end dates."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Period of Time"@en ; + rdfs:subClassOf dcterms:LocationPeriodOrJurisdiction ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:WithExceptionOperator + rdf:type owl:Class ; + rdfs:comment "Sometimes a set of license terms apply except under special circumstances. In this case, use the binary \"WITH\" operator to construct a new license expression to represent the special exception situation. A valid <license-expression> is where the left operand is a <simple-expression> value and the right operand is a <license-exception-id> that represents the special exception terms."@en ; + rdfs:subClassOf spdx:AnyLicenseInfo ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:LicenseException ; + owl:onProperty spdx:licenseException ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:SimpleLicensingInfo ; + owl:onProperty spdx:member ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +vcard:hasRegion rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the region data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has region"@en . + +[ rdf:type owl:AllDisjointClasses ; + owl:members ( spdx:Annotation spdx:Relationship spdx:SpdxElement ) +] . + +spdx:externalRef rdf:type owl:ObjectProperty ; + rdfs:comment "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package."@en ; + rdfs:domain spdx:Package ; + rdfs:range spdx:ExternalRef ; + vs:term_status "stable"@en . + +vcard:hasGeo rdf:type owl:ObjectProperty ; + rdfs:comment "To specify information related to the global positioning of the object. May also be used as a property parameter."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has geo"@en . + +vcard:Postal rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Postal"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +time:GeneralDurationDescription + rdf:type owl:Class ; + rdfs:comment "Descripción de extensión temporal estructurada con valores separados para los distintos elementos de un sistema de horario-calendario."@es , "Description of temporal extent structured with separate values for the various elements of a calendar-clock system."@en ; + rdfs:label "descripción de duración generalizada"@es , "Generalized duration description"@en ; + rdfs:subClassOf time:TemporalDuration ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:minutes + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:weeks + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:hasTRS + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:hours + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:years + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:days + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:seconds + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:months + ] ; + skos:definition "Description of temporal extent structured with separate values for the various elements of a calendar-clock system."@en , "Descripción de extensión temporal estructurada con valores separados para los distintos elementos de un sistema de horario-calendario."@es ; + skos:note "La extensión de una duración de tiempo expresada como una 'descripción de duración general' depende del Sistema de Referencia Temporal. En algunos calendarios la longitud de la semana o del mes no es constante a lo largo del año. Por tanto, un valor como \"25 meses\" puede no ser necesariamente ser comparado con un duración similar expresada en términos de semanas o días. Cuando se consideran calendarios que no están basados en el movimiento de la Tierra, se deben tomar incluso más precauciones en la comparación de duraciones."@es , "The extent of a time duration expressed as a GeneralDurationDescription depends on the Temporal Reference System. In some calendars the length of the week or month is not constant within the year. Therefore, a value like \"2.5 months\" may not necessarily be exactly compared with a similar duration expressed in terms of weeks or days. When non-earth-based calendars are considered even more care must be taken in comparing durations."@en . + +prov:Activity rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Activity" ; + owl:disjointWith prov:Entity ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities." ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Activity"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Activity"^^xsd:anyURI . + +time:Interval rdf:type owl:Class ; + rdfs:comment "A temporal entity with an extent or duration"@en , "Una entidad temporal con una extensión o duración."@es ; + rdfs:label "Time interval"@en , "intervalo de tiempo"@es ; + rdfs:subClassOf time:TemporalEntity ; + skos:definition "A temporal entity with an extent or duration"@en , "Una entidad temporal con una extensión o duración."@es . + +vcard:Voice rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Voice"@en ; + rdfs:subClassOf vcard:TelephoneType . + +vcard:hasFN rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the formatted name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has formatted name"@en . + +vcard:street-address rdf:type owl:DatatypeProperty ; + rdfs:comment "The street address associated with the address of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "street address"@en ; + rdfs:range xsd:string . + +dcterms:LCSH rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of labeled concepts specified by the Library of Congress Subject Headings."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "LCSH"@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +time:hasDurationDescription + rdf:type owl:ObjectProperty ; + rdfs:comment "Duration of a temporal entity, expressed using a structured description"@en , "Duración de una entidad temporal, expresada utilizando una descripción estructurada."@es ; + rdfs:label "has duration description"@en , "tiene descripción de duración"@es ; + rdfs:range time:GeneralDurationDescription ; + rdfs:subPropertyOf time:hasTemporalDuration ; + skos:definition "Duration of a temporal entity, expressed using a structured description"@en , "Duración de una entidad temporal, expresada utilizando una descripción estructurada."@es . + +vcard:role rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the function or part played in a particular situation by the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "role"@en ; + rdfs:range xsd:string . + +time:generalDay rdf:type rdfs:Datatype ; + rdfs:comment "Day of month - formulated as a text string with a pattern constraint to reproduce the same lexical form as gDay, except that values up to 99 are permitted, in order to support calendars with more than 31 days in a month. \nNote that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type."@en , "Día del mes - formulado como una cadena de texto con una restricción patrón para reproducir la misma forma léxica que gDay, excepto que se permiten valores hasta el 99, con el propósito de proporcionar soporte a calendarios con meses con más de 31 días.\n Nótese que el espacio de valores no está definido, por tanto, un procesador genérico de OWL2 no puede computar relaciones de orden de valores de este tipo."@es ; + rdfs:label "Generalized day"@en , "Día generalizado"@es ; + owl:onDatatype xsd:string ; + owl:withRestrictions ( [ xsd:pattern "---(0[1-9]|[1-9][0-9])(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?" ] + ) ; + skos:definition "Day of month - formulated as a text string with a pattern constraint to reproduce the same lexical form as gDay, except that values up to 99 are permitted, in order to support calendars with more than 31 days in a month. \nNote that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type."@en , "Día del mes - formulado como una cadena de texto con una restricción patrón para reproducir la misma forma léxica que gDay, excepto que se permiten valores hasta el 99, con el propósito de proporcionar soporte a calendarios con meses con más de 31 días.\n Nótese que el espacio de valores no está definido, por tanto, un procesador genérico de OWL2 no puede computar relaciones de orden de valores de este tipo."@es . + +spdx:isDeprecatedLicenseId + rdf:type owl:DatatypeProperty ; + rdfs:domain spdx:ListedLicense ; + rdfs:range xsd:boolean . + +spdx:checksumAlgorithm_md4 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was MD4" ; + vs:term_status "stable" . + +spdx:relationshipType_other + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "to be used for a relationship which has not been defined in the formal SPDX specification. A description of the relationship should be included in the Relationship comments field."@en ; + vs:term_status "stable"@en . + +vcard:Me rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Me"@en ; + rdfs:subClassOf vcard:RelatedType . + +spdx:licenseExceptionId + rdf:type owl:DatatypeProperty ; + rdfs:comment "Short form license exception identifier in Appendix I.2 of the SPDX specification."@en ; + rdfs:domain spdx:LicenseException ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +dcterms:bibliographicCitation + rdf:type rdf:Property ; + rdfs:comment "A bibliographic reference for the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Bibliographic Citation"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:identifier , dcterms:identifier ; + dcterms:description "Recommended practice is to include sufficient bibliographic detail to identify the resource as unambiguously as possible."@en ; + dcterms:issued "2003-02-15"^^xsd:date . + +prov:generated rdf:type owl:ObjectProperty ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "generated" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:influenced ; + owl:inverseOf prov:wasGeneratedBy ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:editorialNote "prov:generated is one of few inverse property defined, to allow Activity-oriented assertions in addition to Entity-oriented assertions."@en ; + prov:inverse "wasGeneratedBy" ; + prov:sharesDefinitionWith prov:Generation . + +vcard:bday rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the birth date of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "birth date"@en ; + rdfs:range [ rdf:type rdfs:Datatype ; + owl:unionOf ( xsd:dateTime xsd:dateTimeStamp xsd:gYear ) + ] . + +dcterms:language rdf:type rdf:Property ; + rdfs:comment "A language of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Language"@en ; + rdfs:subPropertyOf dc:language ; + dcam:rangeIncludes dcterms:LinguisticSystem ; + dcterms:description "Recommended practice is to use either a non-literal value representing a language from a controlled vocabulary such as ISO 639-2 or ISO 639-3, or a literal value consisting of an IETF Best Current Practice 47 [[IETF-BCP47](https://tools.ietf.org/html/bcp47)] language tag."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +prov:hadGeneration rdf:type owl:ObjectProperty ; + rdfs:comment "The _optional_ Generation involved in an Entity's Derivation."@en ; + rdfs:domain prov:Derivation ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadGeneration" ; + rdfs:range prov:Generation ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "generatedAsDerivation" ; + prov:sharesDefinitionWith prov:Generation . + +spdx:relationshipType_copyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_copyOf expresses that the SPDXElement is an exact copy of the relatedSDPXElement. For example, a downstream distribution of a binary library which was copied from the upstream package."@en ; + vs:term_status "stable"@en . + +time:intervalIn rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 es un intervalo interior a otro intervalo propio T2, entonces el principio de T1 está después del principio de T2 o coincide con el principio de T2, y el final de T1 está antes que el final de T2, o coincide con el final de T2, excepto que el final de T1 puede no coincidir con el final de T2 si el principio de T1 coincide con el principio de T2."@es , "If a proper interval T1 is intervalIn another proper interval T2, then the beginning of T1 is after the beginning of T2 or is coincident with the beginning of T2, and the end of T1 is before the end of T2, or is coincident with the end of T2, except that end of T1 may not be coincident with the end of T2 if the beginning of T1 is coincident with the beginning of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval in"@en , "intervalo interior"@es ; + rdfs:range time:ProperInterval ; + owl:propertyDisjointWith time:intervalEquals ; + skos:definition "If a proper interval T1 is intervalIn another proper interval T2, then the beginning of T1 is after the beginning of T2 or is coincident with the beginning of T2, and the end of T1 is before the end of T2, or is coincident with the end of T2, except that end of T1 may not be coincident with the end of T2 if the beginning of T1 is coincident with the beginning of T2."@en , "Si un intervalo propio T1 es un intervalo interior a otro intervalo propio T2, entonces el principio de T1 está después del principio de T2 o coincide con el principio de T2, y el final de T1 está antes que el final de T2, o coincide con el final de T2, excepto que el final de T1 puede no coincidir con el final de T2 si el principio de T1 coincide con el principio de T2."@es ; + skos:note "This interval relation is not included in the 13 basic relationships defined in Allen (1984), but is referred to as 'an important relationship' in Allen and Ferguson (1997). It is the disjoint union of :intervalStarts v :intervalDuring v :intervalFinishes . However, that is outside OWL2 expressivity, so is implemented as an explicit property, with :intervalStarts , :intervalDuring , :intervalFinishes as sub-properties"@en , "Esta relación entre intervalos no estaba incluida en las 13 relaciones básicas definidas por Allen (1984), pero se hace referencia a ella como \"una relación importante\" en Allen y Ferguson (1997). Es la unión disjunta de 'intervalo empieza', 'intervalo durante' y con 'intervalo termina'. Sin embargo, esto está fuera de la expresividad de OWL2, por tanto, se implementa como una propiedad explícita, con 'intervalo empieza', 'intervalo durante' e 'intervalo termina' como sub-propiedades."@es . + +adms:Asset rdf:type owl:Class ; + rdfs:comment "An abstract entity that reflects the intellectual content of the asset and represents those characteristics of the asset that are independent of its physical embodiment. This abstract entity combines the FRBR entities work (a distinct intellectual or artistic creation) and expression (the intellectual or artistic realization of a work)"@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "Asset"@en . + +vcard:Crush rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Crush"@en ; + rdfs:subClassOf vcard:RelatedType . + +spdx:checksumAlgorithm_adler32 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was ADLER32."@en ; + vs:term_status "stable"@en . + +vcard:hasSound rdf:type owl:ObjectProperty ; + rdfs:comment "To specify a digital sound content information that annotates some aspect of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has sound"@en ; + owl:equivalentProperty vcard:sound . + +spdx:primaryPackagePurpose + rdf:type owl:ObjectProperty ; + rdfs:comment "This field provides information about the primary purpose of the identified package. Package Purpose is intrinsic to how the package is being used rather than the content of the package."@en ; + rdfs:domain spdx:Package ; + rdfs:range spdx:Purpose ; + vs:term_status "stable"@en . + +owl:Thing rdf:type owl:Class . + +<http://data.europa.eu/r5r#Category_Shape> + rdf:type sh:NodeShape ; + sh:name "Category"@en ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path skos:prefLabel ; + sh:severity sh:Violation + ] ; + sh:targetClass skos:Concept . + +spdx:relationshipType_descendantOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_descendantOf expresses that an SPDXElement is a descendant of (same lineage but post-dates) the relatedSPDXElement. For example, an downstream File that was modified is a descendant of an upstream File"@en ; + vs:term_status "stable"@en . + +dcterms:license rdf:type rdf:Property ; + rdfs:comment "A legal document giving official permission to do something with the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "License"@en ; + rdfs:subPropertyOf dc:rights , dcterms:rights ; + dcam:rangeIncludes dcterms:LicenseDocument ; + dcterms:description "Recommended practice is to identify the license document with a URI. If this is not possible or feasible, a literal value that identifies the license may be provided."@en ; + dcterms:issued "2004-06-14"^^xsd:date . + +spdx:File rdf:type owl:Class ; + rdfs:comment "A File represents a named sequence of information that is contained in a software package."@en ; + rdfs:subClassOf spdx:SpdxItem ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Checksum ; + owl:onProperty spdx:checksum + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass doap:Project ; + owl:onProperty spdx:artifactOf + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:fileContributor + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:noticeText + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:fileName ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:File ; + owl:onProperty spdx:fileDependency + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:licenseInfoInFile + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:FileType ; + owl:onProperty spdx:fileType + ] ; + owl:disjointWith spdx:Snippet ; + vs:term_status "stable"@en . + +dcatap:shacl_shapes cc:attributionURL <http://ec.europa.eu/> ; + dcatap:availability dcatap:stable ; + dcterms:conformsTo <https://www.w3.org/TR/shacl> ; + dcterms:creator [ rdfs:seeAlso <http://eugeniu.costezki.ro#me> ; + org:memberOf <http://publications.europa.eu/resource/authority/corporate-body/PUBL> ; + foaf:homepage <http://costezki.ro> ; + foaf:name "Eugeniu Costetchi" + ] ; + dcterms:creator [ rdfs:seeAlso <https://www.ails.ece.ntua.gr/people/natasa> ; + org:memberOf <https://www.ails.ece.ntua.gr/> ; + foaf:homepage <https://www.ails.ece.ntua.gr/people/natasa> ; + foaf:name "Natasa Sofou" + ] ; + dcterms:creator [ rdfs:seeAlso <http://makxdekkers.com/#me> ; + org:memberOf <http://ami-consult.com/#id> ; + foaf:homepage <http://makxdekkers.com/> ; + foaf:name "Makx Dekkers" + ] ; + dcterms:creator [ rdfs:seeAlso <http://www.deri.ie/users/vassilios-peristeras/> ; + org:memberOf <http://publications.europa.eu/resource/authority/corporate-body/COM> ; + foaf:homepage <http://www.deri.ie/users/vassilios-peristeras/> ; + foaf:name "Vassilios Peristeras" + ] ; + dcterms:creator [ rdfs:seeAlso <http://nikosloutas.com/> ; + org:memberOf <http://www.pwc.com/gx/en/eu-institutions-services> ; + foaf:homepage <http://nikosloutas.com/> ; + foaf:name "Nikolaos Loutas" + ] ; + dcterms:creator [ rdfs:seeAlso <https://www.linkedin.com/in/bert-van-nuffelen-a349634/> ; + org:memberOf <https://tenforce.com> ; + foaf:homepage <https://www.linkedin.com/in/bert-van-nuffelen-a349634/> ; + foaf:name "Bert Van Nuffelen" + ] ; + dcterms:description "This document specifies the constraints on properties and classes expressed by DCAT-AP in SHACL."@en ; + dcterms:format <http://publications.europa.eu/resource/authority/file-type/RDF_TURTLE> ; + dcterms:license <https://creativecommons.org/licenses/by/4.0> ; + dcterms:modified "2021-12-01"^^xsd:date ; + dcterms:publisher <http://publications.europa.eu/resource/authority/corporate-body/DIGIT> ; + dcterms:relation <https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/dcat-application-profile-data-portals-europe/release/210> ; + dcterms:title "The constraints of DCAT Application Profile for Data Portals in Europe"@en ; + owl:versionInfo "2.1.1" ; + dcat:accessURL <https://joinup.ec.europa.eu/solution/dcat-application-profile-data-portals-europe/distribution/dcat-ap-200-shacl-shapes> ; + dcat:downloadURL <https://github.com/SEMICeu/DCAT-AP/raw/cea5a96bb4a6f120c20b7a2b3fb4d86bcd725952/releases/2.0.0/Draft/dcat-ap_2.0.0_shacl_shapes.ttl> ; + foaf:homepage <https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/dcat-application-profile-data-portals-europe/release/210> ; + foaf:maker [ foaf:mbox <mailto:contact@semic.eu> ; + foaf:name "DCAT-AP Working Group" ; + foaf:page <https://joinup.ec.europa.eu/node/64331> , <https://github.com/SEMICeu/DCAT-AP> + ] . + +prov:sharesDefinitionWith + rdf:type owl:AnnotationProperty ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +<http://www.w3.org/2006/time> + rdf:type owl:Ontology ; + rdfs:label "OWL-Time"@en , "Tiempo en OWL"@es ; + rdfs:seeAlso <http://www.w3.org/TR/owl-time> , <http://dx.doi.org/10.3233/SW-150187> , <http://www.semantic-web-journal.net/content/time-ontology-extended-non-gregorian-calendar-applications> ; + dcterms:contributor <https://orcid.org/0000-0001-8269-8171> , <mailto:chris.little@metoffice.gov.uk> ; + dcterms:created "2006-09-27"^^xsd:date ; + dcterms:creator <http://orcid.org/0000-0002-3884-3420> , <mailto:panfeng66@gmail.com> , <https://en.wikipedia.org/wiki/Jerry_Hobbs> ; + dcterms:isVersionOf <http://www.w3.org/TR/owl-time> ; + dcterms:license <https://creativecommons.org/licenses/by/4.0/> ; + dcterms:modified "2017-04-06"^^xsd:date ; + dcterms:rights "Copyright © 2006-2017 W3C, OGC. W3C and OGC liability, trademark and document use rules apply."@en ; + owl:priorVersion time:2006 ; + owl:versionIRI time:2016 ; + skos:changeNote "2016-06-15 - initial update of OWL-Time - modified to support arbitrary temporal reference systems. " , "2016-12-20 - adjust range of time:timeZone to time:TimeZone, moved up from the tzont ontology. " , "2017-02 - intervalIn, intervalDisjoint, monthOfYear added; TemporalUnit subclass of TemporalDuration" , "2016-12-20 - restore time:Year and time:January which were present in the 2006 version of the ontology, but now marked \"deprecated\". " , "2017-04-06 - hasTime, hasXSDDuration added; Number removed; all duration elements changed to xsd:decimal" ; + skos:historyNote "Update of OWL-Time ontology, extended to support general temporal reference systems. \n\nOntology engineering by Simon J D Cox"@en . + +spdx:relationshipType_describedBy + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used an SPDXRef-A is described by SPDXRef-Document."@en ; + vs:term_status "stable"@en . + +spdx:date rdf:type owl:DatatypeProperty ; + rdfs:comment "A date-time stamp."@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( spdx:Annotation spdx:CreationInfo ) + ] ; + rdfs:range xsd:dateTime ; + vs:term_status "stable"@en . + +time:unitMinute rdf:type time:TemporalUnit ; + rdfs:label "Minute (unit of temporal duration)"@en ; + skos:prefLabel "دقيقة واحدة"@ar , "minuut"@nl , "одна минута"@ru , "Minute"@de , "minuto"@es , "minuto"@it , "minuto"@pt , "분"@kr , "等一下"@zh , "一分"@jp , "minute"@en , "minute"@fr , "minuta"@pl ; + time:days "0"^^xsd:decimal ; + time:hours "0"^^xsd:decimal ; + time:minutes "1"^^xsd:decimal ; + time:months "0"^^xsd:decimal ; + time:seconds "0"^^xsd:decimal ; + time:weeks "0"^^xsd:decimal ; + time:years "0"^^xsd:decimal . + +dcat:service rdf:type owl:ObjectProperty ; + rdfs:comment "Umístění či přístupový bod registrovaný v katalogu."@cs , "A site or endpoint that is listed in the catalog."@en , "Un sito o endpoint elencato nel catalogo."@it , "Et websted eller et endpoint som er opført i kataloget."@da , "Un sitio o 'endpoint' que está listado en el catálogo."@es ; + rdfs:domain dcat:Catalog ; + rdfs:label "service"@en , "datatjeneste"@da , "servicio"@es , "servizio"@it , "služba"@cs ; + rdfs:range dcat:DataService ; + rdfs:subPropertyOf dcterms:hasPart , rdfs:member ; + skos:altLabel "har datatjeneste"@da ; + skos:changeNote "Nueva propiedad añadida en DCAT 2.0."@es , "Nuova proprietà aggiunta in DCAT 2.0."@it , "New property added in DCAT 2.0."@en , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs ; + skos:definition "Un sitio o 'endpoint' que está listado en el catálogo."@es , "Umístění či přístupový bod registrovaný v katalogu."@cs , "Et websted eller et endpoint som er opført i kataloget."@da , "A site or endpoint that is listed in the catalog."@en , "Un sito o endpoint elencato nel catalogo."@it . + +spdx:fileType_spdx rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "The file is an SPDX document."@en ; + vs:term_status "stable"@en . + +vcard:Kind rdf:type owl:Class ; + rdfs:comment "The parent class for all objects"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Kind"@en ; + owl:equivalentClass vcard:VCard ; + owl:equivalentClass [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty vcard:fn + ] . + +prov:used rdf:type owl:ObjectProperty ; + rdfs:comment "A prov:Entity that was used by this prov:Activity. For example, :baking prov:used :spoon, :egg, :oven ."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "used" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedUsage prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedUsage prov:entity ) ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:inverse "wasUsedBy" ; + prov:qualifiedForm prov:Usage , prov:qualifiedUsage . + +spdx:hasFile rdf:type owl:ObjectProperty ; + rdfs:comment "Indicates that a particular file belongs to a package."@en ; + rdfs:domain spdx:Package ; + rdfs:range spdx:File ; + vs:term_status "stable"@en . + +vcard:Modem rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Modem"@en ; + rdfs:subClassOf vcard:TelephoneType ; + owl:deprecated true . + +dcat:accessService rdf:type owl:ObjectProperty ; + rdfs:comment "A site or end-point that gives access to the distribution of the dataset."@en , "Un sito o end-point che dà accesso alla distribuzione del set di dati."@it , "Un sitio o end-point que da acceso a la distribución de un conjunto de datos."@es , "Umístění či přístupový bod zpřístupňující distribuci datové sady."@cs , "Et websted eller endpoint der giver adgang til en repræsentation af datasættet."@da ; + rdfs:label "služba pro přístup k datům"@cs , "data access service"@en , "servicio de acceso de datos"@es , "dataadgangstjeneste"@da , "servizio di accesso ai dati"@it ; + rdfs:range dcat:DataService ; + skos:changeNote "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "New property added in DCAT 2.0."@en , "Ny egenskab tilføjet i DCAT 2.0."@da , "Nueva propiedad agregada en DCAT 2.0."@es , "Nuova proprietà aggiunta in DCAT 2.0."@it ; + skos:definition "Umístění či přístupový bod zpřístupňující distribuci datové sady."@cs , "Un sito o end-point che dà accesso alla distribuzione del set di dati."@it , "Un sitio o end-point que da acceso a la distribución de un conjunto de datos."@es , "Et websted eller endpoint der giver adgang til en repræsentation af datasættet."@da , "A site or end-point that gives access to the distribution of the dataset."@en . + +time:Wednesday rdf:type time:DayOfWeek ; + rdfs:label "Wednesday"@en ; + skos:prefLabel "Mercoledì"@it , "Среда"@ru , "Woensdag"@nl , "Mercredi"@fr , "水曜日"@ja , "Quarta-feira"@pt , "Środa"@pl , "星期三"@zh , "الأربعاء"@ar , "Mittwoch"@de , "Miércoles"@es , "Wednesday"@en . + +time:intervalFinishes + rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 termina otro intervalo propio T2, entonces del principio de T1 está después del principio de T2, y el final de T1 coincide con el final de T2."@es , "If a proper interval T1 is intervalFinishes another proper interval T2, then the beginning of T1 is after the beginning of T2, and the end of T1 is coincident with the end of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo termina"@es , "interval finishes"@en ; + rdfs:range time:ProperInterval ; + rdfs:subPropertyOf time:intervalIn ; + owl:inverseOf time:intervalFinishedBy ; + skos:definition "If a proper interval T1 is intervalFinishes another proper interval T2, then the beginning of T1 is after the beginning of T2, and the end of T1 is coincident with the end of T2."@en , "Si un intervalo propio T1 termina otro intervalo propio T2, entonces del principio de T1 está después del principio de T2, y el final de T1 coincide con el final de T2."@es . + +skos:Concept rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "Concept"@en ; + skos:definition "An idea or notion; a unit of thought."@en . + +time:unitDay rdf:type time:TemporalUnit ; + rdfs:label "Day (unit of temporal duration)"@en ; + skos:prefLabel "Tag"@de , "day"@en , "dag"@nl , "dia"@pt , "día"@es , "doba"@pl , "ある日"@jp , "يوماً ما"@ar , "giorno"@it , "언젠가"@kr , "jour"@fr , "一天"@zh ; + time:days "1"^^xsd:decimal ; + time:hours "0"^^xsd:decimal ; + time:minutes "0"^^xsd:decimal ; + time:months "0"^^xsd:decimal ; + time:seconds "0"^^xsd:decimal ; + time:weeks "0"^^xsd:decimal ; + time:years "0"^^xsd:decimal . + +spdx:relationshipType_optionalComponentOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "To be used when SPDXRef-A is an optional component of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:relationshipType_expandedFromArchive + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_expandedFromArchive expresses that the SPDXElement is a file which was epanded from a relatedSPDXElement file. For example, if there is an archive file xyz.tar.gz containing a file foo.c the archive file was expanded in a directory arch/xyz, the file arch/xyz/foo.c would have a relationshipType_expandedFromArchive with the file xyz.tar.gz."@en ; + vs:term_status "stable"@en . + +<https://joinup.ec.europa.eu/node/43160> + dcterms:title "Process and Methodology for Developing Core Vocabularies" . + +dcterms:RFC4646 rdf:type rdfs:Datatype ; + rdfs:comment "The set of tags constructed according to RFC 4646 for the identification of languages."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "RFC 4646"@en ; + rdfs:seeAlso <http://www.ietf.org/rfc/rfc4646.txt> ; + dcterms:description "RFC 4646 obsoletes RFC 3066."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +adms:AssetDistribution + rdf:type owl:Class ; + rdfs:comment "A particular physical embodiment of an Asset, which is an example of the FRBR entity manifestation (the physical embodiment of an expression of a work)."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "Asset Distribution"@en . + +dcterms:isReferencedBy + rdf:type rdf:Property ; + rdfs:comment "A related resource that references, cites, or otherwise points to the described resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Is Referenced By"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of References."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:fileType_video rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "The file is associated with a video file type (MIME type of video/*)."@en ; + vs:term_status "stable"@en . + +dcterms:extent rdf:type rdf:Property ; + rdfs:comment "The size or duration of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Extent"@en ; + rdfs:subPropertyOf dc:format , dcterms:format ; + dcam:rangeIncludes dcterms:SizeOrDuration ; + dcterms:description "Recommended practice is to specify the file size in megabytes and duration in ISO 8601 format."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +locn:locatorDesignator + rdf:type rdf:Property ; + rdfs:comment "A number or a sequence of characters that uniquely identifies the locator within the relevant scope(s). The full identification of the locator could include one or more locator designators.\n "@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "locator designator"@en ; + dcterms:identifier "locn:locatorDesignator" ; + vs:term_status "testing"@en . + +vcard:sound rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "sound"@en ; + owl:equivalentProperty vcard:hasSound . + +time:nominalPosition rdf:type owl:DatatypeProperty ; + rdfs:comment "The (nominal) value indicating temporal position in an ordinal reference system "@en , "El valor (nominal) que indica posición temporal en un sistema de referencia ordinal."@es ; + rdfs:domain time:TimePosition ; + rdfs:label "Name of temporal position"@en , "nombre de posición temporal"@es ; + rdfs:range xsd:string ; + skos:definition "The (nominal) value indicating temporal position in an ordinal reference system "@en , "El valor (nominal) que indica posición temporal en un sistema de referencia ordinal."@es . + +spdx:PackageVerificationCode + rdf:type owl:Class ; + rdfs:comment "A manifest based verification code (the algorithm is defined in section 4.7 of the full specification) of the SPDX Item. This allows consumers of this data and/or database to determine if an SPDX item they have in hand is identical to the SPDX item from which the data was produced. This algorithm works even if the SPDX document is included in the SPDX item."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:packageVerificationCodeExcludedFile + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:hexBinary ; + owl:onProperty spdx:packageVerificationCodeValue ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +dcterms:hasFormat rdf:type rdf:Property ; + rdfs:comment "A related resource that is substantially the same as the pre-existing described resource, but in another format."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Has Format"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Is Format Of."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +time:DayOfWeek rdf:type owl:Class ; + rdfs:comment "The day of week"@en , "El día de la semana"@es ; + rdfs:label "día de la semana"@es , "Day of week"@en ; + rdfs:subClassOf owl:Thing ; + skos:changeNote "Remove enumeration from definition, in order to allow other days to be used when required in other calendars. \nNOTE: existing days are still present as members of the class, but the class membership is now open. \n\nIn the original OWL-Time the following constraint appeared: \n owl:oneOf (\n time:Monday\n time:Tuesday\n time:Wednesday\n time:Thursday\n time:Friday\n time:Saturday\n time:Sunday\n ) ;"@en ; + skos:definition "The day of week"@en , "El día de la semana"@es ; + skos:note "Membership of the class :DayOfWeek is open, to allow for alternative week lengths and different day names."@en , "La pertenencia a la clase 'día de la semana' está abierta, para permitir longitudes de semana alternativas y diferentes nombres de días."@es . + +vcard:hasMember rdf:type owl:ObjectProperty ; + rdfs:comment "To include a member in the group this object represents. (This property can only be used by Group individuals)"@en ; + rdfs:domain vcard:Group ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has member"@en ; + rdfs:range vcard:Kind . + +time:generalMonth rdf:type rdfs:Datatype ; + rdfs:comment "Month of year - formulated as a text string with a pattern constraint to reproduce the same lexical form as gMonth, except that values up to 20 are permitted, in order to support calendars with more than 12 months in the year. \nNote that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type."@en , "Mes del año - formulado como una cadena de texto con una restricción patrón para reproducir la misma forma léxica que gMonth, excepto que se permiten valores hasta el 20, con el propósito de proporcionar soporte a calendarios con años con más de 12 meses.\n Nótese que el espacio de valores no está definido, por tanto, un procesador genérico de OWL2 no puede computar relaciones de orden de valores de este tipo."@es ; + rdfs:label "Generalized month"@en , "Mes generalizado"@es ; + owl:onDatatype xsd:string ; + owl:withRestrictions ( [ xsd:pattern "--(0[1-9]|1[0-9]|20)(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?" ] + ) ; + skos:definition "Month of year - formulated as a text string with a pattern constraint to reproduce the same lexical form as gMonth, except that values up to 20 are permitted, in order to support calendars with more than 12 months in the year. \nNote that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type."@en , "Mes del año - formulado como una cadena de texto con una restricción patrón para reproducir la misma forma léxica que gMonth, excepto que se permiten valores hasta el 20, con el propósito de proporcionar soporte a calendarios con años con más de 12 meses.\n Nótese que el espacio de valores no está definido, por tanto, un procesador genérico de OWL2 no puede computar relaciones de orden de valores de este tipo."@es . + +spdx:checksumAlgorithm_blake2b256 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was BLAKE2b-256."@en ; + vs:term_status "stable"@en . + +prov:value rdf:type owl:DatatypeProperty ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "value" ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:definition "Provides a value that is a direct representation of an entity."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-value"^^xsd:anyURI ; + prov:editorialNote "This property serves the same purpose as rdf:value, but has been reintroduced to avoid some of the definitional ambiguity in the RDF specification (specifically, 'may be used in describing structured values')."@en , "The editor's definition comes from http://www.w3.org/TR/rdf-primer/#rdfvalue" . + +spdx:fileType_documentation + rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "The file serves as documentation."@en ; + vs:term_status "stable"@en . + +spdx:relationshipType_patchFor + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_patchFor expresses that the SPDXElement is a 'patchfile' that is designed to patch (apply modifications to) the relatedSPDXElement. For example, relationship from a .diff File to a Package it is designed to patch. "@en ; + vs:term_status "stable"@en . + +spdx:noticeText rdf:type owl:DatatypeProperty ; + rdfs:comment "This field provides a place for the SPDX file creator to record potential legal notices found in the file. This may or may not include copyright statements."@en ; + rdfs:domain spdx:File ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +time:ProperInterval rdf:type owl:Class ; + rdfs:comment "A temporal entity with non-zero extent or duration, i.e. for which the value of the beginning and end are different"@en , "Una entidad temporal con extensión o duración distinta de cero, es decir, para la cual los valores de principio y fin del intervalo son diferentes."@es ; + rdfs:label "Proper interval"@en , "intervalo propio"@es ; + rdfs:subClassOf time:Interval ; + owl:disjointWith time:Instant ; + skos:definition "A temporal entity with non-zero extent or duration, i.e. for which the value of the beginning and end are different"@en , "Una entidad temporal con extensión o duración distinta de cero, es decir, para la cual los valores de principio y fin del intervalo son diferentes."@es . + +rdfs:Container rdf:type owl:Class . + +spdx:creationInfo rdf:type owl:ObjectProperty ; + rdfs:comment "The creationInfo property relates an SpdxDocument to a set of information about the creation of the SpdxDocument."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range spdx:CreationInfo ; + vs:term_status "stable" . + +time:intervalEquals rdf:type owl:ObjectProperty ; + rdfs:comment "If a proper interval T1 is intervalEquals another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is coincident with the end of T2."@en , "Si un intervalo propio T1 es igual a otro intervalo propio T2, entonces el principio de T1 coincide con el principio de T2, y el final de T1 coincide con el final de T2."@es ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo igual"@es , "interval equals"@en ; + rdfs:range time:ProperInterval ; + owl:propertyDisjointWith time:intervalIn ; + skos:definition "If a proper interval T1 is intervalEquals another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is coincident with the end of T2."@en , "Si un intervalo propio T1 es igual a otro intervalo propio T2, entonces el principio de T1 coincide con el principio de T2, y el final de T1 coincide con el final de T2."@es . + +vcard:adr rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "address"@en ; + owl:equivalentProperty vcard:hasAddress . + +dcterms:Agent rdf:type dcterms:AgentClass , rdfs:Class ; + rdfs:comment "A resource that acts or has the power to act."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Agent"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcterms:RightsStatement + rdf:type rdfs:Class ; + rdfs:comment "A statement about the intellectual property rights (IPR) held in or over a resource, a legal document giving official permission to do something with a resource, or a statement about access rights."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Rights Statement"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:reviewDate rdf:type owl:DatatypeProperty ; + rdfs:comment "Deprecated in favor of Annotation with an annotationType_review."@en , "The date and time at which the SpdxDocument was reviewed. This value must be in UTC and have 'Z' as its timezone indicator."@en ; + rdfs:domain spdx:Review ; + rdfs:range xsd:dateTime ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +[ rdf:type owl:Axiom ; + owl:annotatedProperty rdfs:domain ; + owl:annotatedSource prov:wasInfluencedBy ; + owl:annotatedTarget [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + prov:definition "influencee: an identifier (o2) for an entity, activity, or agent; " ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-influence" +] . + +prov:wasRevisionOf rdf:type owl:ObjectProperty , owl:AnnotationProperty ; + rdfs:comment "A revision is a derivation that revises an entity into a revised version."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasRevisionOf" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasDerivedFrom ; + owl:propertyChainAxiom ( prov:qualifiedRevision prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedRevision prov:entity ) ; + prov:category "expanded" ; + prov:component "derivations" ; + prov:inverse "hadRevision" ; + prov:qualifiedForm prov:Revision , prov:qualifiedRevision . + +time:January rdf:type owl:Class , owl:DeprecatedClass ; + rdfs:label "January" ; + rdfs:subClassOf time:DateTimeDescription ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:hasValue time:unitMonth ; + owl:onProperty time:unitType + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:hasValue "--01" ; + owl:onProperty time:month + ] ; + owl:deprecated true ; + skos:historyNote "This class was present in the 2006 version of OWL-Time. It was presented as an example of how DateTimeDescription could be specialized, but does not belong in the revised ontology. " . + +skos:note rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "note"@en ; + skos:definition "A general note, for any purpose."@en ; + skos:scopeNote "This property may be used directly, or as a super-property for more specific note types."@en . + +vcard:Fax rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Fax"@en ; + rdfs:subClassOf vcard:TelephoneType . + +prov:Person rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Person" ; + rdfs:subClassOf prov:Agent ; + prov:category "expanded" ; + prov:component "agents-responsibility" ; + prov:definition "Person agents are people."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-types"^^xsd:anyURI . + +vcard:hasInstantMessage + rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the instant messaging and presence protocol communications with the object. (Was called IMPP in RFC6350)"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has messaging"@en . + +vcard:hasNote rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the note data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has note"@en . + +dcat:spatialResolutionInMeters + rdf:type owl:DatatypeProperty ; + rdfs:comment "minimum spatial separation resolvable in a dataset, measured in metres."@en-GB , "minimum spatial separation resolvable in a dataset, measured in meters."@en-US , "mínima separacíon espacial disponible en un conjunto de datos, medida en metros."@es , "separazione spaziale minima risolvibile in un set di dati, misurata in metri."@it , "mindste geografiske afstand som kan erkendes i et datasæt, målt i meter."@da , "minimální prostorový rozestup rozeznatelný v datové sadě, měřeno v metrech."@cs ; + rdfs:label "spatial resolution (metres)"@en-GB , "resolución espacial (metros)"@es , "spatial resolution (meters)"@en-US , "prostorové rozlišení (metry)"@cs , "risoluzione spaziale (metros)"@it , "geografisk opløsning (meter)"@da ; + rdfs:range xsd:decimal ; + skos:changeNote "Nueva propiedad añadida en DCAT 2.0."@es , "Nuova proprietà aggiunta in DCAT 2.0."@it , "New property added in DCAT 2.0."@en , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "Ny genskab tilføjet i DCAT 2.0."@da ; + skos:definition "minimum spatial separation resolvable in a dataset, measured in meters."@en-US , "separazione spaziale minima risolvibile in un set di dati, misurata in metri."@it , "minimální prostorový rozestup rozeznatelný v datové sadě, měřeno v metrech."@cs , "minimum spatial separation resolvable in a dataset, measured in metres."@en-GB , "mínima separacíon espacial disponible en un conjunto de datos, medida en metros."@es , "mindste geografiske afstand som kan resolveres i et datasæt, målt i meter."@da ; + skos:editorialNote "Může se vyskytnout v popisu Datové sady nebo Distribuce, takže nebyl specifikován definiční obor."@cs , "Might appear in the description of a Dataset or a Distribution, so no domain is specified."@en , "Kan optræde i forbindelse med beskrivelse af datasættet eller datasætditributionen, så der er ikke angivet et domæne for egenskaben."@da ; + skos:scopeNote "Pokud je datová sada obraz či mřížka, měla by tato vlastnost odpovídat rozestupu položek. Pro ostatní druhy prostorových datových sad bude tato vlastnost obvykle indikovat nejmenší vzdálenost mezi položkami této datové sady."@cs , "Hvis datasættet udgøres af et billede eller et grid, så bør dette svare til afstanden mellem elementerne. For andre typer af spatiale datasæt, vil denne egenskab typisk indikere den mindste afstand mellem elementerne i datasættet."@da , "Různá prostorová rozlišení mohou být poskytována jako různé distribuce datové sady."@cs , "Distintas distribuciones de un conjunto de datos pueden tener resoluciones espaciales diferentes."@es , "Se il set di dati è un'immagine o una griglia, questo dovrebbe corrispondere alla spaziatura degli elementi. Per altri tipi di set di dati spaziali, questa proprietà di solito indica la distanza minima tra gli elementi nel set di dati."@it , "Alternative geografiske opløsninger kan leveres som forskellige datasætdistributioner."@da , "Alternative spatial resolutions might be provided as different dataset distributions."@en , "Risoluzioni spaziali alternative possono essere fornite come diverse distribuzioni di set di dati."@it , "Si el conjunto de datos es una imágen o grilla, esta propiedad corresponde al espaciado de los elementos. Para otro tipo de conjunto de datos espaciales, esta propieda usualmente indica la menor distancia entre los elementos de dichos datos."@es , "If the dataset is an image or grid this should correspond to the spacing of items. For other kinds of spatial dataset, this property will usually indicate the smallest distance between items in the dataset."@en . + +time:GeneralDateTimeDescription + rdf:type owl:Class ; + rdfs:comment "Descripción de fecha y hora estructurada con valores separados para los distintos elementos de un sistema calendario-reloj."@es , "Description of date and time structured with separate values for the various elements of a calendar-clock system"@en ; + rdfs:label "descripción de fecha-hora generalizada"@es , "Generalized date-time description"@en ; + rdfs:subClassOf time:TemporalPosition ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:month + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:dayOfWeek + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:minute + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:timeZone + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:monthOfYear + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:year + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:dayOfYear + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:unitType + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:hour + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:day + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:second + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:week + ] ; + skos:definition "Descripción de fecha y hora estructurada con valores separados para los distintos elementos de un sistema calendario-reloj." , "Description of date and time structured with separate values for the various elements of a calendar-clock system"@en ; + skos:note "Algunas combinaciones de propiedades son redundantes - por ejemplo, dentro de un 'año' especificado si se proporciona 'día del año' entonces 'día' y 'mes' se pueden computar, y viceversa. Los valores individuales deberían ser consistentes entre ellos y con el calendario, indicado a través del valor de la propiedad 'tiene TRS'."@es , "Some combinations of properties are redundant - for example, within a specified :year if :dayOfYear is provided then :day and :month can be computed, and vice versa. Individual values should be consistent with each other and the calendar, indicated through the value of the :hasTRS property." . + +time:numericPosition rdf:type owl:DatatypeProperty ; + rdfs:comment "The (numeric) value indicating position within a temporal coordinate system "@en , "El valor (numérico) que indica posición temporal en un sistema de referencia ordinal."@es ; + rdfs:domain time:TimePosition ; + rdfs:label "Numeric value of temporal position"@en , "valor numérico de posición temporal"@es ; + rdfs:range xsd:decimal ; + skos:definition "The (numeric) value indicating position within a temporal coordinate system "@en , "El valor (numérico) que indica posición temporal en un sistema de referencia ordinal."@es . + +dcterms:alternative rdf:type rdf:Property ; + rdfs:comment "An alternative name for the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Alternative Title"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:title , dcterms:title ; + dcterms:description "The distinction between titles and alternative titles is application-specific."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +prov:component rdf:type owl:AnnotationProperty ; + rdfs:comment "Classify prov-o terms into six components according to prov-dm, including 'agents-responsibility', 'alternate', 'annotations', 'collections', 'derivations', and 'entities-activities'. This classification is used so that readers of prov-o specification can find its correspondence with the prov-dm specification."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> . + +dcterms: dcterms:modified "2012-06-14"^^xsd:date ; + dcterms:publisher <http://purl.org/dc/aboutdcmi#DCMI> ; + dcterms:title "DCMI Metadata Terms - other"@en . + +time:hasDateTimeDescription + rdf:type owl:ObjectProperty ; + rdfs:comment "Value of DateTimeInterval expressed as a structured value. The beginning and end of the interval coincide with the limits of the shortest element in the description."@en , "Valor de intervalo de fecha-hora expresado como un valor estructurado. El principio y el final del intervalo coincide con los límites del elemento más corto en la descripción."@es ; + rdfs:domain time:DateTimeInterval ; + rdfs:label "has Date-Time description"@en , "tiene descripción fecha-hora"@es ; + rdfs:range time:GeneralDateTimeDescription ; + skos:definition "Value of DateTimeInterval expressed as a structured value. The beginning and end of the interval coincide with the limits of the shortest element in the description."@en , "Valor de intervalo de fecha-hora expresado como un valor estructurado. El principio y el final del intervalo coincide con los límites del elemento más corto en la descripción."@es . + +dcat:Catalog rdf:type rdfs:Class , owl:Class ; + rdfs:comment "A curated collection of metadata about resources (e.g., datasets and data services in the context of a data catalog)."@en , "Una raccolta curata di metadati sulle risorse (ad es. sui dataset e relativi servizi nel contesto di cataloghi di dati)."@it , "Řízená kolekce metadat o datových sadách a datových službách"@cs , "Una colección curada de metadatos sobre recursos (por ejemplo, conjuntos de datos y servicios de datos en el contexto de un catálogo de datos)."@es , "Une collection élaborée de métadonnées sur les jeux de données"@fr , "Μια επιμελημένη συλλογή μεταδεδομένων περί συνόλων δεδομένων"@el , "مجموعة من توصيفات قوائم البيانات"@ar , "En udvalgt og arrangeret samling af metadata om ressourcer (fx datasæt og datatjenester i kontekst af et datakatalog). "@da , "データ・カタログは、データセットに関するキュレートされたメタデータの集合です。"@ja ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "Κατάλογος"@el , "Katalog"@cs , "Katalog"@da , "Catalogo"@it , "فهرس قوائم البيانات"@ar , "Catálogo"@es , "カタログ"@ja , "Catalog"@en , "Catalogue"@fr ; + rdfs:subClassOf dcat:Dataset ; + skos:definition "データ・カタログは、データセットに関するキュレートされたメタデータの集合です。"@ja , "Řízená kolekce metadat o datových sadách a datových službách."@cs , "Una raccolta curata di metadati sulle risorse (ad es. sui dataset e relativi servizi nel contesto di cataloghi di dati)."@it , "مجموعة من توصيفات قوائم البيانات"@ar , "Una colección curada de metadatos sobre recursos (por ejemplo, conjuntos de datos y servicios de datos en el contexto de un catálogo de datos)."@es , "Μια επιμελημένη συλλογή μεταδεδομένων περί συνόλων δεδομένων."@el , "Une collection élaborée de métadonnées sur les jeux de données."@fr , "En samling af metadata om ressourcer (fx datasæt og datatjenester i kontekst af et datakatalog)."@da , "A curated collection of metadata about resources (e.g., datasets and data services in the context of a data catalog)."@en ; + skos:editorialNote "English, Italian, Spanish definitions updated in this revision. Multilingual text not yet updated."@en ; + skos:scopeNote "Normalmente, un catálogo de datos disponible en la web se representa como una única instancia de esta clase."@es , "Et webbaseret datakatalog repræsenteres typisk ved en enkelt instans af denne klasse."@da , "Συνήθως, ένας κατάλογος δεδομένων στον Παγκόσμιο Ιστό αναπαρίσταται ως ένα στιγμιότυπο αυτής της κλάσης."@el , "Webový datový katalog je typicky reprezentován jako jedna instance této třídy."@cs , "A web-based data catalog is typically represented as a single instance of this class."@en , "Normalmente, un catalogo di dati nel web viene rappresentato come una singola istanza di questa classe."@it , "通常、ウェブ・ベースのデータ・カタログは、このクラスの1つのインスタンスとして表わされます。"@ja . + +prov:editorialNote rdf:type owl:AnnotationProperty ; + rdfs:comment "A note by the OWL development team about how this term expresses the PROV-DM concept, or how it should be used in context of semantic web or linked data."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> . + +vcard:None rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "None"@en ; + rdfs:subClassOf vcard:Gender . + +spdx:ExtractedLicensingInfo + rdf:type owl:Class ; + rdfs:comment "An ExtractedLicensingInfo represents a license or licensing notice that was found in a package, file or snippet. Any license text that is recognized as a license may be represented as a License rather than an ExtractedLicensingInfo."@en ; + rdfs:subClassOf spdx:SimpleLicensingInfo ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:extractedText ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable" . + +[ rdf:type owl:Axiom ; + rdfs:comment "Derivation is a particular case of trace (see http://www.w3.org/TR/prov-dm/#term-trace), since it links an entity to another entity that contributed to its existence." ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasDerivedFrom ; + owl:annotatedTarget prov:wasInfluencedBy +] . + +spdx:fileType_application + rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment " The file is associated with a specific application type (MIME type of application/* )"@en ; + vs:term_status "stable"@en . + +locn:addressArea rdf:type rdf:Property ; + rdfs:comment "The name or names of a geographic area or locality that groups a number of addressable objects for addressing purposes, without being an administrative unit. This would typically be part of a city, a neighbourhood or village. The domain of locn:addressArea is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "address area"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:addressArea" ; + vs:term_status "testing"@en . + +spdx:checksumAlgorithm_sha256 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA256"@en ; + vs:term_status "stable"@en . + +spdx:relationshipType_testDependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a test dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +prov:qualifiedRevision + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Entity prov:wasRevisionOf Entity :e, then it can qualify how it was revised using prov:qualifiedRevision [ a prov:Revision; prov:entity :e; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedRevision" ; + rdfs:range prov:Revision ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "revisedEntity" ; + prov:sharesDefinitionWith prov:Revision ; + prov:unqualifiedForm prov:wasRevisionOf . + +dcterms:Box rdf:type rdfs:Datatype ; + rdfs:comment "The set of regions in space defined by their geographic coordinates according to the DCMI Box Encoding Scheme."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "DCMI Box"@en ; + rdfs:seeAlso <https://www.dublincore.org/specifications/dublin-core/dcmi-box/> ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:url rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "url"@en ; + owl:equivalentProperty vcard:hasURL . + +spdx:Annotation rdf:type owl:Class ; + rdfs:comment "An Annotation is a comment on an SpdxItem by an agent." ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:AnnotationType ; + owl:onProperty spdx:annotationType ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:dateTime ; + owl:onProperty spdx:annotationDate ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:annotator ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +vcard:hasTelephone rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the telephone number for telephony communication with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has telephone"@en ; + owl:equivalentProperty vcard:tel . + +spdx:relationshipType_dependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +vcard:longitude rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated. See hasGeo"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "longitude"@en ; + owl:deprecated true . + +adms:schemaAgency rdf:type owl:DatatypeProperty ; + rdfs:comment "The name of the agency that issued the identifier."@en ; + rdfs:domain adms:Identifier ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "schema agency"@en ; + rdfs:range rdfs:Literal . + +spdx:description rdf:type owl:DatatypeProperty ; + rdfs:comment "Provides a detailed description of the package."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +time:intervalStartedBy + rdf:type owl:ObjectProperty ; + rdfs:comment "If a proper interval T1 is intervalStarted another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is after the end of T2."@en , "Si un intervalo propio T1 es empezado por otro intervalo propio T2, entonces el principio de T1 coincide con el principio de T2, y el final de T1 es posterior al final de T2."@es ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval started by"@en ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalStarts ; + skos:definition "If a proper interval T1 is intervalStarted another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is after the end of T2."@en , "Si un intervalo propio T1 es empezado por otro intervalo propio T2, entonces el principio de T1 coincide con el principio de T2, y el final de T1 es posterior al final de T2."@es . + +dcterms:Location rdf:type rdfs:Class ; + rdfs:comment "A spatial region or named place."@en , "dcterms:Location class fully represents the ISA Programme Location Core Vocabulary class of Location."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Location"@en ; + rdfs:subClassOf dcterms:LocationPeriodOrJurisdiction ; + dcterms:identifier "dcterms:Location" ; + dcterms:issued "2008-01-14"^^xsd:date ; + vann:usageNote "This is the key class for the ISA Programme Location Core Vocabulary and represents any location, irrespective of size or other restriction."@en ; + vs:term_status "testing"@en . + +skos:notation rdf:type owl:DatatypeProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "notation"@en ; + skos:definition "A notation, also known as classification code, is a string of characters such as \"T58.5\" or \"303.4833\" used to uniquely identify a concept within the scope of a given concept scheme."@en ; + skos:scopeNote "By convention, skos:notation is used with a typed literal in the object position of the triple."@en . + +vcard:hasLogo rdf:type owl:ObjectProperty ; + rdfs:comment "To specify a graphic image of a logo associated with the object "@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has logo"@en ; + owl:equivalentProperty vcard:logo . + +prov:qualifiedDelegation + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Agent prov:actedOnBehalfOf Agent :ag, then it can qualify how with prov:qualifiedResponsibility [ a prov:Responsibility; prov:agent :ag; :foo :bar ]."@en ; + rdfs:domain prov:Agent ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedDelegation" ; + rdfs:range prov:Delegation ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:inverse "qualifiedDelegationOf" ; + prov:sharesDefinitionWith prov:Delegation ; + prov:unqualifiedForm prov:actedOnBehalfOf . + +dcterms:isVersionOf rdf:type rdf:Property ; + rdfs:comment "A related resource of which the described resource is a version, edition, or adaptation."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Is Version Of"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "Changes in version imply substantive changes in content rather than differences in format. This property is intended to be used with non-literal values. This property is an inverse property of Has Version."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +time:inTemporalPosition + rdf:type owl:ObjectProperty ; + rdfs:comment "Position of a time instant"@en , "Posición de un instante de tiempo."@es ; + rdfs:domain time:Instant ; + rdfs:label "Temporal position"@en , "posición temporal"@es ; + rdfs:range time:TemporalPosition ; + skos:definition "Position of a time instant"@en , "Posición de un instante de tiempo."@es . + +time:second rdf:type owl:DatatypeProperty ; + rdfs:comment "Second position in a calendar-clock system."@en , "Posición de segundo en un sistema calendario-reloj."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "second"@en , "segundo"@es ; + rdfs:range xsd:decimal . + +dcat:Distribution rdf:type owl:Class , rdfs:Class ; + rdfs:comment "En specifik repræsentation af et datasæt. Et datasæt kan være tilgængelig i mange serialiseringer der kan variere på forskellige vis, herunder sprog, medietype eller format, systemorganisering, tidslig- og geografisk opløsning, detaljeringsniveau eller profiler (der kan specificere en eller flere af ovenstående)."@da , "Représente une forme spécifique d'un jeu de données. Caque jeu de données peut être disponible sous différentes formes, celles-ci pouvant représenter différents formats du jeu de données ou différents endpoint. Des exemples de distribution sont des fichirs CSV, des API ou des flux RSS."@fr , "Αναπαριστά μία συγκεκριμένη διαθέσιμη μορφή ενός συνόλου δεδομένων. Κάθε σύνολο δεδομενων μπορεί να είναι διαθέσιμο σε διαφορετικές μορφές, οι μορφές αυτές μπορεί να αναπαριστούν διαφορετικές μορφές αρχείων ή διαφορετικά σημεία διάθεσης. Παραδείγματα διανομών συμπεριλαμβάνουν ένα μεταφορτώσιμο αρχείο μορφής CSV, ένα API ή ένα RSS feed."@el , "شكل محدد لقائمة البيانات يمكن الوصول إليه. قائمة بيانات ما يمكن أن تكون متاحه باشكال و أنواع متعددة. ملف يمكن تحميله أو واجهة برمجية يمكن من خلالها الوصول إلى البيانات هي أمثلة على ذلك."@ar , "Konkrétní reprezentace datové sady. Datová sada může být dostupná v různých serializacích, které se mohou navzájem lišit různými způsoby, mimo jiné přirozeným jazykem, media-typem či formátem, schematickou organizací, časovým a prostorovým rozlišením, úrovní detailu či profily (které mohou specifikovat některé či všechny tyto rozdíly)."@cs , "データセットの特定の利用可能な形式を表わします。各データセットは、異なる形式で利用できることがあり、これらの形式は、データセットの異なる形式や、異なるエンドポイントを表わす可能性があります。配信の例には、ダウンロード可能なCSVファイル、API、RSSフィードが含まれます。"@ja , "Rappresenta una forma disponibile e specifica del dataset. Ciascun dataset può essere disponibile in forme differenti, che possono rappresentare formati diversi o diversi punti di accesso per un dataset. Esempi di distribuzioni sono un file CSV scaricabile, una API o un RSS feed."@it , "A specific representation of a dataset. A dataset might be available in multiple serializations that may differ in various ways, including natural language, media-type or format, schematic organization, temporal and spatial resolution, level of detail or profiles (which might specify any or all of the above)."@en , "Una representación específica de los datos. Cada conjunto de datos puede estar disponible en formas diferentes, las cuáles pueden variar en distintas formas, incluyendo el idioma, 'media-type' o formato, organización esquemática, resolución temporal y espacial, nivel de detalle o perfiles (que pueden especificar cualquiera o todas las diferencias anteriores)."@es ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "التوزيع"@ar , "Διανομή"@el , "Distribuce"@cs , "Distribuzione"@it , "配信"@ja , "Distribution"@en , "Distribution"@fr , "Distribution"@da , "Distribución"@es ; + skos:altLabel "Datamanifestation"@da , "Datarepræsentation"@da , "Dataudstilling"@da , "Datadistribution"@da ; + skos:definition "Konkrétní reprezentace datové sady. Datová sada může být dostupná v různých serializacích, které se mohou navzájem lišit různými způsoby, mimo jiné přirozeným jazykem, media-typem či formátem, schematickou organizací, časovým a prostorovým rozlišením, úrovní detailu či profily (které mohou specifikovat některé či všechny tyto rozdíly)."@cs , "Rappresenta una forma disponibile e specifica del dataset. Ciascun dataset può essere disponibile in forme differenti, che possono rappresentare formati diversi o diversi punti di accesso per un dataset. Esempi di distribuzioni sono un file CSV scaricabile, una API o un RSS feed."@it , "Una representación específica de los datos. Cada conjunto de datos puede estar disponible en formas diferentes, las cuáles pueden variar en distintas formas, incluyendo el idioma, 'media-type' o formato, organización esquemática, resolución temporal y espacial, nivel de detalle o perfiles (que pueden especificar cualquiera o todas las diferencias anteriores)."@es , "Représente une forme spécifique d'un jeu de données. Caque jeu de données peut être disponible sous différentes formes, celles-ci pouvant représenter différents formats du jeu de données ou différents endpoint. Des exemples de distribution sont des fichirs CSV, des API ou des flux RSS."@fr , "A specific representation of a dataset. A dataset might be available in multiple serializations that may differ in various ways, including natural language, media-type or format, schematic organization, temporal and spatial resolution, level of detail or profiles (which might specify any or all of the above)."@en , "Αναπαριστά μία συγκεκριμένη διαθέσιμη μορφή ενός συνόλου δεδομένων. Κάθε σύνολο δεδομενων μπορεί να είναι διαθέσιμο σε διαφορετικές μορφές, οι μορφές αυτές μπορεί να αναπαριστούν διαφορετικές μορφές αρχείων ή διαφορετικά σημεία διάθεσης. Παραδείγματα διανομών συμπεριλαμβάνουν ένα μεταφορτώσιμο αρχείο μορφής CSV, ένα API ή ένα RSS feed."@el , "データセットの特定の利用可能な形式を表わします。各データセットは、異なる形式で利用できることがあり、これらの形式は、データセットの異なる形式や、異なるエンドポイントを表わす可能性があります。配信の例には、ダウンロード可能なCSVファイル、API、RSSフィードが含まれます。"@ja , "شكل محدد لقائمة البيانات يمكن الوصول إليه. قائمة بيانات ما يمكن أن تكون متاحه باشكال و أنواع متعددة. ملف يمكن تحميله أو واجهة برمجية يمكن من خلالها الوصول إلى البيانات هي أمثلة على ذلك."@ar , "En specifik repræsentation af et datasæt. Et datasæt kan være tilgængelig i mange serialiseringer der kan variere på forskellige vis, herunder sprog, medietype eller format, systemorganisering, tidslig- og geografisk opløsning, detaljeringsniveau eller profiler (der kan specificere en eller flere af ovenstående)."@da ; + skos:scopeNote "Esta clase representa una disponibilidad general de un conjunto de datos, e implica que no existe información acerca del método de acceso real a los datos, i.e., si es un enlace de descarga directa o a través de una página Web."@es , "これは、データセットの一般的な利用可能性を表わし、データの実際のアクセス方式に関する情報(つまり、直接ダウンロードなのか、APIなのか、ウェブページを介したものなのか)を意味しません。dcat:downloadURLプロパティーの使用は、直接ダウンロード可能な配信を意味します。"@ja , "Ceci représente une disponibilité générale du jeu de données, et implique qu'il n'existe pas d'information sur la méthode d'accès réelle des données, par exple, si c'est un lien de téléchargement direct ou à travers une page Web."@fr , "Denne klasse repræsenterer datasættets overordnede tilgængelighed og giver ikke oplysninger om hvilken metode der kan anvendes til at få adgang til data, dvs. om adgang til datasættet realiseres ved direkte download, API eller via et websted. Anvendelsen af egenskaben dcat:downloadURL indikerer at distributionen kan downloades direkte."@da , "Αυτό αναπαριστά μία γενική διαθεσιμότητα ενός συνόλου δεδομένων και δεν υπονοεί τίποτα περί του πραγματικού τρόπου πρόσβασης στα δεδομένα, αν είναι άμεσα μεταφορτώσιμα, μέσω API ή μέσω μίας ιστοσελίδας. Η χρήση της ιδιότητας dcat:downloadURL δείχνει μόνο άμεσα μεταφορτώσιμες διανομές."@el , "This represents a general availability of a dataset it implies no information about the actual access method of the data, i.e. whether by direct download, API, or through a Web page. The use of dcat:downloadURL property indicates directly downloadable distributions."@en , "Toto popisuje obecnou dostupnost datové sady. Neimplikuje žádnou informaci o skutečné metodě přístupu k datům, tj. zda jsou přímo ke stažení, skrze API či přes webovou stránku. Použití vlastnosti dcat:downloadURL indikuje přímo stažitelné distribuce."@cs , "Questa classe rappresenta una disponibilità generale di un dataset e non implica alcuna informazione sul metodo di accesso effettivo ai dati, ad esempio se si tratta di un accesso a download diretto, API, o attraverso una pagina Web. L'utilizzo della proprietà dcat:downloadURL indica distribuzioni direttamente scaricabili."@it . + +vcard:hasAdditionalName + rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the additional name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has additional name"@en . + +[ rdf:type owl:Axiom ; + rdfs:comment "Revision is a derivation (see http://www.w3.org/TR/prov-dm/#term-Revision). Moreover, according to \nhttp://www.w3.org/TR/2013/REC-prov-constraints-20130430/#term-Revision 23 April 2012 'wasRevisionOf is a strict sub-relation of wasDerivedFrom since two entities e2 and e1 may satisfy wasDerivedFrom(e2,e1) without being a variant of each other.'" ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasRevisionOf ; + owl:annotatedTarget prov:wasDerivedFrom +] . + +locn:thoroughfare rdf:type rdf:Property ; + rdfs:comment "An address component that represents the name of a passage or way through from one location to another. A thoroughfare is not necessarily a road, it might be a waterway or some other feature. The domain of locn:thoroughfare is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "thoroughfare"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:thoroughfare" ; + vs:term_status "testing"@en . + +locn:Address rdf:type rdfs:Class ; + rdfs:comment "An \"address representation\" as conceptually defined by the INSPIRE Address Representation data type. The locn:addressId property may be used to link this locn:Address to other representations."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "Address"@en ; + dcterms:identifier "locn:Address" ; + vs:term_status "testing"@en ; + wdsr:describedby <https://joinup.ec.europa.eu/node/55858> . + +dcat:mediaType rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "Il tipo di media della distribuzione come definito da IANA"@it , "このプロパティーは、配信のメディア・タイプがIANAで定義されているときに使用すべきで(SHOULD)、そうでない場合には、dct:formatを様々な値と共に使用できます(MAY)。"@ja , "Η ιδιότητα αυτή ΘΑ ΠΡΕΠΕΙ να χρησιμοποιείται όταν ο τύπος μέσου μίας διανομής είναι ορισμένος στο IANA, αλλιώς η ιδιότητα dct:format ΔΥΝΑΤΑΙ να χρησιμοποιηθεί με διαφορετικές τιμές."@el , "Cette propriété doit être utilisée quand c'est définit le type de média de la distribution en IANA, sinon dct:format DOIT être utilisé avec différentes valeurs."@fr , "The media type of the distribution as defined by IANA"@en , "يجب استخدام هذه الخاصية إذا كان نوع الملف معرف ضمن IANA"@ar , "Medietypen for distributionen som den er defineret af IANA."@da , "Typ média distribuce definovaný v IANA."@cs , "Esta propiedad debe ser usada cuando está definido el tipo de media de la distribución en IANA, de otra manera dct:format puede ser utilizado con diferentes valores"@es ; + rdfs:domain dcat:Distribution ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "tipo de media"@es , "media type"@en , "نوع الميديا"@ar , "typ média"@cs , "メディア・タイプ"@ja , "type de média"@fr , "τύπος μέσου"@el , "medietype"@da , "tipo di media"@it ; + rdfs:range dcterms:MediaType ; + rdfs:subPropertyOf dcterms:format ; + skos:changeNote "Obor hodnot dcat:mediaType byl zúžen v této revizi DCAT."@cs , "Il range di dcat:mediaType è stato ristretto come parte della revisione di DCAT."@it , "The range of dcat:mediaType has been tightened as part of the revision of DCAT."@en ; + skos:definition "يجب استخدام هذه الخاصية إذا كان نوع الملف معرف ضمن IANA"@ar , "Η ιδιότητα αυτή ΘΑ ΠΡΕΠΕΙ να χρησιμοποιείται όταν ο τύπος μέσου μίας διανομής είναι ορισμένος στο IANA, αλλιώς η ιδιότητα dct:format ΔΥΝΑΤΑΙ να χρησιμοποιηθεί με διαφορετικές τιμές."@el , "Cette propriété doit être utilisée quand c'est définit le type de média de la distribution en IANA, sinon dct:format DOIT être utilisé avec différentes valeurs."@fr , "Esta propiedad debe ser usada cuando está definido el tipo de media de la distribución en IANA, de otra manera dct:format puede ser utilizado con diferentes valores."@es , "Il tipo di media della distribuzione come definito da IANA."@it , "The media type of the distribution as defined by IANA."@en , "このプロパティーは、配信のメディア・タイプがIANAで定義されているときに使用すべきで(SHOULD)、そうでない場合には、dct:formatを様々な値と共に使用できます(MAY)。"@ja , "Typ média distribuce definovaný v IANA."@cs , "Medietypen for distributionen som den er defineret af IANA."@da ; + skos:editorialNote "Status: English Definition text modified by DCAT revision team, Italian and Czech translation provided, other translations pending. Note some inconsistency on def vs. usage."@en ; + skos:scopeNote "Questa proprietà DEVE essere usata quando il tipo di media della distribuzione è definito nel registro dei tipi di media IANA https://www.iana.org/assignments/media-types/, altrimenti dct:format PUO 'essere usato con differenti valori."@it , "Tato vlastnost BY MĚLA být použita, je-li typ média distribuce definován v registru IANA https://www.iana.org/assignments/media-types/. V ostatních případech MŮŽE být použita vlastnost dct:format s jinými hodnotami."@cs , "Esta propiedad DEBERÍA usarse cuando el 'media type' de la distribución está definido en el registro IANA de 'media types' https://www.iana.org/assignments/media-types/, de lo contrario, dct:format PUEDE usarse con distintos valores."@es , "This property SHOULD be used when the media type of the distribution is defined in the IANA media types registry https://www.iana.org/assignments/media-types/, otherwise dct:format MAY be used with different values."@en , "Denne egenskab BØR anvendes hvis distributionens medietype optræder i 'IANA media types registry' https://www.iana.org/assignments/media-types/, ellers KAN egenskaben dct:format anvendes med et andet udfaldsrum."@da . + +prov:qualifiedUsage rdf:type owl:ObjectProperty ; + rdfs:comment "If this Activity prov:used Entity :e, then it can qualify how it used it using prov:qualifiedUsage [ a prov:Usage; prov:entity :e; :foo :bar ]."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedUsage" ; + rdfs:range prov:Usage ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:inverse "qualifiedUsingActivity" ; + prov:sharesDefinitionWith prov:Usage ; + prov:unqualifiedForm prov:used . + +dcterms:AgentClass rdf:type rdfs:Class ; + rdfs:comment "A group of agents."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Agent Class"@en ; + rdfs:subClassOf rdfs:Class ; + dcterms:issued "2008-01-14"^^xsd:date . + +prov:Collection rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Collection" ; + rdfs:subClassOf prov:Entity ; + prov:category "expanded" ; + prov:component "collections" ; + prov:definition "A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-collection"^^xsd:anyURI . + +dcterms:W3CDTF rdf:type rdfs:Datatype ; + rdfs:comment "The set of dates and times constructed according to the W3C Date and Time Formats Specification."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "W3C-DTF"@en ; + rdfs:seeAlso <http://www.w3.org/TR/NOTE-datetime> ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:checksumAlgorithm_sha3_384 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA3-384."@en ; + vs:term_status "stable"@en . + +spdx:relationshipType_dynamicLink + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A dynamically links to SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:License rdf:type owl:Class ; + rdfs:comment "A License represents a copyright license. The SPDX license list website is annotated with these properties (using RDFa) to allow license data published there to be easily processed. The license list is populated in accordance with the License List fields guidelines. These guidelines are not normative and may change over time. SPDX tooling should not rely on values in the license list conforming to the current guidelines."@en ; + rdfs:subClassOf spdx:SimpleLicensingInfo ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:standardLicenseHeaderTemplate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:standardLicenseHeader + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:isDeprecatedLicenseId + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:standardLicenseTemplate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:isOsiApproved ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:isFsfLibre + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseText ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +vcard:post-office-box + rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "post office box"@en ; + owl:deprecated true . + +time:hasTemporalDuration + rdf:type owl:ObjectProperty ; + rdfs:comment "Duration of a temporal entity."@en , "Duración de una entidad temporal."@es ; + rdfs:domain time:TemporalEntity ; + rdfs:label "has temporal duration"@en , "tiene duración temporal"@es ; + rdfs:range time:TemporalDuration ; + skos:definition "Duration of a temporal entity."@en , "Duración de una entidad temporal."@es . + +<http://www.w3.org/ns/locn.rdf> + rdfs:label "RDF/XML version of the ISA Programme Location Core Vocabulary"@en ; + dcterms:format <http://www.w3.org/ns/formats/data/RDF_XML> ; + dcat:mediaType "application/rdf+xml"^^dcterms:IMT . + +prov:Start rdf:type owl:Class ; + rdfs:comment "An instance of prov:Start provides additional descriptions about the binary prov:wasStartedBy relation from some started prov:Activity to an prov:Entity that started it. For example, :foot_race prov:wasStartedBy :bang; prov:qualifiedStart [ a prov:Start; prov:entity :bang; :foo :bar; prov:atTime '2012-03-09T08:05:08-05:00'^^xsd:dateTime ] ."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Start" ; + rdfs:subClassOf prov:EntityInfluence , prov:InstantaneousEvent ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Start is when an activity is deemed to have been started by an entity, known as trigger. The activity did not exist before its start. Any usage, generation, or invalidation involving an activity follows the activity's start. A start may refer to a trigger entity that set off the activity, or to an activity, known as starter, that generated the trigger."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Start"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Start"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasStartedBy . + +spdx:extractedText rdf:type owl:DatatypeProperty ; + rdfs:comment "Provide a copy of the actual text of the license reference extracted from the package, file or snippet that is associated with the License Identifier to aid in future analysis."@en ; + rdfs:domain spdx:ExtractedLicensingInfo ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +dcterms:tableOfContents + rdf:type rdf:Property ; + rdfs:comment "A list of subunits of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Table Of Contents"@en ; + rdfs:subPropertyOf dc:description , dcterms:description ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:range rdf:type owl:ObjectProperty ; + rdfs:comment "This field defines the byte range in the original host file (in X.2) that the snippet information applies to"@en ; + rdfs:domain spdx:Snippet ; + rdfs:range <http://www.w3.org/2009/pointers#StartEndPointer> ; + vs:term_status "stable"@en . + +time:unitHour rdf:type time:TemporalUnit ; + rdfs:label "Hour (unit of temporal duration)"@en ; + skos:prefLabel "один час\"@ru" , "一時間"@jp , "godzina"@pl , "Stunde"@de , "一小時"@zh , "한 시간"@kr , "hora"@es , "hora"@pt , "ora"@it , "hour"@en , "ساعة واحدة"@ar , "uur"@nl , "heure"@fr ; + time:days "0"^^xsd:decimal ; + time:hours "1"^^xsd:decimal ; + time:minutes "0"^^xsd:decimal ; + time:months "0"^^xsd:decimal ; + time:seconds "0"^^xsd:decimal ; + time:weeks "0"^^xsd:decimal ; + time:years "0"^^xsd:decimal . + +prov:specializationOf + rdf:type owl:ObjectProperty , owl:AnnotationProperty ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "specializationOf" ; + rdfs:range prov:Entity ; + rdfs:seeAlso prov:alternateOf ; + rdfs:subPropertyOf prov:alternateOf ; + prov:category "expanded" ; + prov:component "alternate" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "An entity that is a specialization of another shares all aspects of the latter, and additionally presents more specific aspects of the same thing as the latter. In particular, the lifetime of the entity being specialized contains that of any specialization. Examples of aspects include a time period, an abstraction, and a context associated with the entity."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-specialization"^^xsd:anyURI ; + prov:inverse "generalizationOf" ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-specialization"^^xsd:anyURI . + +prov:qualifiedInfluence + rdf:type owl:ObjectProperty ; + rdfs:comment "Because prov:qualifiedInfluence is a broad relation, the more specific relations (qualifiedCommunication, qualifiedDelegation, qualifiedEnd, etc.) should be used when applicable."@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Activity prov:Agent prov:Entity ) + ] ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedInfluence" ; + rdfs:range prov:Influence ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "qualifiedInfluenceOf" ; + prov:sharesDefinitionWith prov:Influence ; + prov:unqualifiedForm prov:wasInfluencedBy . + +vcard:country-name rdf:type owl:DatatypeProperty ; + rdfs:comment "The country name associated with the address of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "country name"@en ; + rdfs:range xsd:string . + +vcard:Other rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Other"@en ; + rdfs:subClassOf vcard:Gender . + +<http://data.europa.eu/r5r#Identifier_Shape> + rdf:type sh:NodeShape ; + sh:name "Identifier"@en ; + sh:property [ sh:maxCount 1 ; + sh:path skos:notation ; + sh:severity sh:Violation + ] ; + sh:targetClass adms:Identifier . + +spdx:Purpose rdf:type owl:Class ; + rdfs:comment "Package Purpose is intrinsic to how the package is being used rather than the content of the package." ; + vs:term_status "stable" . + +spdx:isWayBackLink rdf:type owl:DatatypeProperty ; + rdfs:comment "True if the License SeeAlso URL points to a Wayback archive"@en ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:boolean . + +time:month rdf:type owl:DatatypeProperty ; + rdfs:comment "Month position in a calendar-clock system.\n\nThe range of this property is not specified, so can be replaced by any specific representation of a calendar month from any calendar. "@en , "Posición de mes en un sistema calendario-reloj.\n El rango de esta propiedad no está especificado, por tanto, se puede reemplazar por cualquier representación específica de un mes de calendario de un calendario cualquiera."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "month"@en , "mes"@es ; + skos:definition "Month position in a calendar-clock system.\n\nThe range of this property is not specified, so can be replaced by any specific representation of a calendar month from any calendar. "@en , "Posición de mes en un sistema calendario-reloj.\n El rango de esta propiedad no está especificado, por tanto, se puede reemplazar por cualquier representación específica de un mes de calendario de un calendario cualquiera."@es . + +time:seconds rdf:type owl:DatatypeProperty ; + rdfs:comment "length of, or element of the length of, a temporal extent expressed in seconds"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en segundos."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "seconds duration"@en , "duración en segundos"@es ; + rdfs:range xsd:decimal ; + rdfs:seeAlso <http://www.bipm.org/en/publications/si-brochure/second.html> . + +vcard:Agent rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Agent"@en ; + rdfs:subClassOf vcard:RelatedType . + +vcard:hasCalendarRequest + rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the calendar user address to which a scheduling request be sent for the object. (Was called CALADRURI in RFC6350)"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has calendar request"@en . + +dcterms:UDC rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of conceptual resources specified by the Universal Decimal Classification."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "UDC"@en ; + rdfs:seeAlso <http://www.udcc.org/> ; + dcterms:issued "2000-07-11"^^xsd:date . + +locn:location rdf:type rdf:Property ; + rdfs:comment "The location property links any resource to the Location Class. Asserting the location relationship implies only that the domain has some connection to a Location in time or space. It does not imply that the resource is necessarily at that location at the time when the assertion is made."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "location"@en ; + rdfs:range dcterms:Location ; + dcterms:identifier "locn:location" ; + vs:term_status "testing"@en . + +spdx:relationshipType_prerequisiteFor + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B"@en ; + vs:term_status "stable"@en . + +spdx:checksumAlgorithm_blake2b512 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was BLAKE2b-512."@en ; + vs:term_status "stable"@en . + +spdx:describesPackage + rdf:type owl:ObjectProperty ; + rdfs:comment "The describesPackage property relates an SpdxDocument to the package which it describes."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range spdx:Package ; + vs:term_status "stable"@en . + +vcard:hasName rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the components of the name of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has name"@en ; + rdfs:range vcard:Name ; + owl:equivalentProperty vcard:n . + +spdx:purpose_file rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package is a single file which can be independently distributed (configuration file, statically linked binary, Kubernetes deployment, etc)."@en ; + vs:term_status "stable"@en . + +time:day rdf:type owl:DatatypeProperty ; + rdfs:comment "Day position in a calendar-clock system.\n\nThe range of this property is not specified, so can be replaced by any specific representation of a calendar day from any calendar. "@en , "Posición de día en un sistema calendario-reloj."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "day"@en , "día"@es ; + skos:definition "Day position in a calendar-clock system.\n\nThe range of this property is not specified, so can be replaced by any specific representation of a calendar day from any calendar. "@en , "Posición de día en un sistema calendario-reloj.\n\nEl rango de esta propiedad no está especificado, por tanto, se puede reemplazar por una representación específica de un día de calendario de cualquier calendario."@es . + +dcterms:medium rdf:type rdf:Property ; + rdfs:comment "The material or physical carrier of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Medium"@en ; + rdfs:subPropertyOf dc:format , dcterms:format ; + dcam:domainIncludes dcterms:PhysicalResource ; + dcam:rangeIncludes dcterms:PhysicalMedium ; + dcterms:issued "2000-07-11"^^xsd:date . + +<http://www.w3.org/ns/locn> + rdf:type voaf:Vocabulary , owl:Ontology ; + rdfs:comment "This is a new version of the final draft published by the European Commission in May 2012, revised according to the results of the ISA Core Location Pilot (see Section Change History for the list of changes). It is currently under the control of the Locations and Addresses Community Group, but is not under active development or review. Comments and queries should be sent to that group via public-locadd@w3.org. Terms defined here may be deprecated by that or future groups but will not disappear or their definition change."@en ; + rdfs:label "ISA Programme Location Core Vocabulary"@en ; + cc:attributionName "European Commission"@en ; + cc:attributionURL <http://ec.europa.eu/> ; + dcterms:abstract "The ISA Programme Location Core Vocabulary provides a minimum set of classes and properties for describing any place in terms of its name, address or geometry. The vocabulary is specifically designed to aid the publication of data that is interoperable with EU INSPIRE Directive. It is closely integrated with the Business and Person Core Vocabularies of the EU ISA Programme, now available in W3C space as, respectively, the Registered Organization vocabulary and ISA Person Core Vocabulary."@en ; + dcterms:conformsTo <https://joinup.ec.europa.eu/node/43160> ; + dcterms:hasFormat <http://www.w3.org/ns/locn.ttl> , <http://www.w3.org/ns/locn.rdf> , <http://www.w3.org/ns/locn.html> ; + dcterms:issued "2013-11-25"^^xsd:date ; + dcterms:license <https://joinup.ec.europa.eu/category/licence/isa-open-metadata-licence-v11> ; + dcterms:mediator [ foaf:homepage <http://www.w3.org/community/locadd/> ; + foaf:mbox <mailto:public-locadd@w3.org> ; + foaf:name "Locations and Addresses Community Group" + ] ; + dcterms:modified "2015-03-23"^^xsd:date ; + dcterms:rights "Copyright © European Union, 2012-2015."@en ; + dcterms:title "ISA Programme Location Core Vocabulary"@en ; + vann:changes "\n2015-03-23: Updates in the namespace document and in the RDF/XML and Turtle schemas:\n- Fixed copyright notice.\n- Added class and property diagram.\n- Updated GeoSPARQL (a) namespace URIs and (b) datatype names in the examples of property locn:geometry, based on version 1.0 of the GeoSPARQL specification, and added a note in the examples.\n - prefix ogc (http://www.opengis.net/rdf#) replaced with gsp (http://www.opengis.net/ont/geosparql#) and sf (http://www.opengis.net/ont/sf#)\n - ogc:WKTLiteral → gsp:wktLiteral\n - ogc:GMLLiteral → gsp:gmlLiteral\n- Added namespace declarations for all namespace prefixes used in LOCN namespace document, even though they are not used in class/property definitions.\n- Corrected the endonym of the Greek capital written in the Greek script in the definition of class locn:geographicName (Aθnνa → Αθήνα).\n- Fixed links and typos, minor revisions made to the textual descriptions.\n2013-12-21: (PhilA) Update in RDF/XML and Turtle schemas:\n- Updated voaf namespace.\n- Corrected links to different distributions of the schema.\n- Removed xml:base and used http://www/w3/org/ns/locn as the schema URI cf. original which used the namespace URI (with the final # character).\n2013-11-25: Changes since final draft version released by the EU ISA Programme Core Vocabularies Working Group (Location Task Force)\n- Revised usage note of class locn:Geometry. The text describing its recommended usage has been moved to usage note of property locn:geometry.\n- Dropped domain/range restriction for locn:geographicName.\n- Dropped domain/range restriction for locn:locatorDesignator. Free text definition updated accordingly.\n- Dropped domain/range restriction for locn:locatorName. Free text definition updated accordingly.\n- Corrected free text definition of property locn:geometry (its domain is \"any resource\", and not a \"location\").\n- Revised usage note of property locn:geometry to include text about recommended usage, formerly included in the usage note of class locn:Geometry.\n- Revised usage note and examples of property locn:geometry to include support to geocoded URIs (e.g., geo URIs, GeoHash URIs).\n- Added term status. All terms have been set to \"testing\", with the exception of class locn:Geometry and properties rdfs:seeAlso (geographic identifier) and locn:addressId.\n- Renamed subject in Turtle examples (ex:a → :Resource).\n- Fixed links and typos, minor revisions made to the textual descriptions.\n "@en ; + vann:preferredNamespacePrefix "locn" ; + vann:preferredNamespaceUri "http://www.w3.org/ns/locn#"^^xsd:anyURI ; + voaf:classNumber "3"^^xsd:nonNegativeInteger ; + voaf:propertyNumber "16"^^xsd:nonNegativeInteger ; + voaf:reliesOn dcterms: , rdfs: ; + rec:editor [ rdfs:seeAlso <http://andrea-perego.name/foaf/#me> ; + sdo:affiliation [ foaf:homepage <https://ec.europa.eu/jrc/> ; + foaf:name "European Commission - Joint Research Centre (JRC)"@en + ] ; + foaf:homepage <http://about.me/andrea.perego> ; + foaf:name "Andrea Perego" + ] ; + rec:editor [ rdfs:seeAlso <http://philarcher.org/foaf.rdf#me> ; + sdo:affiliation [ foaf:homepage <http://www.w3.org/> ; + foaf:name "W3C/ERCIM" + ] ; + foaf:homepage <http://philarcher.org/> ; + foaf:name "Phil Archer" + ] ; + rec:editor [ sdo:affiliation [ foaf:homepage <https://ec.europa.eu/jrc/> ; + foaf:name "European Commission - Joint Research Centre (JRC)"@en + ] ; + foaf:name "Michael Lutz" + ] ; + owl:versionInfo "First version in w3.org/ns space"@en ; + wdsr:describedby <https://joinup.ec.europa.eu/node/55858> ; + foaf:depiction <https://www.w3.org/ns/locn.svg> ; + foaf:maker [ foaf:homepage <https://joinup.ec.europa.eu/node/42444> ; + foaf:name "EU ISA Programme Core Vocabularies Working Group (Location Task Force)" + ] . + +vcard:Met rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Met"@en ; + rdfs:subClassOf vcard:RelatedType . + +skos:exactMatch rdf:type owl:ObjectProperty , owl:SymmetricProperty , owl:TransitiveProperty , rdf:Property ; + rdfs:comment "skos:exactMatch is disjoint with each of the properties skos:broadMatch and skos:relatedMatch."@en ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has exact match"@en ; + rdfs:subPropertyOf skos:closeMatch ; + skos:definition "skos:exactMatch is used to link two concepts, indicating a high degree of confidence that the concepts can be used interchangeably across a wide range of information retrieval applications. skos:exactMatch is a transitive property, and is a sub-property of skos:closeMatch."@en . + +vcard:hasRelated rdf:type owl:ObjectProperty ; + rdfs:comment "To specify a relationship between another entity and the entity represented by this object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has related"@en . + +vcard:Text rdf:type owl:Class ; + rdfs:comment "Also called sms telephone"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Text"@en ; + rdfs:subClassOf vcard:TelephoneType . + +time:intervalOverlappedBy + rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 es 'intervalo solapado por' otro intervalo propio T2, entonces el principio de T1 es posterior al principio de T2, y el principio de T1 es anterior al final de T2, y el final de T1 es posterior al final de T2."@es , "If a proper interval T1 is intervalOverlappedBy another proper interval T2, then the beginning of T1 is after the beginning of T2, the beginning of T1 is before the end of T2, and the end of T1 is after the end of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo solapado por"@es , "interval overlapped by"@en ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalOverlaps ; + skos:definition "If a proper interval T1 is intervalOverlappedBy another proper interval T2, then the beginning of T1 is after the beginning of T2, the beginning of T1 is before the end of T2, and the end of T1 is after the end of T2."@en , "Si un intervalo propio T1 es 'intervalo solapado por' otro intervalo propio T2, entonces el principio de T1 es posterior al principio de T2, y el principio de T1 es anterior al final de T2, y el final de T1 es posterior al final de T2."@es . + +spdx:relationshipType_dependencyManifestOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a manifest file that lists a set of dependencies for SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:fileType_binary rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "Indicates the file is not a text file. spdx:filetype_archive is preferred for archive files even though they are binary."@en ; + vs:term_status "stable"@en . + +vcard:class rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "class"@en ; + owl:deprecated true . + +dcterms:IMT rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of media types specified by the Internet Assigned Numbers Authority."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "IMT"@en ; + rdfs:seeAlso <http://www.iana.org/assignments/media-types/> ; + dcterms:issued "2000-07-11"^^xsd:date . + +prov:qualifiedEnd rdf:type owl:ObjectProperty ; + rdfs:comment "If this Activity prov:wasEndedBy Entity :e1, then it can qualify how it was ended using prov:qualifiedEnd [ a prov:End; prov:entity :e1; :foo :bar ]."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedEnd" ; + rdfs:range prov:End ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:inverse "qualifiedEndOf" ; + prov:sharesDefinitionWith prov:End ; + prov:unqualifiedForm prov:wasEndedBy . + +prov:alternateOf rdf:type owl:ObjectProperty ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "alternateOf" ; + rdfs:range prov:Entity ; + rdfs:seeAlso prov:specializationOf ; + prov:category "expanded" ; + prov:component "alternate" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Two alternate entities present aspects of the same thing. These aspects may be the same or different, and the alternate entities may or may not overlap in time."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-alternate"^^xsd:anyURI ; + prov:inverse "alternateOf" ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-alternate"^^xsd:anyURI . + +vcard:hasPostalCode rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the postal code data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has postal code"@en . + +dcterms:isReplacedBy rdf:type rdf:Property ; + rdfs:comment "A related resource that supplants, displaces, or supersedes the described resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Is Replaced By"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Replaces."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:Parent rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Parent"@en ; + rdfs:subClassOf vcard:RelatedType . + +spdx:deprecatedVersion + rdf:type owl:DatatypeProperty ; + rdfs:comment "License list version where this license was decprecated"@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( spdx:ListedLicense spdx:ListedLicenseException ) + ] ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +vcard:hasCalendarLink + rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the calendar associated with the object. (Was called CALURI in RFC6350)"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has calendar link"@en . + +time:Friday rdf:type time:DayOfWeek ; + rdfs:label "Friday"@en ; + skos:prefLabel "Venerdì"@it , "Vendredi"@fr , "Viernes"@es , "Friday"@en , "Piątek"@pl , "Vrijdag"@nl , "Freitag"@de , "Пятница"@ru , "金曜日"@ja , "الجمعة"@ar , "星期五"@zh , "Sexta-feira"@pt . + +spdx:fileType rdf:type owl:ObjectProperty ; + rdfs:comment "The type of the file."@en ; + rdfs:domain spdx:File ; + vs:term_status "stable" . + +dcterms:type rdf:type rdf:Property ; + rdfs:comment "The nature or genre of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Type"@en ; + rdfs:subPropertyOf dc:type ; + dcterms:description "Recommended practice is to use a controlled vocabulary such as the DCMI Type Vocabulary [[DCMI-TYPE](http://dublincore.org/documents/dcmi-type-vocabulary/)]. To describe the file format, physical medium, or dimensions of the resource, use the property Format."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +prov:todo rdf:type owl:AnnotationProperty . + +prov:qualifiedQuotation + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Entity prov:wasQuotedFrom Entity :e, then it can qualify how using prov:qualifiedQuotation [ a prov:Quotation; prov:entity :e; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedQuotation" ; + rdfs:range prov:Quotation ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "qualifiedQuotationOf" ; + prov:sharesDefinitionWith prov:Quotation ; + prov:unqualifiedForm prov:wasQuotedFrom . + +prov:n rdf:type owl:AnnotationProperty ; + rdfs:comment "A reference to the principal section of the PROV-DM document that describes this concept."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +prov:wasEndedBy rdf:type owl:ObjectProperty ; + rdfs:comment "End is when an activity is deemed to have ended. An end may refer to an entity, known as trigger, that terminated the activity."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasEndedBy" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedEnd prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedEnd prov:entity ) ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:inverse "ended" ; + prov:qualifiedForm prov:qualifiedEnd , prov:End . + +spdx:relationshipType_metafileOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "To be used when SPDXRef-A is a metafile of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +dcterms:provenance rdf:type rdf:Property ; + rdfs:comment "A statement of any changes in ownership and custody of the resource since its creation that are significant for its authenticity, integrity, and interpretation."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Provenance"@en ; + dcam:rangeIncludes dcterms:ProvenanceStatement ; + dcterms:description "The statement may include a description of any changes successive custodians made to the resource."@en ; + dcterms:issued "2004-09-20"^^xsd:date . + +spdx:dataLicense rdf:type owl:ObjectProperty , owl:FunctionalProperty ; + rdfs:comment "Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\"SPDX-Metadata\"). The SPDX specification contains numerous fields where an SPDX document creator may provide relevant explanatory text in SPDX-Metadata. Without opining on the lawfulness of \"database rights\" (in jurisdictions where applicable), such explanatory text is copyrightable subject matter in most Berne Convention countries. By using the SPDX specification, or any portion hereof, you hereby agree that any copyright rights (as determined by your jurisdiction) in any SPDX-Metadata, including without limitation explanatory text, shall be subject to the terms of the Creative Commons CC0 1.0 Universal license. For SPDX-Metadata not containing any copyright rights, you hereby agree and acknowledge that the SPDX-Metadata is provided to you \"as-is\" and without any representations or warranties of any kind concerning the SPDX-Metadata, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non-infringement, or the absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range [ rdf:type owl:Restriction ; + owl:hasValue <http://spdx.org/licenses/CC0-1.0> ; + owl:onProperty spdx:dataLicense + ] ; + vs:term_status "stable" . + +vcard:agent rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "agent"@en ; + owl:deprecated true . + +spdx:relationship rdf:type owl:ObjectProperty ; + rdfs:comment "Defines a relationship between two SPDX elements. The SPDX element may be a Package, File, or SpdxDocument."@en ; + rdfs:domain spdx:SpdxElement ; + rdfs:range spdx:Relationship ; + vs:term_status "stable"@en . + +spdx:checksumAlgorithm_sha512 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was SHA512"@en ; + vs:term_status "stable"@en . + +prov:qualifiedCommunication + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Activity prov:wasInformedBy Activity :a, then it can qualify how it was influenced using prov:qualifiedCommunication [ a prov:Communication; prov:activity :a; :foo :bar ]."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedCommunication" ; + rdfs:range prov:Communication ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:inverse "qualifiedCommunicationOf" ; + prov:qualifiedForm prov:Communication ; + prov:sharesDefinitionWith prov:Communication . + +vcard:rev rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify revision information about the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "revision"@en ; + rdfs:range xsd:dateTime . + +spdx:documentation rdf:type owl:DatatypeProperty ; + rdfs:comment "Website containing the documentation related to the repository identifier"@en ; + rdfs:domain spdx:ReferenceType ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +time:before rdf:type owl:TransitiveProperty , owl:ObjectProperty ; + rdfs:comment "Asume una dirección en el tiempo. Si una entidad temporal T1 está antes que otra entidad temporal T2, entonces el final de T1 está antes que el principio de T2. Así, \"antes\" se puede considerar básica para instantes y derivada para intervalos."@es , "Gives directionality to time. If a temporal entity T1 is before another temporal entity T2, then the end of T1 is before the beginning of T2. Thus, \"before\" can be considered to be basic to instants and derived for intervals."@en ; + rdfs:domain time:TemporalEntity ; + rdfs:label "antes"@es , "before"@en ; + rdfs:range time:TemporalEntity ; + owl:inverseOf time:after ; + skos:definition "Gives directionality to time. If a temporal entity T1 is before another temporal entity T2, then the end of T1 is before the beginning of T2. Thus, \"before\" can be considered to be basic to instants and derived for intervals."@en , "Asume una dirección en el tiempo. Si una entidad temporal T1 está antes que otra entidad temporal T2, entonces el final de T1 está antes que el principio de T2. Así, \"antes\" se puede considerar básica para instantes y derivada para intervalos."@es . + +prov:Entity rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Entity" ; + owl:disjointWith prov:InstantaneousEvent ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "An entity is a physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary. "@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-entity"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Entity"^^xsd:anyURI . + +prov:AgentInfluence rdf:type owl:Class ; + rdfs:comment "AgentInfluence provides additional descriptions of an Agent's binary influence upon any other kind of resource. Instances of AgentInfluence use the prov:agent property to cite the influencing Agent."@en , "It is not recommended that the type AgentInfluence be asserted without also asserting one of its more specific subclasses."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "AgentInfluence" ; + rdfs:seeAlso prov:agent ; + rdfs:subClassOf prov:Influence ; + prov:category "qualified" ; + prov:editorsDefinition "AgentInfluence is the capacity of an agent to have an effect on the character, development, or behavior of another by means of attribution, association, delegation, or other."@en . + +dcterms:created rdf:type rdf:Property ; + rdfs:comment "Date of creation of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Created"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:Cell rdf:type owl:Class ; + rdfs:comment "Also called mobile telephone"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Cell"@en ; + rdfs:subClassOf vcard:TelephoneType . + +prov:Location rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Location" ; + rdfs:seeAlso prov:atLocation ; + prov:category "expanded" ; + prov:definition "A location can be an identifiable geographic place (ISO 19112), but it can also be a non-geographic place such as a directory, row, or column. As such, there are numerous ways in which location can be expressed, such as by a coordinate, address, landmark, and so forth."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-location"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-attribute"^^xsd:anyURI . + +dcterms:temporal rdf:type rdf:Property ; + rdfs:comment "Temporal characteristics of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Temporal Coverage"@en ; + rdfs:subPropertyOf dc:coverage , dcterms:coverage ; + dcam:rangeIncludes dcterms:PeriodOfTime ; + dcterms:issued "2000-07-11"^^xsd:date . + +<http://www.w3.org/2009/pointers#endPointer> + rdf:type owl:ObjectProperty ; + rdfs:domain <http://www.w3.org/2009/pointers#CompoundPointer> ; + rdfs:range <http://www.w3.org/2009/pointers#SinglePointer> ; + vs:term_status "stable"@en . + +dcat:endpointDescription + rdf:type owl:ObjectProperty ; + rdfs:comment "En beskrivelse af det pågældende tjenesteendpoint, inklusiv dets operationer, parametre etc."@da , "Una descripción del end-point del servicio, incluyendo sus operaciones, parámetros, etc."@es , "A description of the service end-point, including its operations, parameters etc."@en , "Una descrizione dell'endpoint del servizio, incluse le sue operazioni, parametri, ecc."@it , "Popis přístupového bodu služby včetně operací, parametrů apod."@cs ; + rdfs:domain dcat:DataService ; + rdfs:label "endpointbeskrivelse"@da , "descripción del end-point del servicio"@es , "description of service end-point"@en , "popis přístupového bodu služby"@cs , "descrizione dell'endpoint del servizio"@it ; + skos:changeNote "Nuova proprietà in DCAT 2.0."@it , "Nueva propiedad agregada en DCAT 2.0."@en , "Ny egenskab i DCAT 2.0."@da , "New property in DCAT 2.0."@en , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs ; + skos:definition "A description of the service end-point, including its operations, parameters etc."@en , "Una descrizione dell'endpoint del servizio, incluse le sue operazioni, parametri, ecc."@it , "En beskrivelse af det pågældende tjenesteendpoint, inklusiv dets operationer, parametre etc."@da , "Una descripción del end-point del servicio, incluyendo sus operaciones, parámetros, etc.."@es , "Popis přístupového bodu služby včetně operací, parametrů apod."@cs ; + skos:scopeNote "Una descrizione dell'endpoint può essere espressa in un formato leggibile dalla macchina, come una descrizione OpenAPI (Swagger), una risposta GetCapabilities OGC, una descrizione del servizio SPARQL, un documento OpenSearch o WSDL, una descrizione API Hydra, o con del testo o qualche altra modalità informale se una rappresentazione formale non è possibile."@it , "La descripción del endpoint brinda detalles específicos de la instancia del endpoint, mientras que dct:conformsTo se usa para indicar el estándar general o especificación que implementa el endpoint."@es , "Popis přístupového bodu dává specifické detaily jeho konkrétní instance, zatímco dct:conformsTo indikuje obecný standard či specifikaci kterou přístupový bod implementuje."@cs , "The endpoint description gives specific details of the actual endpoint instance, while dct:conformsTo is used to indicate the general standard or specification that the endpoint implements."@en , "Una descripción del endpoint del servicio puede expresarse en un formato que la máquina puede interpretar, tal como una descripción basada en OpenAPI (Swagger), una respuesta OGC GetCapabilities, una descripción de un servicio SPARQL, un documento OpenSearch o WSDL, una descripción con la Hydra API, o en texto u otro modo informal si la representación formal no es posible."@es , "La descrizione dell'endpoint fornisce dettagli specifici dell'istanza dell'endpoint reale, mentre dct:conformsTo viene utilizzato per indicare lo standard o le specifiche implementate dall'endpoint."@it , "En beskrivelse af et endpoint kan udtrykkes i et maskinlæsbart format, såsom OpenAPI (Swagger)-beskrivelser, et OGC GetCapabilities svar, en SPARQL tjenestebeskrivelse, en OpenSearch- eller et WSDL-dokument, en Hydra-API-beskrivelse, eller i tekstformat eller i et andet uformelt format, hvis en formel repræsentation ikke er mulig."@da , "Popis přístupového bodu může být vyjádřen ve strojově čitelné formě, například jako popis OpenAPI (Swagger), odpověď služby OGC getCapabilities, pomocí slovníku SPARQL Service Description, jako OpenSearch či WSDL document, jako popis API dle slovníku Hydra, a nebo textově nebo jiným neformálním způsobem, pokud není možno použít formální reprezentaci."@cs , "An endpoint description may be expressed in a machine-readable form, such as an OpenAPI (Swagger) description, an OGC GetCapabilities response, a SPARQL Service Description, an OpenSearch or WSDL document, a Hydra API description, else in text or some other informal mode if a formal representation is not possible."@en , "Endpointbeskrivelsen giver specifikke oplysninger om den konkrete endpointinstans, mens dct:conformsTo anvendes til at indikere den overordnede standard eller specifikation som endpointet er i overensstemmelse med."@da . + +vcard:Sibling rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Sibling"@en ; + rdfs:subClassOf vcard:RelatedType . + +skos:editorialNote rdf:type owl:AnnotationProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "editorial note"@en ; + rdfs:subPropertyOf skos:note ; + skos:definition "A note for an editor, translator or maintainer of the vocabulary."@en . + +[ rdf:type owl:AllDifferent ; + owl:distinctMembers ( spdx:noassertion spdx:none ) +] . + +spdx:licenseException + rdf:type owl:ObjectProperty ; + rdfs:comment "An exception to a license."@en ; + rdfs:domain spdx:WithExceptionOperator ; + rdfs:range spdx:LicenseException ; + vs:term_status "stable"@en . + +[ rdf:type owl:Axiom ; + rdfs:comment "hadPrimarySource property is a particular case of wasDerivedFrom (see http://www.w3.org/TR/prov-dm/#term-original-source) that aims to give credit to the source that originated some information." ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:hadPrimarySource ; + owl:annotatedTarget prov:wasDerivedFrom +] . + +spdx:creator rdf:type owl:DatatypeProperty ; + rdfs:comment "Identify who (or what, in the case of a tool) created the SPDX document. If the SPDX document was created by an individual, indicate the person's name. If the SPDX document was created on behalf of a company or organization, indicate the entity name. If the SPDX document was created using a software tool, indicate the name and version for that tool. If multiple participants or tools were involved, use multiple instances of this field. Person name or organization name may be designated as “anonymous” if appropriate."@en ; + rdfs:domain spdx:CreationInfo ; + rdfs:range xsd:string ; + vs:term_status "stable" . + +dcterms:rightsHolder rdf:type rdf:Property ; + rdfs:comment "A person or organization owning or managing rights over the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Rights Holder"@en ; + dcam:rangeIncludes dcterms:Agent ; + dcterms:description "Recommended practice is to refer to the rights holder with a URI. If this is not possible or feasible, a literal value that identifies the rights holder may be provided."@en ; + dcterms:issued "2004-06-14"^^xsd:date . + +prov:activity rdf:type owl:ObjectProperty ; + rdfs:domain prov:ActivityInfluence ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "activity" ; + rdfs:range prov:Activity ; + rdfs:subPropertyOf prov:influencer ; + prov:category "qualified" ; + prov:editorialNote "This property behaves in spirit like rdf:object; it references the object of a prov:wasInfluencedBy triple."@en ; + prov:editorsDefinition "The prov:activity property references an prov:Activity which influenced a resource. This property applies to an prov:ActivityInfluence, which is given by a subproperty of prov:qualifiedInfluence from the influenced prov:Entity, prov:Activity or prov:Agent." ; + prov:inverse "activityOfInfluence" . + +spdx:Checksum rdf:type owl:Class ; + rdfs:comment "A Checksum is value that allows the contents of a file to be authenticated. Even small changes to the content of the file will change its checksum. This class allows the results of a variety of checksum and cryptographic message digest algorithms to be represented."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:ChecksumAlgorithm ; + owl:onProperty spdx:algorithm ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:hexBinary ; + owl:onProperty spdx:checksumValue ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +time:hasXSDDuration rdf:type owl:DatatypeProperty ; + rdfs:comment "Extensión de una entidad temporal, expresada utilizando xsd:duration."@es , "Extent of a temporal entity, expressed using xsd:duration"@en ; + rdfs:domain time:TemporalEntity ; + rdfs:label "has XSD duration"@en , "tiene duración XSD"@es ; + rdfs:range xsd:duration ; + skos:definition "Extensión de una entidad temporal, expresada utilizando xsd:duration."@es , "Extent of a temporal entity, expressed using xsd:duration"@en ; + skos:editorialNote "Característica arriesgada - añadida en la revisión de 2017, y todavía no ampliamente utilizada."@es , "Feature at risk - added in 2017 revision, and not yet widely used. "@en . + +prov:hadMember rdf:type owl:ObjectProperty ; + rdfs:domain prov:Collection ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadMember" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + prov:category "expanded" ; + prov:component "expanded" ; + prov:inverse "wasMemberOf" ; + prov:sharesDefinitionWith prov:Collection . + +spdx:relationshipType_patchApplied + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_patchApplied expresses that the SPDXElement is a 'patchfile' that was applied and produced the relatedSPDXElement. For example, a .diff File relates to a specific file where the diff was applied."@en ; + vs:term_status "stable"@en . + +spdx:referenceCategory_security + rdf:type owl:NamedIndividual , spdx:ReferenceCategory ; + vs:term_status "stable"@en . + +dcterms:LCC rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of conceptual resources specified by the Library of Congress Classification."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "LCC"@en ; + rdfs:seeAlso <http://lcweb.loc.gov/catdir/cpso/lcco/lcco.html> ; + dcterms:issued "2000-07-11"^^xsd:date . + +dcterms:LicenseDocument + rdf:type rdfs:Class ; + rdfs:comment "A legal document giving official permission to do something with a resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "License Document"@en ; + rdfs:subClassOf dcterms:RightsStatement ; + dcterms:issued "2008-01-14"^^xsd:date . + +prov:Revision rdf:type owl:Class ; + rdfs:comment "An instance of prov:Revision provides additional descriptions about the binary prov:wasRevisionOf relation from some newer prov:Entity to an earlier prov:Entity. For example, :draft_2 prov:wasRevisionOf :draft_1; prov:qualifiedRevision [ a prov:Revision; prov:entity :draft_1; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Revision" ; + rdfs:subClassOf prov:Derivation ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:definition "A revision is a derivation for which the resulting entity is a revised version of some original. The implication here is that the resulting entity contains substantial content from the original. Revision is a particular case of derivation."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-revision"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Revision"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasRevisionOf . + +spdx:AnnotationType rdf:type owl:Class ; + rdfs:comment "This type describes the type of annotation. Annotations are usually created when someone reviews the file, and if this is the case the annotation type should be REVIEW."@en ; + vs:term_status "stable"@en . + +spdx:checksumValue rdf:type owl:DatatypeProperty , owl:FunctionalProperty ; + rdfs:comment "The checksumValue property provides a lower case hexidecimal encoded digest value produced using a specific algorithm."@en ; + rdfs:domain spdx:Checksum ; + rdfs:range xsd:hexBinary ; + vs:term_status "stable" . + +[ rdf:type owl:Axiom ; + rdfs:comment "Derivation is a particular case of trace (see http://www.w3.org/TR/prov-dm/#term-trace), since it links an entity to another entity that contributed to its existence." ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasDerivedFrom ; + owl:annotatedTarget prov:wasInfluencedBy +] . + +time:intervalFinishedBy + rdf:type owl:ObjectProperty ; + rdfs:comment "If a proper interval T1 is intervalFinishedBy another proper interval T2, then the beginning of T1 is before the beginning of T2, and the end of T1 is coincident with the end of T2."@en , "Si un intervalo propio T1 está terminado por otro intervalo propio T2, entonces el principio de T1 está antes que el principio de T2, y el final de T1 coincide con el final de T2."@es ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo terminado por"@es , "interval finished by"@en ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalFinishes ; + skos:definition "Si un intervalo propio T1 está terminado por otro intervalo propio T2, entonces el principio de T1 está antes que el principio de T2, y el final de T1 coincide con el final de T2."@es , "If a proper interval T1 is intervalFinishedBy another proper interval T2, then the beginning of T1 is before the beginning of T2, and the end of T1 is coincident with the end of T2."@en . + +spdx:relationshipType_testToolOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B."@en ; + vs:term_status "stable"@en . + +prov:qualifiedStart rdf:type owl:ObjectProperty ; + rdfs:comment "If this Activity prov:wasStartedBy Entity :e1, then it can qualify how it was started using prov:qualifiedStart [ a prov:Start; prov:entity :e1; :foo :bar ]."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedStart" ; + rdfs:range prov:Start ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:inverse "qualifiedStartOf" ; + prov:sharesDefinitionWith prov:Start ; + prov:unqualifiedForm prov:wasStartedBy . + +<http://data.europa.eu/r5r#Checksum_Shape> + rdf:type sh:NodeShape ; + sh:name "Checksum"@en ; + sh:property [ sh:datatype xsd:hexBinary ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:path spdx:checksumValue ; + sh:severity sh:Violation + ] ; + sh:property [ sh:hasValue spdx:checksumAlgorithm_sha1 ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:path spdx:algorithm ; + sh:severity sh:Violation + ] ; + sh:targetClass spdx:Checksum . + +prov:Influence rdf:type owl:Class ; + rdfs:comment "An instance of prov:Influence provides additional descriptions about the binary prov:wasInfluencedBy relation from some influenced Activity, Entity, or Agent to the influencing Activity, Entity, or Agent. For example, :stomach_ache prov:wasInfluencedBy :spoon; prov:qualifiedInfluence [ a prov:Influence; prov:entity :spoon; :foo :bar ] . Because prov:Influence is a broad relation, the more specific relations (Communication, Delegation, End, etc.) should be used when applicable."@en , "Because prov:Influence is a broad relation, its most specific subclasses (e.g. prov:Communication, prov:Delegation, prov:End, prov:Revision, etc.) should be used when applicable."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Influence" ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:definition "Influence is the capacity of an entity, activity, or agent to have an effect on the character, development, or behavior of another by means of usage, start, end, generation, invalidation, communication, derivation, attribution, association, or delegation."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-influence"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-influence"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasInfluencedBy . + +dcterms:conformsTo rdf:type rdf:Property ; + rdfs:comment "An established standard to which the described resource conforms."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Conforms To"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcam:rangeIncludes dcterms:Standard ; + dcterms:issued "2001-05-21"^^xsd:date . + +spdx:licenseDeclared rdf:type owl:ObjectProperty ; + rdfs:comment "The licensing that the creators of the software in the package, or the packager, have declared. Declarations by the original software creator should be preferred, if they exist."@en ; + rdfs:domain spdx:SpdxItem ; + rdfs:range spdx:AnyLicenseInfo ; + vs:term_status "stable"@en . + +spdx:relationshipType_amendment + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "To be used when SPDXRef-A amends the SPDX information in SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:example rdf:type owl:DatatypeProperty ; + rdfs:comment "Text for examples in describing an SPDX element."@en ; + rdfs:domain spdx:LicenseException ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:AnyLicenseInfo rdf:type owl:Class ; + rdfs:comment "The AnyLicenseInfo class includes all resources that represent licensing information." ; + rdfs:isDefinedBy "http://spdx.org/rdf/terms#AnyLicenseInfo" ; + vs:term_status "stable" . + +vcard:mailer rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "mailer"@en ; + owl:deprecated true . + +time:generalYear rdf:type rdfs:Datatype ; + rdfs:comment "Year number - formulated as a text string with a pattern constraint to reproduce the same lexical form as gYear, but not restricted to values from the Gregorian calendar. \nNote that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type."@en , "Número de año - formulado como una cadena de texto con una restricción patrón para reproducir la misma forma léxica que gYear, aunque no está restringido a valores del calendario gregoriano.\n Nótese que el espacio de valores no está definido, por tanto, un procesador genérico de OWL2 no puede computar relaciones de orden de valores de este tipo."@es ; + rdfs:label "Generalized year"@en , "Año generalizado"@es ; + owl:onDatatype xsd:string ; + owl:withRestrictions ( [ xsd:pattern "-?([1-9][0-9]{3,}|0[0-9]{3})(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?" ] + ) ; + skos:definition "Year number - formulated as a text string with a pattern constraint to reproduce the same lexical form as gYear, but not restricted to values from the Gregorian calendar. \nNote that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type."@en , "Número de año - formulado como una cadena de texto con una restricción patrón para reproducir la misma forma léxica que gYear, aunque no está restringido a valores del calendario gregoriano.\n Nótese que el espacio de valores no está definido, por tanto, un procesador genérico de OWL2 no puede computar relaciones de orden de valores de este tipo."@es . + +skos:narrowerTransitive + rdf:type owl:ObjectProperty , owl:TransitiveProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has narrower transitive"@en ; + rdfs:subPropertyOf skos:semanticRelation ; + owl:inverseOf skos:broaderTransitive ; + skos:definition "skos:narrowerTransitive is a transitive superproperty of skos:narrower." ; + skos:scopeNote "By convention, skos:narrowerTransitive is not used to make assertions. Rather, the properties can be used to draw inferences about the transitive closure of the hierarchical relation, which is useful e.g. when implementing a simple query expansion algorithm in a search application."@en . + +locn:postName rdf:type rdf:Property ; + rdfs:comment "The key postal division of the address, usually the city. (INSPIRE's definition is \"One or more names created and maintained for postal purposes to identify a subdivision of addresses and postal delivery points.\"). The domain of locn:postName is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "post name"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:postName" ; + vs:term_status "testing"@en . + +spdx:isOsiApproved rdf:type owl:DatatypeProperty ; + rdfs:comment "Indicates if the OSI has approved the license."@en ; + rdfs:domain spdx:License ; + rdfs:range xsd:boolean ; + vs:term_status "stable"@en . + +adms:interoperabilityLevel + rdf:type owl:ObjectProperty ; + rdfs:comment "The interoperability level for which the Asset is relevant."@en ; + rdfs:domain adms:Asset ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "interoperability level"@en ; + rdfs:range skos:Concept . + +time:Sunday rdf:type time:DayOfWeek ; + rdfs:label "Sunday"@en ; + skos:prefLabel "Zondag"@nl , "Sunday"@en , "Воскресенье"@ru , "Sonntag"@de , "Domingo"@es , "Domingo"@pt , "الأحد (يوم)"@ar , "Niedziela"@pl , "Dimanche"@fr , "Domenica"@it , "日曜日"@ja , "星期日"@zh . + +owl:qualifiedCardinality + rdf:type owl:AnnotationProperty . + +vcard:prodid rdf:type owl:DatatypeProperty ; + rdfs:comment "To specify the identifier for the product that created the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "product id"@en ; + rdfs:range xsd:string . + +spdx:CrossRef rdf:type owl:Class ; + rdfs:comment "Cross reference details for the a URL reference"@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:match + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:isWayBackLink + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:isValid + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:isLive + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:url ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:nonNegativeInteger ; + owl:onProperty spdx:order + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:dateTime ; + owl:onProperty spdx:timestamp + ] ; + vs:term_status "stable"@en . + +dcat:record rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "Συνδέει έναν κατάλογο με τις καταγραφές του."@el , "Un record che descrive la registrazione di un singolo set di dati o di un servizio dati che fa parte del catalogo."@it , "Relie un catalogue à ses registres."@fr , "Propojuje katalog a jeho záznamy."@cs , "تربط الفهرس بسجل ضمنه"@ar , "Záznam popisující registraci jedné datové sady či datové služby jakožto součásti katalogu."@cs , "Describe la registración de un conjunto de datos o un servicio de datos en el catálogo."@es , "En post der beskriver registreringen af et enkelt datasæt eller en datatjeneste som er opført i kataloget."@da , "A record describing the registration of a single dataset or data service that is part of the catalog."@en , "カタログの一部であるカタログ・レコード。"@ja ; + rdfs:domain dcat:Catalog ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "カタログ・レコード"@ja , "سجل"@ar , "registre"@fr , "záznam"@cs , "record"@en , "record"@it , "registro"@es , "καταγραφή"@el , "post"@da ; + rdfs:range dcat:CatalogRecord ; + skos:altLabel "har post"@da ; + skos:definition "Propojuje katalog a jeho záznamy."@cs , "Relie un catalogue à ses registres."@fr , "Záznam popisující registraci jedné datové sady či datové služby jakožto součásti katalogu."@cs , "En post der beskriver registreringen af et enkelt datasæt eller en datatjeneste som er opført i kataloget."@da , "Un record che descrive la registrazione di un singolo set di dati o di un servizio dati che fa parte del catalogo."@it , "Συνδέει έναν κατάλογο με τις καταγραφές του."@el , "カタログの一部であるカタログ・レコード。"@ja , "Describe la registración de un conjunto de datos o un servicio de datos en el catálogo."@es , "تربط الفهرس بسجل ضمنه"@ar , "A record describing the registration of a single dataset or data service that is part of the catalog."@en ; + skos:editorialNote "Status: English, Italian, Spanish and Czech Definitions modified by DCAT revision team, other translations pending."@en . + +time:unitType rdf:type owl:ObjectProperty ; + rdfs:comment "The temporal unit which provides the precision of a date-time value or scale of a temporal extent"@en , "La unidad de tiempo que proporciona la precisión de un valor fecha-hora o la escala de una extensión temporal."@es ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( time:GeneralDateTimeDescription time:Duration ) + ] ; + rdfs:label "temporal unit type"@en , "tipo de unidad temporal"@es ; + rdfs:range time:TemporalUnit . + +prov:generatedAtTime rdf:type owl:DatatypeProperty ; + rdfs:comment "The time at which an entity was completely created and is available for use."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "generatedAtTime" ; + rdfs:range xsd:dateTime ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:editorialNote "It is the intent that the property chain holds: (prov:qualifiedGeneration o prov:atTime) rdfs:subPropertyOf prov:generatedAtTime."@en ; + prov:qualifiedForm prov:atTime , prov:Generation . + +spdx:supplier rdf:type owl:DatatypeProperty ; + rdfs:comment "The name and, optionally, contact information of the person or organization who was the immediate supplier of this package to the recipient. The supplier may be different than originator when the software has been repackaged. Values of this property must conform to the agent and tool syntax."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:licenseTextHtml rdf:type owl:DatatypeProperty ; + rdfs:comment "License text in HTML format"@en ; + rdfs:domain spdx:ListedLicense ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +dcterms:NLM rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of conceptual resources specified by the National Library of Medicine Classification."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "NLM"@en ; + rdfs:seeAlso <http://wwwcf.nlm.nih.gov/class/> ; + dcterms:issued "2005-06-13"^^xsd:date . + +dcat:contactPoint rdf:type rdf:Property , owl:ObjectProperty ; + rdfs:comment "Relevante kontaktoplysninger for den katalogiserede ressource. Anvendelse af vCard anbefales."@da , "Relevant contact information for the catalogued resource. Use of vCard is recommended."@en , "Información relevante de contacto para el recurso catalogado. Se recomienda el uso de vCard."@es , "Relie un jeu de données à une information de contact utile en utilisant VCard."@fr , "Informazioni di contatto rilevanti per la risorsa catalogata. Si raccomanda l'uso di vCard."@it , "データセットを、VCardを用いて提供されている適切な連絡先情報にリンクします。"@ja , "تربط قائمة البيانات بعنوان اتصال موصف باستخدام VCard"@ar , "Συνδέει ένα σύνολο δεδομένων με ένα σχετικό σημείο επικοινωνίας, μέσω VCard."@el , "Relevantní kontaktní informace pro katalogizovaný zdroj. Doporučuje se použít slovník VCard."@cs ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "point de contact"@fr , "عنوان اتصال"@ar , "窓口"@ja , "contact point"@en , "σημείο επικοινωνίας"@el , "kontaktní bod"@cs , "punto di contatto"@it , "Punto de contacto"@es , "kontaktpunkt"@da ; + rdfs:range vcard:Kind ; + skos:definition "Relie un jeu de données à une information de contact utile en utilisant VCard."@fr , "Informazioni di contatto rilevanti per la risorsa catalogata. Si raccomanda l'uso di vCard."@it , "Συνδέει ένα σύνολο δεδομένων με ένα σχετικό σημείο επικοινωνίας, μέσω VCard."@el , "Relevant contact information for the catalogued resource. Use of vCard is recommended."@en , "Información relevante de contacto para el recurso catalogado. Se recomienda el uso de vCard."@es , "データセットを、VCardを用いて提供されている適切な連絡先情報にリンクします。"@ja , "Relevante kontaktoplysninger for den katalogiserede ressource. Anvendelse af vCard anbefales."@da , "تربط قائمة البيانات بعنوان اتصال موصف باستخدام VCard"@ar , "Relevantní kontaktní informace pro katalogizovaný zdroj. Doporučuje se použít slovník VCard."@cs ; + skos:editorialNote "Status: English Definition text modified by DCAT revision team, Italian, Spanish and Czech translations provided, other translations pending."@en . + +spdx:relationshipType_buildDependencyOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a build dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +<http://www.w3.org/ns/dcat> + rdf:type owl:Ontology ; + rdfs:comment "DCAT er et RDF-vokabular som har til formål at understøtte interoperabilitet mellem datakataloger udgivet på nettet. Ved at anvende DCAT til at beskrive datasæt i datakataloger, kan udgivere øge findbarhed og gøre det gøre det lettere for applikationer at anvende metadata fra forskellige kataloger. Derudover understøttes decentraliseret udstilling af kataloger og fødererede datasætsøgninger på tværs af websider. Aggregerede DCAT-metadata kan fungere som fortegnelsesfiler der kan understøtte digital bevaring. DCAT er defineret på http://www.w3.org/TR/vocab-dcat/. Enhver forskel mellem det normative dokument og dette schema er en fejl i dette schema."@da , "DCAT est un vocabulaire développé pour faciliter l'interopérabilité entre les jeux de données publiées sur le Web. En utilisant DCAT pour décrire les jeux de données dans les catalogues de données, les fournisseurs de données augmentent leur découverte et permettent que les applications facilement les métadonnées de plusieurs catalogues. Il permet en plus la publication décentralisée des catalogues et facilitent la recherche fédérée des données entre plusieurs sites. Les métadonnées DCAT aggrégées peuvent servir comme un manifeste pour faciliter la préservation digitale des ressources. DCAT est définie à l'adresse http://www.w3.org/TR/vocab-dcat/. Une quelconque version de ce document normatif et ce vocabulaire est une erreur dans ce vocabulaire."@fr , "DCAT je RDF slovník navržený pro zprostředkování interoperability mezi datovými katalogy publikovanými na Webu. Poskytovatelé dat používáním slovníku DCAT pro popis datových sad v datových katalozích zvyšují jejich dohledatelnost a umožňují aplikacím konzumovat metadata z více katalogů. Dále je umožňena decentralizovaná publikace katalogů a federované dotazování na datové sady napříč katalogy. Agregovaná DCAT metadata mohou také sloužit jako průvodka umožňující digitální uchování informace. DCAT je definován na http://www.w3.org/TR/vocab-dcat/. Jakýkoliv nesoulad mezi odkazovaným dokumentem a tímto schématem je chybou v tomto schématu."@cs , "هي أنطولوجية تسهل تبادل البيانات بين مختلف الفهارس على الوب. استخدام هذه الأنطولوجية يساعد على اكتشاف قوائم البيانات المنشورة على الوب و يمكن التطبيقات المختلفة من الاستفادة أتوماتيكيا من البيانات المتاحة من مختلف الفهارس."@ar , "DCATは、ウェブ上で公開されたデータ・カタログ間の相互運用性の促進を目的とするRDFの語彙です。このドキュメントでは、その利用のために、スキーマを定義し、例を提供します。データ・カタログ内のデータセットを記述するためにDCATを用いると、公開者が、発見可能性を増加させ、アプリケーションが複数のカタログのメタデータを容易に利用できるようになります。さらに、カタログの分散公開を可能にし、複数のサイトにまたがるデータセットの統合検索を促進します。集約されたDCATメタデータは、ディジタル保存を促進するためのマニフェスト・ファイルとして使用できます。"@ja , "DCAT is an RDF vocabulary designed to facilitate interoperability between data catalogs published on the Web. By using DCAT to describe datasets in data catalogs, publishers increase discoverability and enable applications easily to consume metadata from multiple catalogs. It further enables decentralized publishing of catalogs and facilitates federated dataset search across sites. Aggregated DCAT metadata can serve as a manifest file to facilitate digital preservation. DCAT is defined at http://www.w3.org/TR/vocab-dcat/. Any variance between that normative document and this schema is an error in this schema."@en , "DCAT es un vocabulario RDF diseñado para facilitar la interoperabilidad entre catálogos de datos publicados en la Web. Utilizando DCAT para describir datos disponibles en catálogos se aumenta la posibilidad de que sean descubiertos y se permite que las aplicaciones consuman fácilmente los metadatos de varios catálogos."@es , "Το DCAT είναι ένα RDF λεξιλόγιο που σχεδιάσθηκε για να κάνει εφικτή τη διαλειτουργικότητα μεταξύ καταλόγων δεδομένων στον Παγκόσμιο Ιστό. Χρησιμοποιώντας το DCAT για την περιγραφή συνόλων δεδομένων, οι εκδότες αυτών αυξάνουν την ανακαλυψιμότητα και επιτρέπουν στις εφαρμογές την εύκολη κατανάλωση μεταδεδομένων από πολλαπλούς καταλόγους. Επιπλέον, δίνει τη δυνατότητα για αποκεντρωμένη έκδοση και διάθεση καταλόγων και επιτρέπει δυνατότητες ενοποιημένης αναζήτησης μεταξύ διαφορετικών πηγών. Συγκεντρωτικά μεταδεδομένα που έχουν περιγραφεί με το DCAT μπορούν να χρησιμοποιηθούν σαν ένα δηλωτικό αρχείο (manifest file) ώστε να διευκολύνουν την ψηφιακή συντήρηση."@el , "DCAT è un vocabolario RDF progettato per facilitare l'interoperabilità tra i cataloghi di dati pubblicati nel Web. Utilizzando DCAT per descrivere i dataset nei cataloghi di dati, i fornitori migliorano la capacità di individuazione dei dati e abilitano le applicazioni al consumo di dati provenienti da cataloghi differenti. DCAT permette di decentralizzare la pubblicazione di cataloghi e facilita la ricerca federata dei dataset. L'aggregazione dei metadati federati può fungere da file manifesto per facilitare la conservazione digitale. DCAT è definito all'indirizzo http://www.w3.org/TR/vocab-dcat/. Qualsiasi scostamento tra tale definizione normativa e questo schema è da considerarsi un errore di questo schema."@it ; + rdfs:label "Slovník pro datové katalogy"@cs , "Il vocabolario del catalogo dei dati"@it , "Le vocabulaire des jeux de données"@fr , "El vocabulario de catálogo de datos"@es , "Datakatalogvokabular"@da , "أنطولوجية فهارس قوائم البيانات"@ar , "Το λεξιλόγιο των καταλόγων δεδομένων"@el , "データ・カタログ語彙(DCAT)"@ja , "The data catalog vocabulary"@en ; + dcterms:contributor [ rdfs:seeAlso <https://orcid.org/0000-0003-3499-8262> ; + sdo:affiliation [ foaf:homepage <http://stfc.ac.uk> ; + foaf:name "Science and Technology Facilities Council, UK" + ] ; + foaf:homepage <https://agbeltran.github.io> ; + foaf:name "Alejandra Gonzalez-Beltran" + ] ; + dcterms:contributor [ rdfs:seeAlso <https://jakub.klímek.com/#me> ; + foaf:homepage <https://jakub.klímek.com/> ; + foaf:name "Jakub Klímek" + ] ; + dcterms:contributor [ foaf:name "Martin Alvarez-Espinar" ] ; + dcterms:contributor [ foaf:name "Richard Cyganiak" ] ; + dcterms:contributor [ rdfs:seeAlso <http://philarcher.org/foaf.rdf#me> ; + sdo:affiliation <http://www.w3.org/data#W3C> ; + foaf:homepage <http://www.w3.org/People/all#phila> ; + foaf:name "Phil Archer" + ] ; + dcterms:contributor [ rdfs:seeAlso <http://makxdekkers.com/makxdekkers.rdf#me> ; + foaf:homepage <http://makxdekkers.com/> ; + foaf:name "Makx Dekkers" + ] ; + dcterms:contributor [ sdo:affiliation [ foaf:homepage <http://www.refinitiv.com> ; + foaf:name "Refinitiv" + ] ; + foaf:name "David Browning" + ] ; + dcterms:contributor [ sdo:affiliation [ foaf:homepage <http://okfn.org> ; + foaf:name "Open Knowledge Foundation" + ] ; + foaf:name "Rufus Pollock" + ] ; + dcterms:contributor [ rdfs:seeAlso <https://orcid.org/0000-0001-5648-2713> ; + foaf:homepage <http://www.imati.cnr.it/index.php/people/8-curricula/178-riccardo-albertoni> , <https://w3id.org/people/ralbertoni/> ; + foaf:name "Riccardo Albertoni" + ] ; + dcterms:contributor [ foaf:homepage <http://www.asahi-net.or.jp/~ax2s-kmtn/> ; + foaf:name "Shuji Kamitsuna" + ] ; + dcterms:contributor [ rdfs:seeAlso <http://www.eurecom.fr/~atemezin/gatemezing-foaf.rdf> ; + foaf:name "Ghislain Auguste Atemezing" + ] ; + dcterms:contributor [ foaf:name "Boris Villazón-Terrazas" ] ; + dcterms:contributor [ rdf:type foaf:Person ; + rdfs:seeAlso <https://orcid.org/0000-0002-3884-3420> ; + sdo:affiliation [ foaf:homepage <https://csiro.au> ; + foaf:name "Commonwealth Scientific and Industrial Research Organisation" + ] ; + foaf:name "Simon J D Cox" ; + foaf:workInfoHomepage <http://people.csiro.au/Simon-Cox> + ] ; + dcterms:contributor [ foaf:name "Marios Meimaris" ] ; + dcterms:contributor [ rdfs:seeAlso <https://orcid.org/0000-0001-9300-2694> ; + foaf:homepage <http://www.andrea-perego.name/foaf/#me> ; + foaf:name "Andrea Perego" + ] ; + dcterms:contributor [ sdo:affiliation [ foaf:homepage <http://ec.europa.eu/dgs/informatics/> ; + foaf:name "European Commission, DG DIGIT" + ] ; + foaf:name "Vassilios Peristeras" + ] ; + dcterms:creator [ foaf:name "John Erickson" ] ; + dcterms:creator [ rdfs:seeAlso <http://fadmaa.me/foaf.ttl> ; + foaf:name "Fadi Maali" + ] ; + dcterms:license <https://creativecommons.org/licenses/by/4.0/> ; + dcterms:modified "2013-09-20"^^xsd:date , "2020-11-30"^^xsd:date , "2019" , "2012-04-24"^^xsd:date , "2021-09-14"^^xsd:date , "2013-11-28"^^xsd:date , "2017-12-19"^^xsd:date ; + owl:imports <http://www.w3.org/2004/02/skos/core> , <http://www.w3.org/ns/prov-o#> , dcterms: ; + owl:versionInfo "Questa è una copia aggiornata del vocabolario DCAT v2.0 disponibile in https://www.w3.org/ns/dcat.ttl"@en , "This is an updated copy of v2.0 of the DCAT vocabulary, taken from https://www.w3.org/ns/dcat.ttl"@en , "Esta es una copia del vocabulario DCAT v2.0 disponible en https://www.w3.org/ns/dcat.ttl"@es , "Dette er en opdateret kopi af DCAT v. 2.0 som er tilgænglig på https://www.w3.org/ns/dcat.ttl"@da , "Toto je aktualizovaná kopie slovníku DCAT verze 2.0, převzatá z https://www.w3.org/ns/dcat.ttl"@cs ; + skos:editorialNote "English language definitions updated in this revision in line with ED. Multilingual text unevenly updated."@en ; + foaf:maker [ foaf:homepage <http://www.w3.org/2011/gld/> ; + foaf:name "Government Linked Data WG" + ] . + +dcat:qualifiedRelation + rdf:type owl:ObjectProperty ; + rdfs:comment "Odkaz na popis vztahu s jiným zdrojem."@cs , "Link a una descrizione di una relazione con un'altra risorsa."@it , "Link to a description of a relationship with another resource."@en , "Enlace a una descripción de la relación con otro recurso."@es , "Reference til en beskrivelse af en relation til en anden ressource."@da ; + rdfs:domain dcat:Resource ; + rdfs:label "qualified relation"@en , "relazione qualificata"@it , "Kvalificeret relation"@da , "relación calificada"@es , "kvalifikovaný vztah"@cs ; + rdfs:range dcat:Relationship ; + skos:changeNote "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "New property added in DCAT 2.0."@en , "Propiedad nueva añadida en DCAT 2.0."@es , "Ny egenskab tilføjet i DCAT 2.0."@da , "Nuova proprietà aggiunta in DCAT 2.0."@it ; + skos:definition "Odkaz na popis vztahu s jiným zdrojem."@cs , "Reference til en beskrivelse af en relation til en anden ressource."@da , "Link a una descrizione di una relazione con un'altra risorsa."@it , "Enlace a una descripción de la relación con otro recurso."@es , "Link to a description of a relationship with another resource."@en ; + skos:editorialNote "Introduced into DCAT to complement the other PROV qualified relations. "@en , "Přidáno do DCAT k doplnění jiných kvalifikovaných vztahů ze slovníku PROV."@cs , "Se incluyó en DCAT para complementar las relaciones calificadas disponibles en PROV."@es , "Introdotta in DCAT per integrare le altre relazioni qualificate di PROV."@it , "Introduceret i DCAT med henblik på at supplere de øvrige kvalificerede relationer fra PROV. "@da ; + skos:scopeNote "Used to link to another resource where the nature of the relationship is known but does not match one of the standard Dublin Core properties (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) or PROV-O properties (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@en , "Anvendes til at referere til en anden ressource hvor relationens betydning er kendt men ikke matcher en af de standardiserede egenskaber fra Dublin Core (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) eller PROV-O-egenskaber (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@da , "Viene utilizzato per associarsi a un'altra risorsa nei casi per i quali la natura della relazione è nota ma non è alcuna delle proprietà fornite dallo standard Dublin Core (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat , dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:require, dct:isRequiredBy) o dalle proprietà fornite da PROV-O (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom , prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@it , "Použito pro odkazování na jiný zdroj, kde druh vztahu je znám, ale neodpovídá standardním vlastnostem ze slovníku Dublin Core (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) či slovníku PROV-O (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@cs , "Se usa para asociar con otro recurso para el cuál la naturaleza de la relación es conocida pero no es ninguna de las propiedades que provee el estándar Dublin Core (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) or PROV-O properties (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@es . + +time:hasTime rdf:type owl:ObjectProperty ; + rdfs:comment "Proporciona soporte a la asociación de una entidad temporal (instante o intervalo) a cualquier cosa."@es , "Supports the association of a temporal entity (instant or interval) to any thing"@en ; + rdfs:label "tiene tiempo"@es , "has time"@en ; + rdfs:range time:TemporalEntity ; + skos:definition "Proporciona soporte a la asociación de una entidad temporal (instante o intervalo) a cualquier cosa."@es , "Supports the association of a temporal entity (instant or interval) to any thing"@en ; + skos:editorialNote "Feature at risk - added in 2017 revision, and not yet widely used. "@en , "Característica arriesgada -añadida en la revisión del 2017 que no ha sido todavía utilizada de forma amplia."@es . + +spdx:licenseInfoInSnippet + rdf:type owl:ObjectProperty ; + rdfs:comment "Licensing information that was discovered directly in the subject snippet. This is also considered a declared license for the snippet.\n\nIf the licenseInfoInSnippet field is not present for a snippet, it implies an equivalent meaning to NOASSERTION."@en ; + rdfs:domain spdx:Snippet ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( spdx:AnyLicenseInfo + [ rdf:type owl:Restriction ; + owl:hasValue spdx:noassertion ; + owl:onProperty spdx:licenseInfoInFile + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:none ; + owl:onProperty spdx:licenseInfoInFile + ] + ) + ] ; + rdfs:subPropertyOf spdx:licenseInfoFromFiles ; + vs:term_status "stable"@en . + +<http://data.europa.eu/r5r#DcatResource_Shape> + rdf:type sh:NodeShape ; + rdfs:comment "the union of Catalog, Dataset and DataService" ; + rdfs:label "dcat:Resource" ; + sh:message "The node is either a Catalog, Dataset or a DataService" ; + sh:or ( [ sh:class dcat:Catalog ] + [ sh:class dcat:Dataset ] + [ sh:class dcat:DataService ] + ) . + +spdx:annotationType_other + rdf:type owl:NamedIndividual , spdx:AnnotationType ; + rdfs:comment "Type of annotation which does not fit in any of the pre-defined annotation types."@en ; + vs:term_status "stable"@en . + +prov: rdf:type owl:Ontology . + +vcard:note rdf:type owl:DatatypeProperty ; + rdfs:comment "A note associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "note"@en ; + rdfs:range xsd:string . + +skos:semanticRelation + rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:domain skos:Concept ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "is in semantic relation with"@en ; + rdfs:range skos:Concept ; + skos:definition "Links a concept to a concept related by meaning."@en ; + skos:scopeNote "This property should not be used directly, but as a super-property for all properties denoting a relationship of meaning between concepts."@en . + +<http://www.w3.org/2009/pointers#offset> + rdf:type owl:DatatypeProperty ; + rdfs:domain <http://www.w3.org/2009/pointers#OffsetPointer> ; + rdfs:range xsd:positiveInteger ; + vs:term_status "stable"@en . + +prov:Quotation rdf:type owl:Class ; + rdfs:comment "An instance of prov:Quotation provides additional descriptions about the binary prov:wasQuotedFrom relation from some taken prov:Entity from an earlier, larger prov:Entity. For example, :here_is_looking_at_you_kid prov:wasQuotedFrom :casablanca_script; prov:qualifiedQuotation [ a prov:Quotation; prov:entity :casablanca_script; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Quotation" ; + rdfs:subClassOf prov:Derivation ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:definition "A quotation is the repeat of (some or all of) an entity, such as text or image, by someone who may or may not be its original author. Quotation is a particular case of derivation."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-quotation"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-quotation"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasQuotedFrom . + +prov:wasGeneratedBy rdf:type owl:ObjectProperty ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasGeneratedBy" ; + rdfs:range prov:Activity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedGeneration prov:activity ) ; + owl:propertyChainAxiom ( prov:qualifiedGeneration prov:activity ) ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:inverse "generated" ; + prov:qualifiedForm prov:Generation , prov:qualifiedGeneration . + +dcterms:title rdf:type rdf:Property ; + rdfs:comment "A name given to the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Title"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:title ; + dcterms:issued "2008-01-14"^^xsd:date . + +foaf:homepage rdf:type owl:ObjectProperty ; + rdfs:comment "This axiom needed so that Protege loads DCAT2 without errors." . + +spdx:fileDependency rdf:type owl:ObjectProperty ; + rdfs:comment "This field is deprecated since SPDX 2.0 in favor of using Section 7 which provides more granularity about relationships."@en ; + rdfs:domain spdx:File ; + rdfs:range spdx:File ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +vcard:hasCalendarBusy + rdf:type owl:ObjectProperty ; + rdfs:comment "To specify the busy time associated with the object. (Was called FBURL in RFC6350)"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has calendar busy"@en . + +spdx:purpose_source rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package is a collection of source files."@en ; + vs:term_status "stable"@en . + +spdx:hasExtractedLicensingInfo + rdf:type owl:ObjectProperty ; + rdfs:comment "Indicates that a particular ExtractedLicensingInfo was defined in the subject SpdxDocument."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range spdx:ExtractedLicensingInfo ; + vs:term_status "stable"@en . + +spdx:purpose_application + rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package is a software application."@en ; + vs:term_status "stable"@en . + +dcterms:coverage rdf:type rdf:Property ; + rdfs:comment "The spatial or temporal topic of the resource, spatial applicability of the resource, or jurisdiction under which the resource is relevant."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Coverage"@en ; + rdfs:subPropertyOf dc:coverage ; + dcam:rangeIncludes dcterms:Location , dcterms:Period , dcterms:Jurisdiction ; + dcterms:description "Spatial topic and spatial applicability may be a named place or a location specified by its geographic coordinates. Temporal topic may be a named period, date, or date range. A jurisdiction may be a named administrative entity or a geographic place to which the resource applies. Recommended practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names [[TGN](https://www.getty.edu/research/tools/vocabulary/tgn/index.html)]. Where appropriate, named places or time periods may be used in preference to numeric identifiers such as sets of coordinates or date ranges. Because coverage is so broadly defined, it is preferable to use the more specific subproperties Temporal Coverage and Spatial Coverage."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcterms:date rdf:type rdf:Property ; + rdfs:comment "A point or period of time associated with an event in the lifecycle of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date ; + dcterms:description "Date may be used to express temporal information at any level of granularity. Recommended practice is to express the date, date/time, or period of time according to ISO 8601-1 [[ISO 8601-1](https://www.iso.org/iso-8601-date-and-time-format.html)] or a published profile of the ISO standard, such as the W3C Note on Date and Time Formats [[W3CDTF](https://www.w3.org/TR/NOTE-datetime)] or the Extended Date/Time Format Specification [[EDTF](http://www.loc.gov/standards/datetime/)]. If the full date is unknown, month and year (YYYY-MM) or just year (YYYY) may be used. Date ranges may be specified using ISO 8601 period of time specification in which start and end dates are separated by a '/' (slash) character. Either the start or end date may be missing."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +time:unitYear rdf:type time:TemporalUnit ; + rdfs:label "Year (unit of temporal duration)"@en ; + skos:prefLabel "anno"@it , "سنة واحدة"@ar , "jaar"@nl , "一年"@zh , "Jahr"@de , "один год"@ru , "un año"@es , "year"@en , "an"@fr , "1 년"@kr , "1年"@jp , "ano"@pt , "rok"@pl ; + time:days "0"^^xsd:decimal ; + time:hours "0"^^xsd:decimal ; + time:minutes "0"^^xsd:decimal ; + time:months "0"^^xsd:decimal ; + time:seconds "0"^^xsd:decimal ; + time:weeks "0"^^xsd:decimal ; + time:years "1"^^xsd:decimal . + +spdx:fileType_image rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "The file is assoicated with an picture image file (MIME type of image/*, ie. .jpg, .gif )."@en ; + vs:term_status "stable"@en . + +prov:wasAttributedTo rdf:type owl:ObjectProperty ; + rdfs:comment "Attribution is the ascribing of an entity to an agent."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasAttributedTo" ; + rdfs:range prov:Agent ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedAttribution prov:agent ) ; + owl:propertyChainAxiom ( prov:qualifiedAttribution prov:agent ) ; + prov:category "starting-point" ; + prov:component "agents-responsibility" ; + prov:definition "Attribution is the ascribing of an entity to an agent."@en ; + prov:inverse "contributed" ; + prov:qualifiedForm prov:Attribution , prov:qualifiedAttribution . + +dcat:hadRole rdf:type owl:ObjectProperty ; + rdfs:comment "La función de una entidad o agente con respecto a otra entidad o recurso."@es , "La funzione di un'entità o un agente rispetto ad un'altra entità o risorsa."@it , "Den funktion en entitet eller aktør har i forhold til en anden ressource."@da , "Funkce entity či agenta ve vztahu k jiné entitě či zdroji."@cs , "The function of an entity or agent with respect to another entity or resource."@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( prov:Attribution dcat:Relationship ) + ] ; + rdfs:label "tiene rol"@it , "sehraná role"@cs , "hadRole"@en , "havde rolle"@da , "haRuolo"@it ; + rdfs:range dcat:Role ; + skos:changeNote "New property added in DCAT 2.0."@en , "Nueva propiedad agregada en DCAT 2.0."@es , "Nuova proprietà aggiunta in DCAT 2.0."@it , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs ; + skos:definition "Den funktion en entitet eller aktør har i forhold til en anden ressource."@da , "La funzione di un'entità o un agente rispetto ad un'altra entità o risorsa."@it , "The function of an entity or agent with respect to another entity or resource."@en , "La función de una entidad o agente con respecto a otra entidad o recurso."@es , "Funkce entity či agenta ve vztahu k jiné entitě či zdroji."@cs ; + skos:editorialNote "Přidáno do DCAT pro doplnění vlastnosti prov:hadRole (jejíž užití je omezeno na role v kontextu aktivity, s definičním oborem prov:Association)."@cs , "Introduceret i DCAT for at supplere prov:hadRole (hvis anvendelse er begrænset til roller i forbindelse med en aktivitet med domænet prov:Association)."@da , "Introduced into DCAT to complement prov:hadRole (whose use is limited to roles in the context of an activity, with the domain of prov:Association."@en , "Introdotta in DCAT per completare prov:hadRole (il cui uso è limitato ai ruoli nel contesto di un'attività, con il dominio di prov:Association."@it , "Agregada en DCAT para complementar prov:hadRole (cuyo uso está limitado a roles en el contexto de una actividad, con dominio prov:Association."@es ; + skos:scopeNote "Può essere utilizzata in una relazione qualificata per specificare il ruolo di un'entità rispetto a un'altra entità. Si raccomanda che il valore sia preso da un vocabolario controllato di ruoli di entità come ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode, IANA Registry of Link Relations https://www.iana.org/assignments/link-relation, DataCite metadata schema, o MARC relators https://id.loc.gov/vocabulary/relators."@it , "Může být použito v kvalifikovaném vztahu pro specifikaci role Entity ve vztahu k jiné Entitě. Je doporučeno použít hodnotu z řízeného slovníku rolí entit, jako například ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode, IANA Registry of Link Relations https://www.iana.org/assignments/link-relation, DataCite metadata schema, MARC relators https://id.loc.gov/vocabulary/relators."@cs , "May be used in a qualified-relation to specify the role of an Entity with respect to another Entity. It is recommended that the value be taken from a controlled vocabulary of entity roles such as: ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode; IANA Registry of Link Relations https://www.iana.org/assignments/link-relation; DataCite metadata schema; MARC relators https://id.loc.gov/vocabulary/relators."@en , "May be used in a qualified-attribution to specify the role of an Agent with respect to an Entity. It is recommended that the value be taken from a controlled vocabulary of agent roles, such as http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@en , "Může být použito v kvalifikovaném přiřazení pro specifikaci role Agenta ve vztahu k Entitě. Je doporučeno hodnotu vybrat z řízeného slovníku rolí agentů, jako například http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@cs , "Può essere utilizzato in un'attribuzione qualificata per specificare il ruolo di un agente rispetto a un'entità. Si raccomanda che il valore sia preso da un vocabolario controllato di ruoli di agente, come ad esempio http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@it , "Puede usarse en una atribución cualificada para especificar el rol de un Agente con respecto a una Entidad. Se recomienda que el valor sea de un vocabulario controlado de roles de agentes, como por ejemplo http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@es , "Kan vendes ved kvalificerede krediteringer til at angive en aktørs rolle i forhold en entitet. Det anbefales at værdierne styres som et kontrolleret udfaldsrum med aktørroller, såsom http://registry.it.csiro.au/def/isotc211/CI_RoleCode."@da , "Puede usarse en una atribución cualificada para especificar el rol de una Entidad con respecto a otra Entidad. Se recomienda que su valor se tome de un vocabulario controlado de roles de entidades como por ejemplo: ISO 19115 DS_AssociationTypeCode http://registry.it.csiro.au/def/isotc211/DS_AssociationTypeCode; IANA Registry of Link Relations https://www.iana.org/assignments/link-relation; esquema de metadatos de DataCite; MARC relators https://id.loc.gov/vocabulary/relators."@es . + +xsd:dateTimeStamp rdfs:label "sello de tiempo"@es . + +spdx:noassertion rdf:type owl:NamedIndividual ; + rdfs:comment "Individual to indicate the creator of the SPDX document does not assert any value for the object." . + +spdx:purpose_container + rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package refers to a container image which can be used by a container runtime application."@en ; + vs:term_status "stable"@en . + +prov:PrimarySource rdf:type owl:Class ; + rdfs:comment "An instance of prov:PrimarySource provides additional descriptions about the binary prov:hadPrimarySource relation from some secondary prov:Entity to an earlier, primary prov:Entity. For example, :blog prov:hadPrimarySource :newsArticle; prov:qualifiedPrimarySource [ a prov:PrimarySource; prov:entity :newsArticle; :foo :bar ] ."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "PrimarySource" ; + rdfs:subClassOf prov:Derivation ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:definition "A primary source for a topic refers to something produced by some agent with direct experience and knowledge about the topic, at the time of the topic's study, without benefit from hindsight.\n\nBecause of the directness of primary sources, they 'speak for themselves' in ways that cannot be captured through the filter of secondary sources. As such, it is important for secondary sources to reference those primary sources from which they were derived, so that their reliability can be investigated.\n\nA primary source relation is a particular case of derivation of secondary materials from their primary sources. It is recognized that the determination of primary sources can be up to interpretation, and should be done according to conventions accepted within the application's domain."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-primary-source"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-original-source"^^xsd:anyURI ; + prov:unqualifiedForm prov:hadPrimarySource . + +skos:OrderedCollection + rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "Ordered Collection"@en ; + rdfs:subClassOf skos:Collection ; + skos:definition "An ordered collection of concepts, where both the grouping and the ordering are meaningful."@en ; + skos:scopeNote "Ordered collections can be used where you would like a set of concepts to be displayed in a specific order, and optionally under a 'node label'."@en . + +prov:EntityInfluence rdf:type owl:Class ; + rdfs:comment "EntityInfluence provides additional descriptions of an Entity's binary influence upon any other kind of resource. Instances of EntityInfluence use the prov:entity property to cite the influencing Entity."@en , "It is not recommended that the type EntityInfluence be asserted without also asserting one of its more specific subclasses."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "EntityInfluence" ; + rdfs:seeAlso prov:entity ; + rdfs:subClassOf prov:Influence ; + prov:category "qualified" ; + prov:editorsDefinition "EntityInfluence is the capacity of an entity to have an effect on the character, development, or behavior of another by means of usage, start, end, derivation, or other. "@en . + +spdx:relationshipType_variantOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_variantOf expresses that an SPDXElement is a variant of the relatedSPDXElement, but it is not clear which came first. For example, if the content of two Files differs by some edit, but there is no way to tell which came first (no reliable date information), then one File is a variant of the other File."@en ; + vs:term_status "stable"@en . + +dcterms:publisher rdf:type rdf:Property ; + rdfs:comment "An entity responsible for making the resource available."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Publisher"@en ; + rdfs:subPropertyOf dc:publisher ; + dcam:rangeIncludes dcterms:Agent ; + dcterms:issued "2008-01-14"^^xsd:date . + +time:inXSDDate rdf:type owl:DatatypeProperty ; + rdfs:comment "Position of an instant, expressed using xsd:date"@en , "Posición de un instante, expresado utilizando xsd:date."@es ; + rdfs:domain time:Instant ; + rdfs:label "in XSD date"@en , "en fecha XSD"@es ; + rdfs:range xsd:date ; + skos:definition "Position of an instant, expressed using xsd:date"@en , "Posición de un instante, expresado utilizando xsd:date."@es . + +dcterms:dateAccepted rdf:type rdf:Property ; + rdfs:comment "Date of acceptance of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Accepted"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty. Examples of resources to which a date of acceptance may be relevant are a thesis (accepted by a university department) or an article (accepted by a journal)."@en ; + dcterms:issued "2002-07-13"^^xsd:date . + +prov:dm rdf:type owl:AnnotationProperty ; + rdfs:comment "A reference to the principal section of the PROV-DM document that describes this concept."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +adms:sample rdf:type owl:ObjectProperty ; + rdfs:comment "Links to a sample of an Asset (which is itself an Asset)."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "sample"@en ; + rdfs:range rdfs:Resource . + +[ rdf:type owl:Axiom ; + rdfs:comment "A collection is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections."@en ; + owl:annotatedProperty rdfs:range ; + owl:annotatedSource prov:hadMember ; + owl:annotatedTarget prov:Entity ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-collection" +] . + +prov:endedAtTime rdf:type owl:DatatypeProperty ; + rdfs:comment "The time at which an activity ended. See also prov:startedAtTime."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "endedAtTime" ; + rdfs:range xsd:dateTime ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:editorialNote "It is the intent that the property chain holds: (prov:qualifiedEnd o prov:atTime) rdfs:subPropertyOf prov:endedAtTime."@en ; + prov:qualifiedForm prov:End , prov:atTime . + +time:Instant rdf:type owl:Class ; + rdfs:comment "A temporal entity with zero extent or duration"@en , "Una entidad temporal con una extensión o duración cero."@es ; + rdfs:label "Time instant"@en , "instante de tiempo."@es ; + rdfs:subClassOf time:TemporalEntity ; + skos:definition "A temporal entity with zero extent or duration"@en , "Una entidad temporal con una extensión o duración cero."@es . + +adms:identifier rdf:type owl:ObjectProperty ; + rdfs:comment "Links a resource to an adms:Identifier class."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "identifier"@en ; + rdfs:range adms:Identifier . + +prov:qualifiedDerivation + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Entity prov:wasDerivedFrom Entity :e, then it can qualify how it was derived using prov:qualifiedDerivation [ a prov:Derivation; prov:entity :e; :foo :bar ]."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedDerivation" ; + rdfs:range prov:Derivation ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "qualifiedDerivationOf" ; + prov:sharesDefinitionWith prov:Derivation ; + prov:unqualifiedForm prov:wasDerivedFrom . + +dcat:endpointURL rdf:type owl:ObjectProperty ; + rdfs:comment "La posición raíz o end-point principal del servicio (una IRI web)."@es , "La locazione principale o l'endpoint primario del servizio (un IRI risolvibile via web)."@it , "The root location or primary endpoint of the service (a web-resolvable IRI)."@en , "Kořenové umístění nebo hlavní přístupový bod služby (IRI přístupné přes Web)."@cs , "Rodplaceringen eller det primære endpoint for en tjeneste (en web-resolverbar IRI)."@da ; + rdfs:domain dcat:DataService ; + rdfs:label "end-point del servizio"@it , "service end-point"@en , "end-point del servicio"@es , "přístupový bod služby"@cs , "tjenesteendpoint"@da ; + rdfs:range rdfs:Resource ; + skos:changeNote "Nueva propiedad agregada en DCAT 2.0."@es , "Nuova proprietà in DCAT 2.0."@it , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "New property in DCAT 2.0."@en ; + skos:definition "Rodplaceringen eller det primære endpoint for en tjeneste (en web-resolverbar IRI)."@da , "The root location or primary endpoint of the service (a web-resolvable IRI)."@en , "La locazione principale o l'endpoint primario del servizio (un IRI risolvibile via web)."@it , "Kořenové umístění nebo hlavní přístupový bod služby (IRI přístupné přes Web)."@cs , "La posición raíz o end-point principal del servicio (una IRI web)."@es . + +skos:inScheme rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "is in scheme"@en ; + rdfs:range skos:ConceptScheme ; + skos:definition "Relates a resource (for example a concept) to a concept scheme in which it is included."@en ; + skos:scopeNote "A concept may be a member of more than one concept scheme."@en . + +time:minutes rdf:type owl:DatatypeProperty ; + rdfs:comment "length, or element of, a temporal extent expressed in minutes"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en minutos."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "minutes"@en , "minutos"@es ; + rdfs:range xsd:decimal ; + skos:definition "length, or element of, a temporal extent expressed in minutes"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en minutos."@es . + +prov:Association rdf:type owl:Class ; + rdfs:comment "An instance of prov:Association provides additional descriptions about the binary prov:wasAssociatedWith relation from an prov:Activity to some prov:Agent that had some responsiblity for it. For example, :baking prov:wasAssociatedWith :baker; prov:qualifiedAssociation [ a prov:Association; prov:agent :baker; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Association" ; + rdfs:subClassOf prov:AgentInfluence ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:definition "An activity association is an assignment of responsibility to an agent for an activity, indicating that the agent had a role in the activity. It further allows for a plan to be specified, which is the plan intended by the agent to achieve some goals in the context of this activity."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Association"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Association"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasAssociatedWith . + +prov:SoftwareAgent rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "SoftwareAgent" ; + rdfs:subClassOf prov:Agent ; + prov:category "expanded" ; + prov:component "agents-responsibility" ; + prov:definition "A software agent is running software."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-types"^^xsd:anyURI . + +<http://www.w3.org/ns/locn.ttl> + rdfs:label "Turtle version of the ISA Programme Location Core Vocabulary"@en ; + dcterms:format <http://www.w3.org/ns/formats/data/Turtle> ; + dcat:mediaType "text/turtle"^^dcterms:IMT . + +vcard:hasTitle rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the title data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has title"@en . + +skos:broadMatch rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has broader match"@en ; + rdfs:subPropertyOf skos:mappingRelation , skos:broader ; + owl:inverseOf skos:narrowMatch ; + skos:definition "skos:broadMatch is used to state a hierarchical mapping link between two conceptual resources in different concept schemes."@en . + +dcat:distribution rdf:type rdf:Property , owl:ObjectProperty ; + rdfs:comment "Connecte un jeu de données à des distributions disponibles."@fr , "Una distribución disponible del conjunto de datos."@es , "An available distribution of the dataset."@en , "En tilgængelig repræsentation af datasættet."@da , "Una distribuzione disponibile per il set di dati."@it , "تربط قائمة البيانات بطريقة أو بشكل يسمح الوصول الى البيانات"@ar , "データセットを、その利用可能な配信に接続します。"@ja , "Συνδέει ένα σύνολο δεδομένων με μία από τις διαθέσιμες διανομές του."@el , "Dostupná distribuce datové sady."@cs ; + rdfs:domain dcat:Dataset ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "データセット配信"@ja , "distribution"@en , "distribution"@fr , "distribution"@da , "distribuzione"@it , "διανομή"@el , "توزيع"@ar , "distribución"@es , "distribuce"@cs ; + rdfs:range dcat:Distribution ; + rdfs:subPropertyOf dcterms:relation ; + skos:altLabel "har distribution"@da ; + skos:definition "Συνδέει ένα σύνολο δεδομένων με μία από τις διαθέσιμες διανομές του."@el , "Connecte un jeu de données à des distributions disponibles."@fr , "Una distribución disponible del conjunto de datos."@es , "データセットを、その利用可能な配信に接続します。"@ja , "تربط قائمة البيانات بطريقة أو بشكل يسمح الوصول الى البيانات"@ar , "En tilgængelig repræsentation af datasættet."@da , "An available distribution of the dataset."@en , "Una distribuzione disponibile per il set di dati."@it , "Dostupná distribuce datové sady."@cs ; + skos:editorialNote "Status: English Definition text modified by DCAT revision team, translations pending (except for Italian, Spanish and Czech)."@en . + +rdfs:label rdf:type owl:AnnotationProperty ; + rdfs:comment ""@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> . + +dcat:packageFormat rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:comment "The package format of the distribution in which one or more data files are grouped together, e.g. to enable a set of related files to be downloaded together."@en , "Balíčkový formát souboru, ve kterém je jeden či více souborů seskupeno dohromady, např. aby bylo možné stáhnout sadu souvisejících souborů naráz."@cs , "Il formato di impacchettamento della distribuzione in cui uno o più file di dati sono raggruppati insieme, ad es. per abilitare un insieme di file correlati da scaricare insieme."@it , "El formato del archivo en que se agrupan uno o más archivos de datos, e.g. para permitir que un conjunto de archivos relacionados se bajen juntos."@es , "Format til pakning af data med henblik på distribution af en eller flere relaterede datafiler der samles til en enhed med henblik på samlet distribution. "@da ; + rdfs:domain dcat:Distribution ; + rdfs:isDefinedBy <https://www.w3.org/TR/vocab-dcat-2/> ; + rdfs:label "formát balíčku"@cs , "packaging format"@en , "formato di impacchettamento"@it , "pakkeformat"@da , "formato de empaquetado"@es ; + rdfs:range dcterms:MediaType ; + rdfs:subPropertyOf dcterms:format ; + skos:changeNote "Ny egenskab tilføjet i DCAT 2.0."@da , "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "New property added in DCAT 2.0."@en , "Nueva propiedad agregada en DCAT 2.0."@es , "Nuova proprietà aggiunta in DCAT 2.0."@it ; + skos:definition "Il formato di impacchettamento della distribuzione in cui uno o più file di dati sono raggruppati insieme, ad es. per abilitare un insieme di file correlati da scaricare insieme."@it , "The package format of the distribution in which one or more data files are grouped together, e.g. to enable a set of related files to be downloaded together."@en , "El formato del archivo en que se agrupan uno o más archivos de datos, e.g. para permitir que un conjunto de archivos relacionados se bajen juntos."@es , "Balíčkový formát souboru, ve kterém je jeden či více souborů seskupeno dohromady, např. aby bylo možné stáhnout sadu souvisejících souborů naráz."@cs ; + skos:scopeNote "Questa proprietà deve essere utilizzata quando i file nella distribuzione sono impacchettati, ad esempio in un file TAR, Frictionless Data Package o Bagit. Il formato DOVREBBE essere espresso utilizzando un tipo di supporto come definito dal registro dei tipi di media IANA https://www.iana.org/assignments/media-types/, se disponibili."@it , "Esta propiedad se debe usar cuando los archivos de la distribución están empaquetados, por ejemplo en un archivo TAR, Frictionless Data Package o Bagit. El formato DEBERÍA expresarse usando un 'media type', tales como los definidos en el registro IANA de 'media types' https://www.iana.org/assignments/media-types/, si está disponibles."@es , "Denne egenskab kan anvendes hvis filerne i en distribution er pakket, fx i en TAR-fil, en Frictionless Data Package eller en Bagit-fil. Formatet BØR udtrykkes ved en medietype som defineret i 'IANA media types registry', hvis der optræder en relevant medietype dér: https://www.iana.org/assignments/media-types/."@da , "This property to be used when the files in the distribution are packaged, e.g. in a TAR file, a Frictionless Data Package or a Bagit file. The format SHOULD be expressed using a media type as defined by IANA media types registry https://www.iana.org/assignments/media-types/, if available."@en , "Tato vlastnost se použije, když jsou soubory v distribuci zabaleny, např. v souboru TAR, v balíčku Frictionless Data Package nebo v souboru Bagit. Formát BY MĚL být vyjádřen pomocí typu média definovaného v registru IANA https://www.iana.org/assignments/media-types/, pokud existuje."@cs . + +time:inTimePosition rdf:type owl:ObjectProperty ; + rdfs:comment "Posición de un instante, expresada como una coordenada temporal o un valor nominal."@es , "Position of an instant, expressed as a temporal coordinate or nominal value"@en ; + rdfs:domain time:Instant ; + rdfs:label "posición de tiempo"@es , "Time position"@en ; + rdfs:range time:TimePosition ; + rdfs:subPropertyOf time:inTemporalPosition ; + skos:definition "Position of a time instant expressed as a TimePosition"@en , "Posición de un instante, expresada como una coordenada temporal o un valor nominal."@es . + +spdx:fileType_other rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "Indicates the file is not a source, archive or binary file."@en ; + vs:term_status "stable"@en . + +time:dayOfYear rdf:type owl:DatatypeProperty ; + rdfs:comment "The number of the day within the year"@en , "El número de día en el año."@es ; + rdfs:domain time:GeneralDateTimeDescription ; + rdfs:label "day of year"@en , "día del año"@es ; + rdfs:range xsd:nonNegativeInteger ; + skos:definition "The number of the day within the year"@en , "El número de día en el año."@es . + +dcterms:audience rdf:type rdf:Property ; + rdfs:comment "A class of agents for whom the resource is intended or useful."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Audience"@en ; + dcam:rangeIncludes dcterms:AgentClass ; + dcterms:description "Recommended practice is to use this property with non-literal values from a vocabulary of audience types."@en ; + dcterms:issued "2001-05-21"^^xsd:date . + +<http://spdx.org/licenses/CC0-1.0> + rdf:type owl:NamedIndividual . + +spdx:purpose_firmware + rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package provides low level control over a device's hardware."@en ; + vs:term_status "stable"@en . + +time:hasBeginning rdf:type owl:ObjectProperty ; + rdfs:comment "Beginning of a temporal entity"@en , "Comienzo de una entidad temporal."@es ; + rdfs:domain time:TemporalEntity ; + rdfs:label "has beginning"@en , "tiene principio"@es ; + rdfs:range time:Instant ; + rdfs:subPropertyOf time:hasTime ; + skos:definition "Beginning of a temporal entity."@en , "Comienzo de una entidad temporal."@es . + +spdx:licenseText rdf:type owl:DatatypeProperty ; + rdfs:comment "Full text of the license."@en ; + rdfs:domain spdx:License ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +time:Saturday rdf:type time:DayOfWeek ; + rdfs:label "Saturday"@en ; + skos:prefLabel "السبت"@ar , "Sabato"@it , "土曜日"@ja , "Sábado"@es , "Sábado"@pt , "Zaterdag"@nl , "Суббота"@ru , "Sobota"@pl , "星期六"@zh , "Samedi"@fr , "Saturday"@en , "Samstag"@de . + +skos:topConceptOf rdf:type owl:ObjectProperty , rdf:Property ; + rdfs:domain skos:Concept ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "is top concept in scheme"@en ; + rdfs:range skos:ConceptScheme ; + rdfs:subPropertyOf skos:inScheme ; + owl:inverseOf skos:hasTopConcept ; + skos:definition "Relates a concept to the concept scheme that it is a top level concept of."@en . + +vcard:Male rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Male"@en ; + rdfs:subClassOf vcard:Gender . + +vcard:Colleague rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Colleague"@en ; + rdfs:subClassOf vcard:RelatedType . + +spdx:ExternalRef rdf:type owl:Class ; + rdfs:comment "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:ReferenceCategory ; + owl:onProperty spdx:referenceCategory ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:ReferenceType ; + owl:onProperty spdx:referenceType ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:referenceLocator ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment + ] ; + vs:term_status "stable"@en . + +vcard:hasNickname rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the nickname data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has nickname"@en ; + rdfs:seeAlso vcard:nickname . + +spdx:url rdf:type owl:DatatypeProperty ; + rdfs:comment "URL Reference"@en ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:anyURI . + +prov:order rdf:type owl:AnnotationProperty ; + rdfs:comment "The position that this OWL term should be listed within documentation. The scope of the documentation (e.g., among all terms, among terms within a prov:category, among properties applying to a particular class, etc.) is unspecified."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> . + +spdx:relationshipType_staticLink + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A statically links to SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:purpose_operatingSystem + rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package refers to an operating system."@en ; + vs:term_status "stable"@en . + +time:Year rdf:type owl:DeprecatedClass , owl:Class ; + rdfs:comment "Year duration" ; + rdfs:label "Year"@en ; + rdfs:subClassOf time:DurationDescription ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 1 ; + owl:onProperty time:years + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 0 ; + owl:onProperty time:hours + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 0 ; + owl:onProperty time:weeks + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 0 ; + owl:onProperty time:months + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 0 ; + owl:onProperty time:minutes + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 0 ; + owl:onProperty time:seconds + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality 0 ; + owl:onProperty time:days + ] ; + owl:deprecated true ; + skos:definition "Year duration" ; + skos:historyNote "Year was proposed in the 2006 version of OWL-Time as an example of how DurationDescription could be specialized to allow for a duration to be restricted to a number of years. \n\nIt is deprecated in this edition of OWL-Time. " ; + skos:prefLabel "Anno"@it , "سنة"@ar , "Rok"@pl , "Jaar"@nl , "Año"@es , "Jahr"@de , "Année (calendrier)"@fr , "Year"@en , "Год"@ru , "年"@ja , "年"@zh , "Ano"@pt . + +<http://www.w3.org/2009/pointers#CompoundPointer> + rdf:type owl:Class ; + rdfs:subClassOf <http://www.w3.org/2009/pointers#Pointer> ; + vs:term_status "stable" . + +spdx:fileType_text rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "The file is human readable text file (MIME type of text/*)."@en ; + vs:term_status "stable"@en . + +spdx:match rdf:type owl:DatatypeProperty ; + rdfs:comment "Status of a License List SeeAlso URL reference if it refers to a website that matches the license text." ; + rdfs:domain spdx:CrossRef ; + rdfs:range xsd:string . + +<http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> + rdf:type sh:NodeShape ; + rdfs:comment "Date time date disjunction shape checks that a datatype property receives a temporal value: date, dateTime, gYear or gYearMonth literal" ; + rdfs:label "Date time date disjunction" ; + sh:message "The values must be data typed as either xsd:date, xsd:dateTime, xsd:gYear or xsd:gYearMonth" ; + sh:or ( [ sh:datatype xsd:date ] + [ sh:datatype xsd:dateTime ] + [ sh:datatype xsd:gYear ] + [ sh:datatype xsd:gYearMonth ] + ) . + +dcterms:accrualMethod + rdf:type rdf:Property ; + rdfs:comment "The method by which items are added to a collection."@en ; + rdfs:domain dctype:Collection ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Accrual Method"@en ; + dcam:rangeIncludes dcterms:MethodOfAccrual ; + dcterms:description "Recommended practice is to use a value from the Collection Description Accrual Method Vocabulary [[DCMI-ACCRUALMETHOD](https://dublincore.org/groups/collections/accrual-method/)]."@en ; + dcterms:issued "2005-06-13"^^xsd:date . + +vcard:Kin rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Kin"@en ; + rdfs:subClassOf vcard:RelatedType . + +dcat:byteSize rdf:type owl:DatatypeProperty , rdf:Property ; + rdfs:comment "الحجم بالبايتات "@ar , "Το μέγεθος μιας διανομής σε bytes."@el , "The size of a distribution in bytes."@en , "Velikost distribuce v bajtech."@cs , "バイトによる配信のサイズ。"@ja , "La taille de la distribution en octects"@fr , "Størrelsen af en distributionen angivet i bytes."@da , "La dimensione di una distribuzione in byte."@it , "El tamaño de una distribución en bytes."@es ; + rdfs:domain dcat:Distribution ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "μέγεθος σε bytes"@el , "velikost v bajtech"@cs , "byte size"@en , "tamaño en bytes"@es , "dimensione in byte"@it , "الحجم بالبايت"@ar , "バイト・サイズ"@ja , "taille en octects"@fr , "bytestørrelse"@da ; + rdfs:range rdfs:Literal ; + skos:definition "Το μέγεθος μιας διανομής σε bytes."@el , "Størrelsen af en distribution angivet i bytes."@da , "الحجم بالبايتات "@ar , "El tamaño de una distribución en bytes."@es , "Velikost distribuce v bajtech."@cs , "La dimensione di una distribuzione in byte."@it , "The size of a distribution in bytes."@en , "La taille de la distribution en octects."@fr , "バイトによる配信のサイズ。"@ja ; + skos:scopeNote "Το μέγεθος σε bytes μπορεί να προσεγγιστεί όταν η ακριβής τιμή δεν είναι γνωστή. Η τιμή της dcat:byteSize θα πρέπει να δίνεται με τύπο δεδομένων xsd:decimal."@el , "الحجم يمكن أن يكون تقريبي إذا كان الحجم الدقيق غير معروف"@ar , "Bytestørrelsen kan approximeres hvis den præcise størrelse ikke er kendt. Værdien af dcat:byteSize bør angives som xsd:decimal."@da , "Velikost v bajtech může být přibližná, pokud její přesná hodnota není známa. Literál s hodnotou dcat:byteSize by měl mít datový typ xsd:decimal."@cs , "El tamaño en bytes puede ser aproximado cuando se desconoce el tamaño exacto. El valor literal de dcat:byteSize debe tener tipo 'xsd:decimal'."@es , "正確なサイズが不明である場合、サイズは、バイトによる近似値を示すことができます。"@ja , "La taille en octects peut être approximative lorsque l'on ignore la taille réelle. La valeur littérale de dcat:byteSize doit être de type xsd:decimal."@fr , "The size in bytes can be approximated when the precise size is not known. The literal value of dcat:byteSize should by typed as xsd:decimal."@en , "La dimensione in byte può essere approssimata quando non si conosce la dimensione precisa. Il valore di dcat:byteSize dovrebbe essere espresso come un xsd:decimal."@it . + +locn:fullAddress rdf:type rdf:Property ; + rdfs:comment "The complete address written as a string, with or without formatting. The domain of locn:fullAddress is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "full address"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:fullAddress" ; + vs:term_status "testing"@en . + +time:xsdDateTime rdf:type owl:DeprecatedProperty , owl:DatatypeProperty ; + rdfs:comment "Valor de 'intervalo de fecha-hora' expresado como un valor compacto."@es , "Value of DateTimeInterval expressed as a compact value."@en ; + rdfs:domain time:DateTimeInterval ; + rdfs:label "has XSD date-time"@en , "tiene fecha-hora XSD"@es ; + rdfs:range xsd:dateTime ; + owl:deprecated true ; + skos:note "Utilizando xsd:dateTime en este lugar significa que la duración del intervalo está implícita: se corresponde con la longitud del elemento más pequeño distinto de cero del literal fecha-hora. Sin embargo, esta regla no se puede utilizar para intervalos cuya duración es mayor que un rango más pequeño que el tiempo de comienzo - p.ej. el primer minuto o segundo del día, la primera hora del mes, o el primer día del año. En estos casos el intervalo deseado no se puede distinguir del intervalo correspondiente al próximo rango más alto. Debido a esta ambigüedad esencial, no se recomienda el uso de esta propiedad y está desaprobada." , "Using xsd:dateTime in this place means that the duration of the interval is implicit: it corresponds to the length of the smallest non-zero element of the date-time literal. However, this rule cannot be used for intervals whose duration is more than one rank smaller than the starting time - e.g. the first minute or second of a day, the first hour of a month, or the first day of a year. In these cases the desired interval cannot be distinguished from the interval corresponding to the next rank up. Because of this essential ambiguity, use of this property is not recommended and it is deprecated."@en . + +vcard:hasGivenName rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the given name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has given name"@en . + +spdx:relationshipType_dependsOn + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A depends on SPDXRef-B."@en ; + vs:term_status "stable"@en . + +dcat:theme rdf:type rdf:Property , owl:ObjectProperty ; + rdfs:comment "La categoria principale della risorsa. Una risorsa può avere più temi."@it , "Hlavní téma zdroje. Zdroj může mít více témat."@cs , "La categoría principal del recurso. Un recurso puede tener varios temas."@es , "A main category of the resource. A resource can have multiple themes."@en , "التصنيف الرئيسي لقائمة البيانات. قائمة البيانات يمكن أن تملك أكثر من تصنيف رئيسي واحد."@ar , "Et centralt emne for ressourcen. En ressource kan have flere centrale emner."@da , "La catégorie principale de la ressource. Une ressource peut avoir plusieurs thèmes."@fr , "データセットの主要カテゴリー。データセットは複数のテーマを持つことができます。"@ja , "Η κύρια κατηγορία του συνόλου δεδομένων. Ένα σύνολο δεδομένων δύναται να έχει πολλαπλά θέματα."@el ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "emne"@da , "Θέμα"@el , "theme"@en , "tema"@es , "tema"@it , "テーマ/カテゴリー"@ja , "téma"@cs , "التصنيف"@ar , "thème"@fr ; + rdfs:range skos:Concept ; + rdfs:subPropertyOf dcterms:subject ; + skos:altLabel "tema"@da ; + skos:definition "Hlavní téma zdroje. Zdroj může mít více témat."@cs , "La catégorie principale de la ressource. Une ressource peut avoir plusieurs thèmes."@fr , "La categoría principal del recurso. Un recurso puede tener varios temas."@es , "Η κύρια κατηγορία του συνόλου δεδομένων. Ένα σύνολο δεδομένων δύναται να έχει πολλαπλά θέματα."@el , "La categoria principale della risorsa. Una risorsa può avere più temi."@it , "データセットの主要カテゴリー。データセットは複数のテーマを持つことができます。"@ja , "A main category of the resource. A resource can have multiple themes."@en , "Et centralt emne for ressourcen. En ressource kan have flere centrale emner."@da , "التصنيف الرئيسي لقائمة البيانات. قائمة البيانات يمكن أن تملك أكثر من تصنيف رئيسي واحد."@ar ; + skos:editorialNote "Status: English Definition text modified by DCAT revision team, all except for Italian and Czech translations are pending."@en ; + skos:scopeNote "El conjunto de skos:Concepts utilizados para categorizar los recursos están organizados en un skos:ConceptScheme que describe todas las categorías y sus relaciones en el catálogo."@es , "データセットを分類するために用いられるskos:Conceptの集合は、カタログのすべてのカテゴリーとそれらの関係を記述しているskos:ConceptSchemeで組織化されます。"@ja , "Sada instancí třídy skos:Concept použitá pro kategorizaci zdrojů je organizována do schématu konceptů skos:ConceptScheme, které popisuje všechny kategorie v katalogu a jejich vztahy."@cs , "Il set di concetti skos usati per categorizzare le risorse sono organizzati in skos:ConceptScheme che descrive tutte le categorie e le loro relazioni nel catalogo."@it , "Samlingen af begreber (skos:Concept) der anvendes til at emneinddele ressourcer organiseres i et begrebssystem (skos:ConceptScheme) som beskriver alle emnerne og deres relationer i kataloget."@da , "Un ensemble de skos:Concepts utilisés pour catégoriser les ressources sont organisés en un skos:ConceptScheme décrivant toutes les catégories et ses relations dans le catalogue."@fr , "The set of skos:Concepts used to categorize the resources are organized in a skos:ConceptScheme describing all the categories and their relations in the catalog."@en , "Το σετ των skos:Concepts που χρησιμοποιείται για να κατηγοριοποιήσει τα σύνολα δεδομένων είναι οργανωμένο εντός ενός skos:ConceptScheme που περιγράφει όλες τις κατηγορίες και τις σχέσεις αυτών στον κατάλογο."@el . + +time:TemporalUnit rdf:type owl:Class ; + rdfs:comment "A standard duration, which provides a scale factor for a time extent, or the granularity or precision for a time position."@en , "Una duración estándar, que proporciona un factor de escala para una extensión de tiempo, o la granularidad o precisión para una posición de tiempo."@es ; + rdfs:label "unidad de tiempo"@es , "Temporal unit"@en ; + rdfs:subClassOf time:TemporalDuration ; + skos:changeNote "Remove enumeration from definition, in order to allow other units to be used when required in other coordinate systems. \nNOTE: existing units are still present as members of the class, but the class membership is now open. \n\nIn the original OWL-Time the following constraint appeared: \n owl:oneOf (\n time:unitSecond\n time:unitMinute\n time:unitHour\n time:unitDay\n time:unitWeek\n time:unitMonth\n time:unitYear\n ) ;"@en ; + skos:definition "Una duración estándar, que proporciona un factor de escala para una extensión de tiempo, o la granularidad o precisión para una posición de tiempo."@es , "A standard duration, which provides a scale factor for a time extent, or the granularity or precision for a time position."@en ; + skos:note "La pertenencia de la clase 'unidad de tiempo' está abierta, para permitir otras unidades de tiempo utilizadas en algunas aplicaciones técnicas (por ejemplo, millones de años o el mes Baha'i)."@es , "Membership of the class TemporalUnit is open, to allow for other temporal units used in some technical applications (e.g. millions of years, Baha'i month)."@en . + +skos:relatedMatch rdf:type owl:ObjectProperty , owl:SymmetricProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has related match"@en ; + rdfs:subPropertyOf skos:mappingRelation , skos:related ; + skos:definition "skos:relatedMatch is used to state an associative mapping link between two conceptual resources in different concept schemes."@en . + +dcterms:abstract rdf:type rdf:Property ; + rdfs:comment "A summary of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Abstract"@en ; + rdfs:subPropertyOf dc:description , dcterms:description ; + dcterms:issued "2000-07-11"^^xsd:date . + +dcat:dataset rdf:type rdf:Property , owl:ObjectProperty ; + rdfs:comment "Kolekce dat, která je katalogizována v katalogu."@cs , "Una raccolta di dati che è elencata nel catalogo."@it , "تربط الفهرس بقائمة بيانات ضمنه"@ar , "Un conjunto de datos que se lista en el catálogo."@es , "En samling af data som er opført i kataloget."@da , "A collection of data that is listed in the catalog."@en , "カタログの一部であるデータセット。"@ja , "Relie un catalogue à un jeu de données faisant partie de ce catalogue."@fr , "Συνδέει έναν κατάλογο με ένα σύνολο δεδομένων το οποίο ανήκει στον εν λόγω κατάλογο."@el ; + rdfs:domain dcat:Catalog ; + rdfs:isDefinedBy <http://www.w3.org/TR/vocab-dcat/> ; + rdfs:label "σύνολο δεδομένων"@el , "قائمة بيانات"@ar , "conjunto de datos"@es , "datová sada"@cs , "dataset"@en , "dataset"@it , "jeu de données"@fr , "データセット"@ja , "datasæt"@da ; + rdfs:range dcat:Dataset ; + rdfs:subPropertyOf rdfs:member , dcterms:hasPart ; + skos:altLabel "har datasæt"@da , "datasamling"@da ; + skos:definition "Συνδέει έναν κατάλογο με ένα σύνολο δεδομένων το οποίο ανήκει στον εν λόγω κατάλογο."@el , "カタログの一部であるデータセット。"@ja , "Kolekce dat, která je katalogizována v katalogu."@cs , "Relie un catalogue à un jeu de données faisant partie de ce catalogue."@fr , "Una raccolta di dati che è elencata nel catalogo."@it , "A collection of data that is listed in the catalog."@en , "تربط الفهرس بقائمة بيانات ضمنه"@ar , "En samling af data som er opført i kataloget."@da , "Un conjunto de datos que se lista en el catálogo."@es ; + skos:editorialNote "Status: English Definition text modified by DCAT revision team, Italian, Spanish and Czech translation provided, other translations pending."@en . + +spdx:CreationInfo rdf:type owl:Class ; + rdfs:comment "One instance is required for each SPDX file produced. It provides the necessary information for forward and backward compatibility for processing tools."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:creator + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:dateTimeStamp ; + owl:onProperty spdx:created ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseListVersion + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment + ] ; + vs:term_status "stable"@en . + +spdx:isFsfLibre rdf:type owl:DatatypeProperty ; + rdfs:domain spdx:License ; + rdfs:range xsd:boolean . + +spdx:referenceCategory_other + rdf:type owl:NamedIndividual , spdx:ReferenceCategory ; + vs:term_status "stable"@en . + +spdx:relationshipType_describes + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A."@en ; + vs:term_status "stable" . + +vcard:Video rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Video"@en ; + rdfs:subClassOf vcard:TelephoneType . + +dcterms:format rdf:type rdf:Property ; + rdfs:comment "The file format, physical medium, or dimensions of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Format"@en ; + rdfs:subPropertyOf dc:format ; + dcam:rangeIncludes dcterms:Extent , dcterms:MediaType ; + dcterms:description "Recommended practice is to use a controlled vocabulary where available. For example, for file formats one could use the list of Internet Media Types [[MIME](https://www.iana.org/assignments/media-types/media-types.xhtml)]. Examples of dimensions include size and duration."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:Type rdf:type owl:Class ; + rdfs:comment "Used for type codes. The URI of the type code must be used as the value for Type."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Type"@en . + +locn:addressId rdf:type rdf:Property ; + rdfs:comment "The concept of adding a globally unique identifier for each instance of an address is a crucial part of the INSPIRE data spec. The domain of locn:addressId is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "address ID"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:addressId" ; + vs:term_status "unstable"@en . + +spdx:name rdf:type owl:DatatypeProperty ; + rdfs:comment "Identify name of this SpdxElement."@en ; + rdfs:domain spdx:SpdxElement ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:purpose_library rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package is a software library."@en ; + vs:term_status "stable"@en . + +prov:wasInvalidatedBy + rdf:type owl:ObjectProperty ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasInvalidatedBy" ; + rdfs:range prov:Activity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedInvalidation prov:activity ) ; + owl:propertyChainAxiom ( prov:qualifiedInvalidation prov:activity ) ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:inverse "invalidated" ; + prov:qualifiedForm prov:qualifiedInvalidation , prov:Invalidation . + +time:months rdf:type owl:DatatypeProperty ; + rdfs:comment "length of, or element of the length of, a temporal extent expressed in months"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en meses."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "months duration"@en , "duración en meses"@es ; + rdfs:range xsd:decimal ; + skos:definition "length of, or element of the length of, a temporal extent expressed in months"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en meses."@es . + +dcterms:subject rdf:type rdf:Property ; + rdfs:comment "A topic of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Subject"@en ; + rdfs:subPropertyOf dc:subject ; + dcterms:description "Recommended practice is to refer to the subject with a URI. If this is not possible or feasible, a literal value that identifies the subject may be provided. Both should preferably refer to a subject in a controlled vocabulary."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcterms:SizeOrDuration + rdf:type rdfs:Class ; + rdfs:comment "A dimension or extent, or a time taken to play or execute."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Size or Duration"@en ; + rdfs:subClassOf dcterms:MediaTypeOrExtent ; + dcterms:description "Examples include a number of pages, a specification of length, width, and breadth, or a period in hours, minutes, and seconds."@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +dcterms:LocationPeriodOrJurisdiction + rdf:type rdfs:Class ; + rdfs:comment "A location, period of time, or jurisdiction."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Location, Period, or Jurisdiction"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +spdx:releaseDate rdf:type owl:DatatypeProperty ; + rdfs:comment "This field provides a place for recording the date the package was released."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:dateTime ; + rdfs:subPropertyOf spdx:date ; + vs:term_status "stable"@en . + +time:Monday rdf:type time:DayOfWeek ; + rdfs:label "Monday"@en ; + skos:prefLabel "Monday"@en , "Lunes"@es , "Lundi"@fr , "Montag"@de , "الاثنين"@ar , "月曜日"@ja , "Lunedì"@it , "Понедельник"@ru , "Maandag"@nl , "Poniedziałek"@pl , "星期一"@zh , "Segunda-feira"@pt . + +vcard:postal-code rdf:type owl:DatatypeProperty ; + rdfs:comment "The postal code associated with the address of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "postal code"@en ; + rdfs:range xsd:string . + +spdx:licenseConcluded + rdf:type owl:ObjectProperty , owl:FunctionalProperty ; + rdfs:comment "The licensing that the preparer of this SPDX document has concluded, based on the evidence, actually applies to the SPDX Item.\n\nIf the licenseConcluded field is not present for an SPDX Item, it implies an equivalent meaning to NOASSERTION."@en ; + rdfs:domain spdx:SpdxItem ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( spdx:AnyLicenseInfo + [ rdf:type owl:Restriction ; + owl:hasValue spdx:noassertion ; + owl:onProperty spdx:licenseConcluded + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:none ; + owl:onProperty spdx:licenseConcluded + ] + ) + ] ; + vs:term_status "stable"@en . + +dcat:Relationship rdf:type owl:Class ; + rdfs:comment "Una clase de asociación para adjuntar información adicional a una relación entre recursos DCAT."@es , "Asociační třída pro připojení dodatečných informací ke vztahu mezi zdroji DCAT."@cs , "An association class for attaching additional information to a relationship between DCAT Resources."@en , "En associationsklasse til brug for tilknytning af yderligere information til en relation mellem DCAT-ressourcer."@da , "Una classe di associazione per il collegamento di informazioni aggiuntive a una relazione tra le risorse DCAT."@it ; + rdfs:label "Relazione"@it , "Relation"@da , "Vztah"@cs , "Relación"@es , "Relationship"@en ; + skos:changeNote "Nueva clase añadida en DCAT 2.0."@es , "Nuova classe aggiunta in DCAT 2.0."@it , "Nová třída přidaná ve verzi DCAT 2.0."@cs , "New class added in DCAT 2.0."@en , "Ny klasse i DCAT 2.0."@da ; + skos:definition "An association class for attaching additional information to a relationship between DCAT Resources."@en , "Una classe di associazione per il collegamento di informazioni aggiuntive a una relazione tra le risorse DCAT."@it , "En associationsklasse til brug for tilknytning af yderligere information til en relation mellem DCAT-ressourcer."@da , "Asociační třída pro připojení dodatečných informací ke vztahu mezi zdroji DCAT."@cs , "Una clase de asociación para adjuntar información adicional a una relación entre recursos DCAT."@es ; + skos:scopeNote "Se usa para caracterizar la relación entre conjuntos de datos, y potencialmente otros recursos, donde la naturaleza de la relación se conoce pero no está caracterizada adecuadamente con propiedades del estándar 'Dublin Core' (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) or PROV-O properties (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@es , "Use to characterize a relationship between datasets, and potentially other resources, where the nature of the relationship is known but is not adequately characterized by the standard Dublin Core properties (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) or PROV-O properties (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@en , "Anvendes til at karakterisere en relation mellem datasæt, og potentielt andre ressourcer, hvor relationen er kendt men ikke tilstrækkeligt beskrevet af de standardiserede egenskaber i Dublin Core (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) eller PROV-O-egenskaber (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@da , "Používá se pro charakterizaci vztahu mezi datovými sadami a případně i jinými zdroji, kde druh vztahu je sice znám, ale není přiměřeně charakterizován standardními vlastnostmi slovníku Dublin Core (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:requires, dct:isRequiredBy) či vlastnostmi slovníku PROV-O (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource, prov:alternateOf, prov:specializationOf)."@cs , "Viene utilizzato per caratterizzare la relazione tra insiemi di dati, e potenzialmente altri tipi di risorse, nei casi in cui la natura della relazione è nota ma non adeguatamente caratterizzata dalle proprietà dello standard 'Dublin Core' (dct:hasPart, dct:isPartOf, dct:conformsTo, dct:isFormatOf, dct:hasFormat, dct:isVersionOf, dct:hasVersion, dct:replaces, dct:isReplacedBy, dct:references, dct:isReferencedBy, dct:require, dct:isRequiredBy) o dalle propietà fornite da PROV-O (prov:wasDerivedFrom, prov:wasInfluencedBy, prov:wasQuotedFrom, prov:wasRevisionOf, prov: hadPrimarySource, prov:alternateOf, prov:specializationOf)."@it . + +prov:qualifiedAssociation + rdf:type owl:ObjectProperty ; + rdfs:comment "If this Activity prov:wasAssociatedWith Agent :ag, then it can qualify the Association using prov:qualifiedAssociation [ a prov:Association; prov:agent :ag; :foo :bar ]."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "qualifiedAssociation" ; + rdfs:range prov:Association ; + rdfs:subPropertyOf prov:qualifiedInfluence ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:inverse "qualifiedAssociationOf" ; + prov:sharesDefinitionWith prov:Association ; + prov:unqualifiedForm prov:wasAssociatedWith . + +dcterms:accrualPolicy + rdf:type rdf:Property ; + rdfs:comment "The policy governing the addition of items to a collection."@en ; + rdfs:domain dctype:Collection ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Accrual Policy"@en ; + dcam:rangeIncludes dcterms:Policy ; + dcterms:description "Recommended practice is to use a value from the Collection Description Accrual Policy Vocabulary [[DCMI-ACCRUALPOLICY](https://dublincore.org/groups/collections/accrual-policy/)]."@en ; + dcterms:issued "2005-06-13"^^xsd:date . + +spdx:checksumAlgorithm_md2 + rdf:type owl:NamedIndividual , spdx:ChecksumAlgorithm ; + rdfs:comment "Indicates the algorithm used was MD2" ; + vs:term_status "stable" . + +spdx:externalDocumentId + rdf:type owl:DatatypeProperty ; + rdfs:comment "externalDocumentId is a string containing letters, numbers, ., - and/or + which uniquely identifies an external document within this document."@en ; + rdfs:domain spdx:ExternalDocumentRef ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +vcard:BBS rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "BBS"@en ; + rdfs:subClassOf vcard:TelephoneType ; + owl:deprecated true . + +spdx:sourceInfo rdf:type owl:DatatypeProperty ; + rdfs:comment "Allows the producer(s) of the SPDX document to describe how the package was acquired and/or changed from the original source."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +vcard:Home rdf:type owl:Class ; + rdfs:comment "This implies that the property is related to an individual's personal life"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Home"@en ; + rdfs:subClassOf vcard:Type . + +adms:schemeAgency rdf:type owl:DatatypeProperty ; + rdfs:comment "The name of the agency that issued the identifier."@en , "This property is deprecated because in in HTML specification another URI was used." ; + rdfs:domain adms:Identifier ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "schema agency"@en ; + rdfs:range rdfs:Literal ; + dcterms:isReplacedBy adms:schemaAgency ; + owl:deprecated "true" ; + owl:equivalentProperty adms:schemaAgency . + +spdx:relationshipType_hasPrerequisite + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B."@en ; + vs:term_status "stable"@en . + +<http://data.europa.eu/r5r#CategoryScheme_Shape> + rdf:type sh:NodeShape ; + sh:name "Category Scheme"@en ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation + ] ; + sh:targetClass skos:ConceptScheme . + +dcterms:Period rdf:type rdfs:Datatype ; + rdfs:comment "The set of time intervals defined by their limits according to the DCMI Period Encoding Scheme."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "DCMI Period"@en ; + rdfs:seeAlso <https://www.dublincore.org/specifications/dublin-core/dcmi-period/> ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:hasHonorificPrefix + rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the honorific prefix data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has honorific prefix"@en . + +dcterms:MESH rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of labeled concepts specified by the Medical Subject Headings."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "MeSH"@en ; + rdfs:seeAlso <http://www.nlm.nih.gov/mesh/meshhome.html> ; + dcterms:issued "2000-07-11"^^xsd:date . + +prov:Attribution rdf:type owl:Class ; + rdfs:comment "An instance of prov:Attribution provides additional descriptions about the binary prov:wasAttributedTo relation from an prov:Entity to some prov:Agent that had some responsible for it. For example, :cake prov:wasAttributedTo :baker; prov:qualifiedAttribution [ a prov:Attribution; prov:entity :baker; :foo :bar ]."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Attribution" ; + rdfs:subClassOf prov:AgentInfluence ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "Attribution is the ascribing of an entity to an agent.\n\nWhen an entity e is attributed to agent ag, entity e was generated by some unspecified activity that in turn was associated to agent ag. Thus, this relation is useful when the activity is not known, or irrelevant."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribution"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-attribution"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasAttributedTo . + +vcard:hasStreetAddress + rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the street address data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has street address"@en . + +time:numericDuration rdf:type owl:DatatypeProperty ; + rdfs:comment "Value of a temporal extent expressed as a decimal number scaled by a temporal unit"@en , "Valor de una extensión temporal expresada como un número decimal escalado por una unidad de tiempo."@es ; + rdfs:domain time:Duration ; + rdfs:label "Numeric value of temporal duration"@en , "valor numérico de duración temporal"@es ; + rdfs:range xsd:decimal ; + skos:definition "Value of a temporal extent expressed as a decimal number scaled by a temporal unit"@en , "Valor de una extensión temporal expresada como un número decimal escalado por una unidad de tiempo."@es . + +prov:hadUsage rdf:type owl:ObjectProperty ; + rdfs:comment "The _optional_ Usage involved in an Entity's Derivation."@en ; + rdfs:domain prov:Derivation ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadUsage" ; + rdfs:range prov:Usage ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:inverse "wasUsedInDerivation" ; + prov:sharesDefinitionWith prov:Usage . + +vcard:hasPhoto rdf:type owl:ObjectProperty ; + rdfs:comment "To specify an image or photograph information that annotates some aspect of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has photo"@en ; + owl:equivalentProperty vcard:photo . + +adms:prev rdf:type owl:ObjectProperty ; + rdfs:comment "A link to the previous version of the Asset."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "prev"@en ; + rdfs:range rdfs:Resource ; + rdfs:subPropertyOf <http://www.w3.org/1999/xhtml/vocab#prev> . + +spdx:fileContributor rdf:type owl:DatatypeProperty ; + rdfs:comment "This field provides a place for the SPDX file creator to record file contributors. Contributors could include names of copyright holders and/or authors who may not be copyright holders yet contributed to the file content."@en ; + rdfs:domain spdx:File ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:fileType_source rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "Indicates the file is a source code file."@en ; + vs:term_status "stable"@en . + +time:TimePosition rdf:type owl:Class ; + rdfs:comment "A temporal position described using either a (nominal) value from an ordinal reference system, or a (numeric) value in a temporal coordinate system. "@en , "Una posición temporal descrita utilizando bien un valor (nominal) de un sistema de referencia ordinal, o un valor (numérico) en un sistema de coordenadas temporales."@es ; + rdfs:label "Time position"@en , "posición de tiempo"@es ; + rdfs:subClassOf time:TemporalPosition ; + rdfs:subClassOf [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:numericPosition + ] + [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:nominalPosition + ] + ) + ] ; + skos:definition "A temporal position described using either a (nominal) value from an ordinal reference system, or a (numeric) value in a temporal coordinate system. "@en , "Una posición temporal descrita utilizando bien un valor (nominal) de un sistema de referencia ordinal, o un valor (numérico) en un sistema de coordenadas temporales."@es . + +time:intervalMetBy rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 es 'intervalo encontrado por' otro intervalo propio T2, entonces el principio de T1 coincide con el final de T2."@es , "If a proper interval T1 is intervalMetBy another proper interval T2, then the beginning of T1 is coincident with the end of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "intervalo encontrado por"@es , "interval met by"@en ; + rdfs:range time:ProperInterval ; + owl:inverseOf time:intervalMeets ; + skos:definition "If a proper interval T1 is intervalMetBy another proper interval T2, then the beginning of T1 is coincident with the end of T2."@en , "Si un intervalo propio T1 es 'intervalo encontrado por' otro intervalo propio T2, entonces el principio de T1 coincide con el final de T2."@es . + +vcard:hasCategory rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the category data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has category"@en . + +time:inXSDgYear rdf:type owl:DatatypeProperty ; + rdfs:comment "Position of an instant, expressed using xsd:gYear"@en , "Posición de un instante, expresado utilizando xsd:gYear."@es ; + rdfs:domain time:Instant ; + rdfs:label "in XSD g-Year"@en , "en año gregoriano XSD"@es ; + rdfs:range xsd:gYear ; + skos:definition "Position of an instant, expressed using xsd:gYear"@en , "Posición de un instante, expresado utilizando xsd:gYear."@es . + +<http://data.europa.eu/r5r#Distribution_Shape> + rdf:type sh:NodeShape ; + sh:name "Distribution"@en ; + sh:property [ sh:maxCount 1 ; + sh:path adms:status ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:license ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcatap:availability ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path odrl:hasPolicy ; + sh:severity sh:Violation + ] ; + sh:property [ sh:datatype xsd:decimal ; + sh:maxCount 1 ; + sh:path dcat:spatialResolutionInMeters ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:rights ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:modified ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:language ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path foaf:page ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:format ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:accessURL ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:issued ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcat:packageFormat ; + sh:severity sh:Violation + ] ; + sh:property [ sh:datatype xsd:decimal ; + sh:maxCount 1 ; + sh:path dcat:byteSize ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcat:mediaType ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:downloadURL ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path spdx:checksum ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcat:compressFormat ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcterms:description ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:conformsTo ; + sh:severity sh:Violation + ] ; + sh:property [ sh:datatype xsd:duration ; + sh:maxCount 1 ; + sh:path dcat:temporalResolution ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:accessService ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Distribution . + +<http://data.europa.eu/r5r#DataService_Shape> + rdf:type sh:NodeShape ; + sh:name "Data Service"@en ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:accessRights ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:endpointDescription ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:servesDataset ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcterms:description ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:endpointURL ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:license ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:DataService . + +vcard:VCard rdf:type owl:Class ; + rdfs:comment "The vCard class is equivalent to the new Kind class, which is the parent for the four explicit types of vCards (Individual, Organization, Location, Group)"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "VCard"@en ; + owl:equivalentClass vcard:Kind . + +prov:InstantaneousEvent + rdf:type owl:Class ; + rdfs:comment "An instantaneous event, or event for short, happens in the world and marks a change in the world, in its activities and in its entities. The term 'event' is commonly used in process algebra with a similar meaning. Events represent communications or interactions; they are assumed to be atomic and instantaneous."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "InstantaneousEvent" ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#dfn-event"^^xsd:anyURI ; + prov:definition "The PROV data model is implicitly based on a notion of instantaneous events (or just events), that mark transitions in the world. Events include generation, usage, or invalidation of entities, as well as starting or ending of activities. This notion of event is not first-class in the data model, but it is useful for explaining its other concepts and its semantics."@en . + +prov:startedAtTime rdf:type owl:DatatypeProperty ; + rdfs:comment "The time at which an activity started. See also prov:endedAtTime."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "startedAtTime" ; + rdfs:range xsd:dateTime ; + prov:category "starting-point" ; + prov:component "entities-activities" ; + prov:editorialNote "It is the intent that the property chain holds: (prov:qualifiedStart o prov:atTime) rdfs:subPropertyOf prov:startedAtTime."@en ; + prov:qualifiedForm prov:Start , prov:atTime . + +dcterms:isFormatOf rdf:type rdf:Property ; + rdfs:comment "A pre-existing related resource that is substantially the same as the described resource, but in another format."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Is Format Of"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Has Format."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:referenceLocator + rdf:type owl:DatatypeProperty ; + rdfs:comment "The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location. The format of the locator is subject to constraints defined by the <type>."@en ; + rdfs:domain spdx:ExternalRef ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +prov:Organization rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Organization" ; + rdfs:subClassOf prov:Agent ; + prov:category "expanded" ; + prov:component "agents-responsibility" ; + prov:definition "An organization is a social or legal institution such as a company, society, etc." ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-types"^^xsd:anyURI . + +vcard:hasCountryName rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the country name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has country name"@en . + +spdx:externalDocumentRef + rdf:type owl:ObjectProperty ; + rdfs:comment "Identify any external SPDX documents referenced within this SPDX document."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range spdx:ExternalDocumentRef ; + vs:term_status "stable"@en . + +dcterms:Jurisdiction rdf:type rdfs:Class ; + rdfs:comment "The extent or range of judicial, law enforcement, or other authority."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Jurisdiction"@en ; + rdfs:subClassOf dcterms:LocationPeriodOrJurisdiction ; + dcterms:issued "2008-01-14"^^xsd:date . + +vcard:ISDN rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "ISDN"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +<http://www.w3.org/ns/adms> + rdf:type owl:Ontology ; + rdfs:label "adms"@en , "adms"@nl ; + dcterms:issued "2023-04-05" ; + dcterms:license <https://creativecommons.org/licenses/by/4.0/> ; + dcterms:mediator [ foaf:homepage <https://semic.eu> ; + foaf:name "Semantic Interoperability Community (SEMIC)" + ] ; + rec:editor [ rdf:type foaf:Person ; + foaf:firstName "Bert" ; + foaf:lastName "Van Nuffelen" ; + foaf:mbox <mailto:bert.van.nuffelen@tenforce.com> ; + j.0:affiliation [ foaf:name "TenForce" ] + ] ; + rec:editor [ rdf:type foaf:Person ; + foaf:firstName "Pavlina" ; + foaf:lastName "Fragkou" ; + j.0:affiliation [ foaf:name "SEMIC EU" ] + ] ; + rec:editor [ rdf:type foaf:Person ; + foaf:firstName "Natasa" ; + foaf:lastName "Sofou" + ] ; + rec:editor [ rdf:type foaf:Person ; + foaf:firstName "Makx" ; + foaf:lastName "Dekkers" + ] ; + foaf:maker [ rdf:type foaf:Person ; + foaf:firstName "Pavlina" ; + foaf:lastName "Fragkou" ; + j.0:affiliation [ foaf:name "SEMIC EU" ] + ] . + +time:TemporalDuration + rdf:type owl:Class ; + rdfs:comment "Time extent; duration of a time interval separate from its particular start position"@en , "Extensión de tiempo; duración de un intervalo de tiempo independiente de su posición de inicio particular."@es ; + rdfs:label "Temporal duration"@en , "duración temporal"@es ; + skos:definition "Time extent; duration of a time interval separate from its particular start position"@en , "Extensión de tiempo; duración de un intervalo de tiempo independiente de su posición de inicio particular."@es . + +vcard:Gender rdf:type owl:Class ; + rdfs:comment "Used for gender codes. The URI of the gender code must be used as the value for Gender."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Gender"@en . + +adms:representationTechnique + rdf:type owl:ObjectProperty ; + rdfs:comment "More information about the format in which an Asset Distribution is released. This is different from the file format as, for example, a ZIP file (file format) could contain an XML schema (representation technique)."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "representation technique"@en ; + rdfs:range skos:Concept . + +vcard:Coworker rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Coworker"@en ; + rdfs:subClassOf vcard:RelatedType . + +locn:geometry rdf:type rdf:Property ; + rdfs:comment "Associates any resource with the corresponding geometry."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "geometry"@en ; + rdfs:range locn:Geometry ; + dcterms:identifier "locn:geometry" ; + vann:example "\nThe following are examples of equivalent statements using different geometry encodings. In the examples, prefix gsp is used for namespace URI http://www.opengis.net/ont/geosparql#, whereas prefix sf is used for namespace URI http://www.opengis.net/ont/sf#.\n- WKT (GeoSPARQL)\n:Resource locn:geometry\n \"<http://www.opengis.net/def/crs/OGC/1.3/CRS84> Point(-0.001475 51.477811)\"^^gsp:wktLiteral .\n- GML\n:Resource locn:geometry\n \"<gml:Point srsName='http://www.opengis.net/def/crs/OGC/1.3/CRS84'>\n <gml:coordinates>-0.001475, 51.477811</gml:coordinates></gml:Point>\"^^gsp:gmlLiteral .\n- RDF+WKT (GeoSPARQL)\n:Resource locn:geometry\n [ a sf:Point; gsp:asWKT \"<http://www.opengis.net/def/crs/OGC/1.3/CRS84> Point(-0.001475 51.477811)\"^^gsp:wktLiteral ] .\n- RDF+GML (GeoSPARQL)\n:Resource locn:geometry\n [ a sf:Point; gsp:asGML\n \"<gml:Point srsName='http://www.opengis.net/def/crs/OGC/1.3/CRS84'>\n <gml:coordinates>-0.001475, 51.477811</gml:coordinates></gml:Point>\"^^gsp:gmlLiteral ] .\n- RDF (WGS84 lat/long)\n:Resource locn:geometry [ a geo:Point; geo:lat \"51.477811\"; geo:long \"-0.001475\" ] .\n- RDF (schema.org)\n:Resource locn:geometry [ a schema:GeoCoordinates; schema:latitude \"51.477811\"; schema:longitude \"-0.001475\" ] .\n- geo URI\n:Resource locn:geometry <geo:51.477811,-0.001475;u=0;crs=wgs84> .\n- GeoHash URI\n:Resource locn:geometry <http://geohash.org/gcpuzgnzvxkp> .\n "@en ; + vann:usageNote "\nDepending on how a geometry is encoded, the range of this property may be one of the following:\n- a literal (e.g., WKT - string literal -, GML, KML - XML literal)\n- a geometry class, as those defined in the OGC's GeoSPARQL specification, in the W3C's Basic Geo (WGS84 lat/long) vocabulary, and at schema.org;\n- geocoded URIs, as geo or GeoHash URIs, treated as URI references.\nFor interoperability reasons, it is recommended using one of the following:\n- Any geometry:\n - WKT, GML, and RDF+WKT/GML, as per the GeoSPARQL specification.\n - KML (Keyhole Markup Language) - note that KML supports the following geometries only: point, line string, linear ring, and polygon.\n - RDF as per the schema.org vocabulary (see classes schema:GeoCoordinates and schema:GeoShape).\n- Points: one of the above, or:\n - RDF as per the W3C Basic Geo (WGS84 lat/long) vocabulary.\n - GeoHash URIs.\n - geo URIs.\n "@en ; + vs:term_status "testing"@en ; + wdsr:describedby <https://joinup.ec.europa.eu/node/55858> . + +time:intervalStarts rdf:type owl:ObjectProperty ; + rdfs:comment "Si un intervalo propio T1 empieza otro intervalo propio T2, entonces del principio de T1 con el principio de T2, y el final de T1 es anterior al final de T2."@es , "If a proper interval T1 is intervalStarts another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is before the end of T2."@en ; + rdfs:domain time:ProperInterval ; + rdfs:label "interval starts"@en , "intervalo empieza"@es ; + rdfs:range time:ProperInterval ; + rdfs:subPropertyOf time:intervalIn ; + owl:inverseOf time:intervalStartedBy ; + skos:definition "If a proper interval T1 is intervalStarts another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is before the end of T2."@en , "Si un intervalo propio T1 empieza otro intervalo propio T2, entonces del principio de T1 con el final de T2, y el final de T1 es anterior al final de T2."@es . + +vcard:Pager rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Pager"@en ; + rdfs:subClassOf vcard:TelephoneType . + +<http://data.europa.eu/r5r#PeriodOfTime_Shape> + rdf:type sh:NodeShape ; + sh:name "PeriodOfTime"@en ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcat:startDate ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path time:hasEnd ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path time:hasBeginning ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcat:endDate ; + sh:severity sh:Violation + ] ; + sh:targetClass dcterms:PeriodOfTime . + +spdx:relationshipType_devToolOf + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A is a development dependency of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +vcard:hasLocality rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the locality data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has locality"@en . + +<http://www.w3.org/2004/02/skos/core> + rdf:type owl:Ontology ; + rdfs:seeAlso <http://www.w3.org/TR/skos-reference/> ; + dcterms:contributor "Dave Beckett" , "Nikki Rogers" , "Participants in W3C's Semantic Web Deployment Working Group." ; + dcterms:creator "Alistair Miles" , "Sean Bechhofer" ; + dcterms:description "An RDF vocabulary for describing the basic structure and content of concept schemes such as thesauri, classification schemes, subject heading lists, taxonomies, 'folksonomies', other types of controlled vocabulary, and also concept schemes embedded in glossaries and terminologies."@en ; + dcterms:title "SKOS Vocabulary"@en . + +dcterms:Point rdf:type rdfs:Datatype ; + rdfs:comment "The set of points in space defined by their geographic coordinates according to the DCMI Point Encoding Scheme."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "DCMI Point"@en ; + rdfs:seeAlso <https://www.dublincore.org/specifications/dublin-core/dcmi-point/> ; + dcterms:issued "2000-07-11"^^xsd:date . + +vcard:photo rdf:type owl:ObjectProperty ; + rdfs:comment "This object property has been mapped"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "photo"@en ; + owl:equivalentProperty vcard:hasPhoto . + +<http://www.w3.org/ns/locn.html> + rdfs:label "HTML version of the ISA Programme Location Core Vocabulary"@en ; + dcat:mediaType "text/html"^^dcterms:IMT . + +vcard:additional-name + rdf:type owl:DatatypeProperty ; + rdfs:comment "The additional name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "additional name"@en ; + rdfs:range xsd:string . + +spdx:licenseInfoInFile + rdf:type owl:ObjectProperty ; + rdfs:comment "Licensing information that was discovered directly in the subject file. This is also considered a declared license for the file.\n\nIf the licenseInfoInFile field is not present for a file, it implies an equivalent meaning to NOASSERTION."@en ; + rdfs:domain spdx:File ; + rdfs:range [ rdf:type owl:Class ; + owl:unionOf ( spdx:AnyLicenseInfo + [ rdf:type owl:Restriction ; + owl:hasValue spdx:noassertion ; + owl:onProperty spdx:licenseInfoInFile + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:none ; + owl:onProperty spdx:licenseInfoInFile + ] + ) + ] ; + rdfs:subPropertyOf spdx:licenseInfoFromFiles ; + vs:term_status "stable" . + +vcard:Friend rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Friend"@en ; + rdfs:subClassOf vcard:RelatedType . + +prov:hadPlan rdf:type owl:ObjectProperty ; + rdfs:comment "The _optional_ Plan adopted by an Agent in Association with some Activity. Plan specifications are out of the scope of this specification."@en ; + rdfs:domain prov:Association ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "hadPlan" ; + rdfs:range prov:Plan ; + prov:category "qualified" ; + prov:component "agents-responsibility" ; + prov:inverse "wasPlanOf" ; + prov:sharesDefinitionWith prov:Plan . + +spdx:LicenseException + rdf:type owl:Class ; + rdfs:comment "An exception to a license."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:anyURI ; + owl:onProperty rdfs:seeAlso + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:name ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:example + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseExceptionId ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseExceptionTemplate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:licenseExceptionText ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable"@en . + +<https://joinup.ec.europa.eu/category/licence/isa-open-metadata-licence-v11> + cc:attributionName "European Commission"@en ; + cc:attributionURL <http://ec.europa.eu/> ; + dcterms:title "ISA Open Metadata Licence v1.1" . + +time:inside rdf:type owl:ObjectProperty ; + rdfs:comment "An instant that falls inside the interval. It is not intended to include beginnings and ends of intervals."@en , "Un instante que cae dentro del intervalo. Se asume que no es ni el principio ni el final de ningún intervalo."@es ; + rdfs:domain time:Interval ; + rdfs:label "has time instant inside"@en , "tiene instante de tiempo dentro"@es ; + rdfs:range time:Instant ; + skos:definition "An instant that falls inside the interval. It is not intended to include beginnings and ends of intervals."@en , "Un instante que cae dentro del intervalo. Se asume que no es ni el principio ni el final de ningún intervalo."@es . + +prov:atTime rdf:type owl:DatatypeProperty ; + rdfs:comment "The time at which an InstantaneousEvent occurred, in the form of xsd:dateTime."@en ; + rdfs:domain prov:InstantaneousEvent ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "atTime" ; + rdfs:range xsd:dateTime ; + prov:category "qualified" ; + prov:component "entities-activities" ; + prov:sharesDefinitionWith prov:InstantaneousEvent ; + prov:unqualifiedForm prov:invalidatedAtTime , prov:startedAtTime , prov:generatedAtTime , prov:endedAtTime . + +prov:actedOnBehalfOf rdf:type owl:ObjectProperty ; + rdfs:comment "An object property to express the accountability of an agent towards another agent. The subordinate agent acted on behalf of the responsible agent in an actual activity. "@en ; + rdfs:domain prov:Agent ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "actedOnBehalfOf" ; + rdfs:range prov:Agent ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedDelegation prov:agent ) ; + owl:propertyChainAxiom ( prov:qualifiedDelegation prov:agent ) ; + prov:category "starting-point" ; + prov:component "agents-responsibility" ; + prov:inverse "hadDelegate" ; + prov:qualifiedForm prov:qualifiedDelegation , prov:Delegation . + +<http://www.w3.org/2009/pointers#LineCharPointer> + rdf:type owl:Class ; + rdfs:subClassOf <http://www.w3.org/2009/pointers#OffsetPointer> ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:positiveInteger ; + owl:onProperty <http://www.w3.org/2009/pointers#lineNumber> ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable" . + +dcat:startDate rdf:type rdf:Property , owl:DatatypeProperty ; + rdfs:domain dcterms:PeriodOfTime ; + rdfs:label "data di inizio"@it , "datum začátku"@cs , "start date"@en , "startdato"@da ; + rdfs:range rdfs:Literal ; + skos:altLabel "starttidspunkt"@da ; + skos:changeNote "Nová vlastnost přidaná ve verzi DCAT 2.0."@cs , "New property added in DCAT 2.0."@en , "Ny egenskab tilføjet i DCAT 2.0."@da , "Nuova proprietà aggiunta in DCAT 2.0."@it , "Nueva propiedad agregada en DCAT 2.0."@es ; + skos:definition "El comienzo del período"@es , "Začátek doby trvání"@cs , "The start of the period"@en , "Start på perioden."@da , "L'inizio del periodo"@it ; + skos:scopeNote "Rækkeviden for denne egenskab er bevidst generisk defineret med det formål at tillade forskellige niveauer af tidslig præcision ifm. angivelse af startdatoen for en periode. Den kan eksempelvis udtrykkes som en dato (xsd:date), en dato og et tidspunkt (xsd:dateTime), eller et årstal (xsd:gYear)."@da , "The range of this property is intentionally generic, with the purpose of allowing different level of temporal precision for specifying the start of a period. E.g., it can be expressed with a date (xsd:date), a date and time (xsd:dateTime), or a year (xsd:gYear)."@en , "Obor hodnot této vlastnosti je úmyslně obecný, aby umožnil různé úrovně časového rozlišení pro specifikaci začátku doby trvání. Ten může být kupříkladu vyjádřen datumem (xsd:date), datumem a časem (xsd:dateTime) či rokem (xsd:gYear)."@cs , "Il range di questa proprietà è volutamente generico, con lo scopo di consentire diversi livelli di precisione temporale per specificare l'inizio di un periodo. Ad esempio, può essere espresso con una data (xsd:date), una data e un'ora (xsd:dateTime), o un anno (xsd:gYear)."@it , "El rango de esta propiedad es intencionalmente genérico con el propósito de permitir distintos niveles de precisión temporal para especificar el comienzo de un período. Por ejemplo, puede expresarse como una fecha (xsd:date), una fecha y un tiempo (xsd:dateTime), o un año (xsd:gYear)."@es . + +spdx:checksum rdf:type owl:ObjectProperty ; + rdfs:comment "The checksum property provides a mechanism that can be used to verify that the contents of a File or Package have not changed."@en ; + rdfs:domain [ rdf:type owl:Class ; + owl:unionOf ( spdx:File spdx:Package ) + ] ; + rdfs:range spdx:Checksum ; + vs:term_status "stable"@en . + +<http://www.w3.org/2009/pointers#SinglePointer> + rdf:type owl:Class ; + rdfs:subClassOf <http://www.w3.org/2009/pointers#Pointer> ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:File ; + owl:onProperty <http://www.w3.org/2009/pointers#reference> ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + vs:term_status "stable" . + +dcterms:requires rdf:type rdf:Property ; + rdfs:comment "A related resource that is required by the described resource to support its function, delivery, or coherence."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Requires"@en ; + rdfs:subPropertyOf dc:relation , dcterms:relation ; + dcterms:description "This property is intended to be used with non-literal values. This property is an inverse property of Is Required By."@en ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:packageVerificationCodeExcludedFile + rdf:type owl:DatatypeProperty ; + rdfs:comment "A file that was excluded when calculating the package verification code. This is usually a file containing SPDX data regarding the package. If a package contains more than one SPDX file all SPDX files must be excluded from the package verification code. If this is not done it would be impossible to correctly calculate the verification codes in both files."@en ; + rdfs:domain spdx:PackageVerificationCode ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +skos:closeMatch rdf:type owl:ObjectProperty , owl:SymmetricProperty , rdf:Property ; + rdfs:isDefinedBy <http://www.w3.org/2004/02/skos/core> ; + rdfs:label "has close match"@en ; + rdfs:subPropertyOf skos:mappingRelation ; + skos:definition "skos:closeMatch is used to link two concepts that are sufficiently similar that they can be used interchangeably in some information retrieval applications. In order to avoid the possibility of \"compound errors\" when combining mappings across more than two concept schemes, skos:closeMatch is not declared to be a transitive property."@en . + +spdx:fileType_archive + rdf:type owl:NamedIndividual , spdx:FileType ; + rdfs:comment "Indicates the file is an archive file."@en ; + vs:term_status "stable"@en . + +locn:poBox rdf:type rdf:Property ; + rdfs:comment "The Post Office Box number. The domain of locn:poBox is locn:Address."@en ; + rdfs:domain locn:Address ; + rdfs:isDefinedBy <http://www.w3.org/ns/locn> ; + rdfs:label "PO box"@en ; + rdfs:range rdfs:Literal ; + dcterms:identifier "locn:poBox" ; + vs:term_status "testing"@en . + +dcterms:Frequency rdf:type rdfs:Class ; + rdfs:comment "A rate at which something recurs."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Frequency"@en ; + dcterms:issued "2008-01-14"^^xsd:date . + +<http://data.europa.eu/r5r#Catalog_Shape> + rdf:type sh:NodeShape ; + sh:name "Catalog"@en ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:description ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:language ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:hasPart ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:isPartOf ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:modified ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:license ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:minCount 1 ; + sh:path dcterms:publisher ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path foaf:homepage ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:issued ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:rights ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:record ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:spatial ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:themeTaxonomy ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:service ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:catalog ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:dataset ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:creator ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Catalog . + +adms:next rdf:type owl:ObjectProperty ; + rdfs:comment "A link to the next version of the Asset."@en ; + rdfs:domain rdfs:Resource ; + rdfs:isDefinedBy <http://www.w3.org/ns/adms> ; + rdfs:label "next"@en ; + rdfs:range rdfs:Resource ; + rdfs:subPropertyOf <http://www.w3.org/1999/xhtml/vocab#next> . + +spdx:referencesFile rdf:type owl:ObjectProperty ; + rdfs:comment "Indicates that a particular file belongs as part of the set of analyzed files in the SpdxDocument."@en , "This property has been replaced by a relationship between the SPDX document and file with a \"contains\" relationship type."@en ; + rdfs:domain spdx:SpdxDocument ; + rdfs:range spdx:File ; + owl:deprecated true ; + vs:term_status "deprecated"@en . + +owl:versionInfo rdf:type owl:AnnotationProperty . + +[ rdf:type owl:Axiom ; + rdfs:comment "Quotation is a particular case of derivation (see http://www.w3.org/TR/prov-dm/#term-quotation) in which an entity is derived from an original entity by copying, or \"quoting\", some or all of it. " ; + owl:annotatedProperty rdfs:subPropertyOf ; + owl:annotatedSource prov:wasQuotedFrom ; + owl:annotatedTarget prov:wasDerivedFrom +] . + +vcard:honorific-prefix + rdf:type owl:DatatypeProperty ; + rdfs:comment "The honorific prefix of the name associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "honorific prefix"@en ; + rdfs:range xsd:string . + +time:MonthOfYear rdf:type owl:Class ; + rdfs:comment "El mes del año."@es , "The month of the year"@en ; + rdfs:label "Month of year"@en , "mes del año"@es ; + rdfs:subClassOf time:DateTimeDescription ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty time:second + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty time:hour + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty time:month + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:hasValue time:unitMonth ; + owl:onProperty time:unitType + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty time:week + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty time:year + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty time:day + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:cardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty time:minute + ] ; + skos:definition "The month of the year"@en , "El mes del año."@es ; + skos:editorialNote "Característica en riesgo - añadida en la revisión de 2017, y no utilizada todavía de forma amplia."@es , "Feature at risk - added in 2017 revision, and not yet widely used. "@en ; + skos:note "Membership of the class :MonthOfYear is open, to allow for alternative annual calendars and different month names."@en , "La pertenencia a la clase 'mes del año' está abierta, a permitir calendarios anuales alternativos y diferentes nombres de meses."@es . + +vcard:Emergency rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Emergency"@en ; + rdfs:subClassOf vcard:RelatedType . + +vcard:hasHonorificSuffix + rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the honorific suffix data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has honorific suffix"@en . + +dcat:Resource rdf:type owl:Class ; + rdfs:comment "Ressource udgivet eller udvalgt og arrangeret af en enkelt aktør."@da , "Recurso publicado o curado por un agente único."@es , "Risorsa pubblicata o curata da un singolo agente."@it , "Resource published or curated by a single agent."@en , "Zdroj publikovaný či řízený jediným činitelem."@cs ; + rdfs:label "Katalogizovaný zdroj"@cs , "Recurso catalogado"@es , "Risorsa catalogata"@it , "Katalogiseret ressource"@da , "Catalogued resource"@en ; + skos:changeNote "New class added in DCAT 2.0."@en , "Nuova classe aggiunta in DCAT 2.0."@it , "Ny klasse i DCAT 2.0."@da , "Nová třída přidaná ve verzi DCAT 2.0."@cs , "Nueva clase agregada en DCAT 2.0."@es ; + skos:definition "Resource published or curated by a single agent."@en , "Risorsa pubblicata o curata da un singolo agente."@it , "Ressource udgivet eller udvalgt og arrangeret af en enkelt aktør."@da , "Recurso publicado o curado por un agente único."@es , "Zdroj publikovaný či řízený jediným činitelem."@cs ; + skos:scopeNote "dcat:Resource es un punto de extensión que permite la definición de cualquier tipo de catálogo. Se pueden definir subclases adicionales en perfil de DCAT o una aplicación para catálogos de otro tipo de recursos."@es , "dcat:Resource je bod pro rozšíření umožňující definici různých druhů katalogů. Další podtřídy lze definovat v profilech DCAT či aplikacích pro katalogy zdrojů jiných druhů."@cs , "Třída všech katalogizovaných zdrojů, nadtřída dcat:Dataset, dcat:DataService, dcat:Catalog a všech ostatních členů dcat:Catalog. Tato třída nese vlastnosti společné všem katalogizovaným zdrojům včetně datových sad a datových služeb. Je silně doporučeno používat specifičtější podtřídy, pokud je to možné. Při popisu zdroje, který není ani dcat:Dataset, ani dcat:DataService se doporučuje vytvořit odpovídající podtřídu dcat:Resrouce a nebo použít dcat:Resource s vlastností dct:type pro určení konkrétního typu."@cs , "Klassen for alle katalogiserede ressourcer, den overordnede klasse for dcat:Dataset, dcat:DataService, dcat:Catalog og enhvert medlem af et dcat:Catalog. Denne klasse bærer egenskaber der gælder alle katalogiserede ressourcer, herunder dataset og datatjenester. Det anbefales kraftigt at mere specifikke subklasser oprettes. Når der beskrives ressourcer der ikke er dcat:Dataset eller dcat:DataService, anbefales det at oprette passende subklasser af dcat:Resource eller at dcat:Resource anvendes sammen med egenskaben dct:type til opmærkning med en specifik typeangivelse."@da , "dcat:Resource è un punto di estensione che consente la definizione di qualsiasi tipo di catalogo. Sottoclassi aggiuntive possono essere definite in un profilo DCAT o in un'applicazione per cataloghi di altri tipi di risorse."@it , "La classe di tutte le risorse catalogate, la Superclasse di dcat:Dataset, dcat:DataService, dcat:Catalog e qualsiasi altro membro di dcat:Catalog. Questa classe porta proprietà comuni a tutte le risorse catalogate, inclusi set di dati e servizi dati. Si raccomanda vivamente di utilizzare una sottoclasse più specifica. Quando si descrive una risorsa che non è un dcat:Dataset o dcat:DataService, si raccomanda di creare una sottoclasse di dcat:Resource appropriata, o utilizzare dcat:Resource con la proprietà dct:type per indicare il tipo specifico."@it , "The class of all catalogued resources, the Superclass of dcat:Dataset, dcat:DataService, dcat:Catalog and any other member of a dcat:Catalog. This class carries properties common to all catalogued resources, including datasets and data services. It is strongly recommended to use a more specific sub-class. When describing a resource which is not a dcat:Dataset or dcat:DataService, it is recommended to create a suitable sub-class of dcat:Resource, or use dcat:Resource with the dct:type property to indicate the specific type."@en , "La clase de todos los recursos catalogados, la superclase de dcat:Dataset, dcat:DataService, dcat:Catalog y cualquier otro miembro de un dcat:Catalog. Esta clase tiene propiedades comunes a todos los recursos catalogados, incluyendo conjuntos de datos y servicios de datos. Se recomienda fuertemente que se use una clase más específica. Cuando se describe un recurso que no es un dcat:Dataset o dcat:DataService, se recomienda crear una sub-clase apropiada de dcat:Resource, o usar dcat:Resource con la propiedad dct:type to indicar el tipo específico."@es , "dcat:Resource is an extension point that enables the definition of any kind of catalog. Additional subclasses may be defined in a DCAT profile or application for catalogs of other kinds of resources."@en , "dcat:Resource er et udvidelsespunkt der tillader oprettelsen af enhver type af kataloger. Yderligere subklasser kan defineres i en DCAT-profil eller i en applikation til kataloger med andre typer af ressourcer."@da . + +prov:EmptyCollection rdf:type owl:Class , owl:NamedIndividual ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "EmptyCollection"@en ; + rdfs:subClassOf prov:Collection ; + prov:category "expanded" ; + prov:component "collections" ; + prov:definition "An empty collection is a collection without members."@en . + +spdx:summary rdf:type owl:DatatypeProperty ; + rdfs:comment "Provides a short description of the package."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:downloadLocation + rdf:type owl:DatatypeProperty ; + rdfs:comment "The URI at which this package is available for download. Private (i.e., not publicly reachable) URIs are acceptable as values of this property. The values http://spdx.org/rdf/terms#none and http://spdx.org/rdf/terms#noassertion may be used to specify that the package is not downloadable or that no attempt was made to determine its download location, respectively."@en ; + rdfs:domain spdx:Package ; + rdfs:range xsd:anyURI ; + vs:term_status "stable"@en . + +spdx:purpose_archive rdf:type owl:NamedIndividual , spdx:Purpose ; + rdfs:comment "The package refers to an archived collection of files (.tar, .zip, etc)."@en ; + vs:term_status "stable"@en . + +prov:wasStartedBy rdf:type owl:ObjectProperty ; + rdfs:comment "Start is when an activity is deemed to have started. A start may refer to an entity, known as trigger, that initiated the activity."@en ; + rdfs:domain prov:Activity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasStartedBy" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedStart prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedStart prov:entity ) ; + prov:category "expanded" ; + prov:component "entities-activities" ; + prov:inverse "started" ; + prov:qualifiedForm prov:qualifiedStart , prov:Start . + +prov:wasDerivedFrom rdf:type owl:ObjectProperty ; + rdfs:comment "The more specific subproperties of prov:wasDerivedFrom (i.e., prov:wasQuotedFrom, prov:wasRevisionOf, prov:hadPrimarySource) should be used when applicable."@en ; + rdfs:domain prov:Entity ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "wasDerivedFrom" ; + rdfs:range prov:Entity ; + rdfs:subPropertyOf prov:wasInfluencedBy ; + owl:propertyChainAxiom ( prov:qualifiedDerivation prov:entity ) ; + owl:propertyChainAxiom ( prov:qualifiedDerivation prov:entity ) ; + prov:category "starting-point" ; + prov:component "derivations" ; + prov:definition "A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity."@en ; + prov:inverse "hadDerivation" ; + prov:qualifiedForm prov:Derivation , prov:qualifiedDerivation . + +vcard:region rdf:type owl:DatatypeProperty ; + rdfs:comment "The region (e.g. state or province) associated with the address of the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "region"@en ; + rdfs:range xsd:string . + +spdx:ReferenceCategory + rdf:type owl:Class ; + rdfs:comment "Category used for ExternalRef"@en ; + vs:term_status "stable"@en . + +vcard:TelephoneType rdf:type owl:Class ; + rdfs:comment "Used for telephone type codes. The URI of the telephone type code must be used as the value for the Telephone Type."@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Phone"@en . + +dcterms:TGN rdf:type dcam:VocabularyEncodingScheme ; + rdfs:comment "The set of places specified by the Getty Thesaurus of Geographic Names."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "TGN"@en ; + rdfs:seeAlso <http://www.getty.edu/research/tools/vocabulary/tgn/index.html> ; + dcterms:issued "2000-07-11"^^xsd:date . + +spdx:relationshipType_fileAdded + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_fileAdded expresses that the SPDXElement is a file which has been added to the relatedSPDXElement package. For example, a package (the relatedSPDXElement) has been patched to remove a file (the SPDXElement). This relationship is typically used to express the result of a patched package when the actual patchfile is not present."@en ; + vs:term_status "stable"@en . + +time:inDateTime rdf:type owl:ObjectProperty ; + rdfs:comment "Position of an instant, expressed using a structured description"@en , "Posición de un instante, expresada utilizando una descripción estructurada."@es ; + rdfs:domain time:Instant ; + rdfs:label "in date-time description"@en , "en descripción de fecha-hora"@es ; + rdfs:range time:GeneralDateTimeDescription ; + rdfs:subPropertyOf time:inTemporalPosition ; + skos:definition "Posición de un instante, expresada utilizando una descripción estructurada."@es , "Position of an instant, expressed using a structured description"@en . + +spdx:relationshipType_generatedFrom + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_generatedFrom expresses that an SPDXElement was generated from the relatedSPDXElement. For example, a binary File might have been generated from a source File."@en ; + vs:term_status "stable"@en . + +xsd:date rdf:type rdfs:Datatype . + +vcard:hasKey rdf:type owl:ObjectProperty ; + rdfs:comment "To specify a public key or authentication certificate associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has key"@en ; + owl:equivalentProperty vcard:key . + +spdx:Package rdf:type owl:Class ; + rdfs:comment "A Package represents a collection of software files that are delivered as a single functional component."@en ; + rdfs:subClassOf spdx:SpdxItem ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:File ; + owl:onProperty spdx:hasFile + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; + owl:onProperty spdx:filesAnalyzed + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:originator + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Checksum ; + owl:onProperty spdx:checksum + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:anyURI ; + owl:onProperty doap:homepage + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:date ; + owl:onProperty spdx:validUntilDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:summary + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:sourceInfo + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass spdx:PackageVerificationCode ; + owl:onProperty spdx:packageVerificationCode + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:packageFileName + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:description + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onDataRange xsd:anyURI ; + owl:onProperty spdx:downloadLocation ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:supplier + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onClass spdx:ExternalRef ; + owl:onProperty spdx:externalRef + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass spdx:Purpose ; + owl:onProperty spdx:primaryPackagePurpose + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty spdx:versionInfo + ] ; + rdfs:subClassOf [ rdf:type owl:Class ; + owl:unionOf ( [ rdf:type owl:Restriction ; + owl:hasValue spdx:noassertion ; + owl:onProperty spdx:licenseDeclared + ] + [ rdf:type owl:Restriction ; + owl:hasValue spdx:none ; + owl:onProperty spdx:licenseDeclared + ] + [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onClass spdx:AnyLicenseInfo ; + owl:onProperty spdx:licenseDeclared + ] + ) + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:date ; + owl:onProperty spdx:builtDate + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:date ; + owl:onProperty spdx:releaseDate + ] ; + vs:term_status "stable"@en . + +<http://data.europa.eu/r5r> + rdf:type owl:Ontology ; + owl:imports <https://spdx.org/rdf/terms/spdx-ontology.owl.xml> , <http://www.w3.org/2006/time.ttl> , <https://www.w3.org/ns/locn.ttl> , <http://www.w3.org/ns/prov-o.ttl> , <https://schema.org/version/latest/schema.ttl> , <http://www.w3.org/ns/adms.ttl> , <http://www.w3.org/2006/vcard/ns.ttl> , <http://xmlns.com/foaf/spec/index.rdf> , <http://dublincore.org/2020/01/20/dublin_core_terms.ttl> , <https://www.w3.org/ns/dcat2.ttl> . + +prov:unqualifiedForm rdf:type owl:AnnotationProperty ; + rdfs:comment "Classes and properties used to qualify relationships are annotated with prov:unqualifiedForm to indicate the property used to assert an unqualified provenance relation."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +spdx:relationshipType_specificationFor + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "Is to be used when SPDXRef-A describes, illustrates, or defines a design specification for SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:crossRef rdf:type owl:ObjectProperty ; + rdfs:comment "Cross Reference Detail for a license SeeAlso URL"@en ; + rdfs:range spdx:SimpleLicensingInfo . + +vcard:Internet rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Internet"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +<http://data.europa.eu/r5r#Dataset_Shape> + rdf:type sh:NodeShape ; + sh:name "Dataset"@en ; + sh:property [ sh:path dcterms:isVersionOf ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcterms:relation ; + sh:severity sh:Violation + ] ; + sh:property [ sh:datatype xsd:decimal ; + sh:maxCount 1 ; + sh:path dcat:spatialResolutionInMeters ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:creator ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dc:isReferencedBy ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:accessRights ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:provenance ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:publisher ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:spatial ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:hasVersion ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:distribution ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path adms:identifier ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:modified ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:conformsTo ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:path dcterms:accrualPeriodicity ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:type ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path adms:sample ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:source ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:theme ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:temporal ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcat:keyword ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path foaf:page ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcterms:language ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path adms:versionNotes ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:contactPoint ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:node <http://data.europa.eu/r5r#DateOrDateTimeDataType_Shape> ; + sh:path dcterms:issued ; + sh:severity sh:Violation + ] ; + sh:property [ sh:datatype xsd:duration ; + sh:maxCount 1 ; + sh:path dcat:temporalResolution ; + sh:severity sh:Violation + ] ; + sh:property [ sh:nodeKind sh:Literal ; + sh:path dcterms:identifier ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path prov:qualifiedAttribution ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path prov:wasGeneratedBy ; + sh:severity sh:Violation + ] ; + sh:property [ sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path owl:versionInfo ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation + ] ; + sh:property [ sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:description ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:landingPage ; + sh:severity sh:Violation + ] ; + sh:property [ sh:path dcat:qualifiedRelation ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Dataset . + +vcard:TextPhone rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Text phone"@en ; + rdfs:subClassOf vcard:TelephoneType . + +vcard:Date rdf:type owl:Class ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Date"@en ; + rdfs:subClassOf vcard:RelatedType . + +vcard:hasURL rdf:type owl:ObjectProperty ; + rdfs:comment "To specify a uniform resource locator associated with the object"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has url"@en ; + owl:equivalentProperty vcard:url . + +spdx:licenseExceptionTemplate + rdf:type owl:DatatypeProperty ; + rdfs:comment "Template for matching license exception text"@en ; + rdfs:domain spdx:LicenseException ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +spdx:relationshipType_documentation + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "To be used when SPDXRef-A provides documentation of SPDXRef-B."@en ; + vs:term_status "stable"@en . + +spdx:relationshipType_containedBy + rdf:type owl:NamedIndividual , spdx:RelationshipType ; + rdfs:comment "A Relationship of relationshipType_containedBy expresses that an SPDXElement is contained by the relatedSPDXElement. For example, a File contained by a Package. "@en ; + vs:term_status "stable"@en . + +vcard:extended-address + rdf:type owl:DatatypeProperty ; + rdfs:comment "This data property has been deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "extended address"@en ; + owl:deprecated true . + +vcard:Dom rdf:type owl:Class ; + rdfs:comment "This class is deprecated"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "Dom"@en ; + rdfs:subClassOf vcard:Type ; + owl:deprecated true . + +spdx:attributionText rdf:type owl:DatatypeProperty ; + rdfs:comment "This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce."@en ; + rdfs:domain spdx:SpdxItem ; + rdfs:range xsd:string ; + vs:term_status "stable"@en . + +time:inXSDgYearMonth rdf:type owl:DatatypeProperty ; + rdfs:comment "Position of an instant, expressed using xsd:gYearMonth"@en , "Posición de un instante, expresado utilizando xsd:gYearMonth."@es ; + rdfs:domain time:Instant ; + rdfs:label "in XSD g-YearMonth"@en , "en año-mes gregoriano XSD"@es ; + rdfs:range xsd:gYearMonth ; + skos:definition "Position of an instant, expressed using xsd:gYearMonth"@en , "Posición de un instante, expresado utilizando xsd:gYearMonth."@es . + +prov:Derivation rdf:type owl:Class ; + rdfs:comment "An instance of prov:Derivation provides additional descriptions about the binary prov:wasDerivedFrom relation from some derived prov:Entity to another prov:Entity from which it was derived. For example, :chewed_bubble_gum prov:wasDerivedFrom :unwrapped_bubble_gum; prov:qualifiedDerivation [ a prov:Derivation; prov:entity :unwrapped_bubble_gum; :foo :bar ]."@en , "The more specific forms of prov:Derivation (i.e., prov:Revision, prov:Quotation, prov:PrimarySource) should be asserted if they apply."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:label "Derivation" ; + rdfs:subClassOf prov:EntityInfluence ; + prov:category "qualified" ; + prov:component "derivations" ; + prov:constraints "http://www.w3.org/TR/2013/REC-prov-constraints-20130430/#prov-dm-constraints-fig"^^xsd:anyURI ; + prov:definition "A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity."@en ; + prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-Derivation"^^xsd:anyURI ; + prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#Derivation-Relation"^^xsd:anyURI ; + prov:unqualifiedForm prov:wasDerivedFrom . + +spdx:Relationship rdf:type owl:Class ; + rdfs:comment "A Relationship represents a relationship between two SpdxElements."@en ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:SpdxElement ; + owl:onProperty spdx:relatedSpdxElement ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:onClass spdx:RelationshipType ; + owl:onProperty spdx:relationshipType ; + owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger + ] ; + rdfs:subClassOf [ rdf:type owl:Restriction ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; + owl:onProperty rdfs:comment + ] ; + vs:term_status "stable"@en . + +dcterms:dateCopyrighted + rdf:type rdf:Property ; + rdfs:comment "Date of copyright of the resource."@en ; + rdfs:isDefinedBy dcterms: ; + rdfs:label "Date Copyrighted"@en ; + rdfs:range rdfs:Literal ; + rdfs:subPropertyOf dc:date , dcterms:date ; + dcterms:description "Typically a year. Recommended practice is to describe the date, date/time, or period of time as recommended for the property Date, of which this is a subproperty."@en ; + dcterms:issued "2002-07-13"^^xsd:date . + +time:years rdf:type owl:DatatypeProperty ; + rdfs:comment "length of, or element of the length of, a temporal extent expressed in years"@en , "Longitud de, o elemento de la longitud de, una extensión temporal expresada en años."@es ; + rdfs:domain time:GeneralDurationDescription ; + rdfs:label "years duration"@en , "duración en años"@es ; + rdfs:range xsd:decimal . + +vcard:hasOrganizationName + rdf:type owl:ObjectProperty ; + rdfs:comment "Used to support property parameters for the organization name data property"@en ; + rdfs:isDefinedBy <http://www.w3.org/2006/vcard/ns> ; + rdfs:label "has organization name"@en . + +prov:constraints rdf:type owl:AnnotationProperty ; + rdfs:comment "A reference to the principal section of the PROV-CONSTRAINTS document that describes this concept."@en ; + rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ; + rdfs:subPropertyOf rdfs:seeAlso . + +<http://spdx.org/rdf/terms> + rdf:type owl:Ontology ; + rdfs:comment "This specification describes the SPDX® language, defined as a dictionary of named properties and classes using W3C's RDF Technology.\n\nSPDX® is an open standard for communicating software bill of material information, including components, licenses, copyrights, and security references. SPDX reduces redundant work by providing a common format for companies and communities to share important data, thereby streamlining and improving compliance.\n.\nKnown issues:\n- rdfs:comment and rdfs:seeAlso are used within the SPDX classes and causes a redefinition of these standard terms"@en ; + rdfs:label "SPDX 2.3" ; + owl:versionIRI <http://spdx.org/rdf/terms/2.3> ; + owl:versionInfo 2.3 . diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/dcat-ap-hvd-2.2.0-SHACL.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/dcat-ap-hvd-2.2.0-SHACL.ttl new file mode 100644 index 00000000000..36fccb764e5 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/dcat-ap-hvd-2.2.0-SHACL.ttl @@ -0,0 +1,712 @@ +@prefix dc: <http://purl.org/dc/terms/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix shacl: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd> rdfs:member <https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#LegalResourceShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#LicenceDocumentShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#RightsstatementShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#StandardShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#LiteralShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#ResourceShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#ConceptShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CataloguedResourceShape>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DocumentShape> . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape> a shacl:NodeShape; + shacl:closed false; + shacl:property <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/387c76a64757677cc2b899f0c4a20803263a0449>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/65eafe0643a998b84fc2d253de401f9ad8355770>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/c65d45ed7195ead5f643ec8c8afd29c6dd9662bf>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/edc684c84677aa4924b66988491caddda1a1e68b>; + shacl:targetClass dcat:CatalogRecord . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/387c76a64757677cc2b899f0c4a20803263a0449> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#CatalogueRecord.primarytopic"; + shacl:description "A link to the Dataset, Data service or Catalog described in the record."@en; + shacl:name "primary topic"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path foaf:primaryTopic; + <https://purl.eu/ns/shacl#message> "The expected value for primary topic is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/65eafe0643a998b84fc2d253de401f9ad8355770> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#CatalogueRecord.primarytopic"; + shacl:description "A link to the Dataset, Data service or Catalog described in the record."@en; + shacl:minCount 1; + shacl:name "primary topic"@en; + shacl:path foaf:primaryTopic; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for primary topic"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/c65d45ed7195ead5f643ec8c8afd29c6dd9662bf> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#CatalogueRecord.primarytopic"; + shacl:class dcat:Resource; + shacl:description "A link to the Dataset, Data service or Catalog described in the record."@en; + shacl:name "primary topic"@en; + shacl:path foaf:primaryTopic; + <https://purl.eu/ns/shacl#message> "The range of primary topic must be of type <http://www.w3.org/ns/dcat#Resource>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueRecordShape/edc684c84677aa4924b66988491caddda1a1e68b> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#CatalogueRecord.primarytopic"; + shacl:description "A link to the Dataset, Data service or Catalog described in the record."@en; + shacl:maxCount 1; + shacl:name "primary topic"@en; + shacl:path foaf:primaryTopic; + <https://purl.eu/ns/shacl#message> "Maximally 1 values allowed for primary topic"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape> a shacl:NodeShape; + shacl:closed false; + shacl:property <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/01d5c746936ff78bb5eb353a1b0e49303cb2fd31>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/337cf55721093cc585693a5397601643d59a4c46>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/34db0dabef6e2aa992eab790fc3e8d1e3f83bc12>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/7b94c69361e00163d16d78016cd994668c7fccda>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/c26f8a3ac6445e9f36176f951acd9d235af5ffd9>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/e9a8f5414305eafd449b87a38bfe0c974341c9ac>; + shacl:targetClass dcat:Catalog . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/01d5c746936ff78bb5eb353a1b0e49303cb2fd31> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Catalogue.dataset"; + shacl:description "A Dataset that is part of the Catalogue."@en; + shacl:name "dataset"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:dataset; + <https://purl.eu/ns/shacl#message> "The expected value for dataset is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/337cf55721093cc585693a5397601643d59a4c46> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Catalogue.record"; + shacl:class dcat:CatalogRecord; + shacl:description "A Catalogue Record that is part of the Catalogue"@en; + shacl:name "record"@en; + shacl:path dcat:record; + <https://purl.eu/ns/shacl#message> "The range of record must be of type <http://www.w3.org/ns/dcat#CatalogRecord>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/34db0dabef6e2aa992eab790fc3e8d1e3f83bc12> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Catalogue.record"; + shacl:description "A Catalogue Record that is part of the Catalogue"@en; + shacl:name "record"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:record; + <https://purl.eu/ns/shacl#message> "The expected value for record is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/7b94c69361e00163d16d78016cd994668c7fccda> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Catalogue.dataset"; + shacl:class dcat:Dataset; + shacl:description "A Dataset that is part of the Catalogue."@en; + shacl:name "dataset"@en; + shacl:path dcat:dataset; + <https://purl.eu/ns/shacl#message> "The range of dataset must be of type <http://www.w3.org/ns/dcat#Dataset>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/c26f8a3ac6445e9f36176f951acd9d235af5ffd9> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Catalogue.service"; + shacl:class dcat:DataService; + shacl:description "A site or end-point (Data Service) that is listed in the Catalogue."@en; + shacl:name "service"@en; + shacl:path dcat:service; + <https://purl.eu/ns/shacl#message> "The range of service must be of type <http://www.w3.org/ns/dcat#DataService>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CatalogueShape/e9a8f5414305eafd449b87a38bfe0c974341c9ac> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Catalogue.service"; + shacl:description "A site or end-point (Data Service) that is listed in the Catalogue."@en; + shacl:name "service"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:service; + <https://purl.eu/ns/shacl#message> "The expected value for service is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#CataloguedResourceShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass dcat:Resource . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#ConceptShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass skos:Concept . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape> a shacl:NodeShape; + shacl:closed false; + shacl:property <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/0a6f3bb11ed4ea12f852c78996b89c9a54ffc0fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/1a61f733fafb015548fe0e21203d559c9cb4d228>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/1aeb85e10acb27fafc68a1bc04adb4860ecbea59>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/3bde2663aaca96d953765ac2e525ef64710bf4d6>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/60675e8175395481680e343172eea5fcd3f82cd4>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/63240e11f1eb66f636413d1dbb134f0ff9066a7c>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/68388ec47b77212d80036e8a02e9956f5ba0e0f5>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/68dc6d1df6d91b2d33990e6db3c5af31b3d51de8>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/73465b7fbd7f991a08ddd1b766c2e46fa9dfc14e>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/7b6713c1f4a52e964f5db57eabef294b6d04e90e>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/83ad7325cc6681e43e44550c269847065a95a14f>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/8521ebd386ec388c4cf09933c419e3fe7668f29d>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/99435c17158fbaa12d1d955b8886d5bf935ab016>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/998ce689a5bcc3e2764ff84a05255e34d91e8102>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/9adf9f5890592909cf3e67021ae7ab4f895a7745>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/9eaae476a881de13b9430537ace6e70da7327dbd>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/b4c4138f0581e7240ec4dd866004c56407b3705a>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/ca2bd10c893237fa342edb75240b08731acda92f>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/d36065836a29f463546e269c25db7b95b879b3fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/dbcf2adef675735c48b532392359af27af5e8b71>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/eab49dbeb9d895c6e13fc1a939b8a3a7cde0b52b>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/f30149ffb6ec9d00dd5866b052105729fa27d02a>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/f514dbc668e2c9c457d61f1f2721c7fbcb22cb59>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/HVDELI>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/HVDCategoryCV>; + shacl:targetClass dcat:DataService . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/0a6f3bb11ed4ea12f852c78996b89c9a54ffc0fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.applicablelegislation"; + shacl:description "The legislation that mandates the creation or management of the Data Service."@en; + shacl:name "applicable legislation"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "The expected value for applicable legislation is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/1a61f733fafb015548fe0e21203d559c9cb4d228> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.servesdataset"; + shacl:class dcat:Dataset; + shacl:description "This property refers to a collection of data that this data service can distribute."@en; + shacl:name "serves dataset"@en; + shacl:path dcat:servesDataset; + <https://purl.eu/ns/shacl#message> "The range of serves dataset must be of type <http://www.w3.org/ns/dcat#Dataset>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/1aeb85e10acb27fafc68a1bc04adb4860ecbea59> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.HVDcategory"; + shacl:class skos:Concept; + shacl:description "The HVD category to which this Data Service belongs."@en; + shacl:name "HVD category"@en; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + <https://purl.eu/ns/shacl#message> "The range of HVD category must be of type <http://www.w3.org/2004/02/skos/core#Concept>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/3bde2663aaca96d953765ac2e525ef64710bf4d6> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.endpointURL"; + shacl:description "The root location or primary endpoint of the service (an IRI)."@en; + shacl:name "endpoint URL"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:endpointURL; + <https://purl.eu/ns/shacl#message> "The expected value for endpoint URL is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/60675e8175395481680e343172eea5fcd3f82cd4> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.HVDcategory"; + shacl:description "The HVD category to which this Data Service belongs."@en; + shacl:name "HVD category"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + <https://purl.eu/ns/shacl#message> "The expected value for HVD category is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/63240e11f1eb66f636413d1dbb134f0ff9066a7c> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.endpointdescription"; + shacl:description "A description of the services available via the end-points, including their operations, parameters etc."@en; + shacl:name "endpoint description"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:endpointDescription; + <https://purl.eu/ns/shacl#message> "The expected value for endpoint description is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/68388ec47b77212d80036e8a02e9956f5ba0e0f5> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.documentation"; + shacl:class foaf:Document; + shacl:description "A page that provides additional information about the Data Service."@en; + shacl:name "documentation"@en; + shacl:path foaf:Page; + <https://purl.eu/ns/shacl#message> "The range of documentation must be of type <http://xmlns.com/foaf/0.1/Document>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/68dc6d1df6d91b2d33990e6db3c5af31b3d51de8> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.contactpoint"; + shacl:description "Contact information that can be used for sending comments about the Data Service."@en; + shacl:minCount 1; + shacl:name "contact point"@en; + shacl:path dcat:contactPoint; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for contact point"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/73465b7fbd7f991a08ddd1b766c2e46fa9dfc14e> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.applicablelegislation"; + shacl:class <http://data.europa.eu/eli/ontology#LegalResource>; + shacl:description "The legislation that mandates the creation or management of the Data Service."@en; + shacl:name "applicable legislation"@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "The range of applicable legislation must be of type <http://data.europa.eu/eli/ontology#LegalResource>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/7b6713c1f4a52e964f5db57eabef294b6d04e90e> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.contactpoint"; + shacl:class vcard:Kind; + shacl:description "Contact information that can be used for sending comments about the Data Service."@en; + shacl:name "contact point"@en; + shacl:path dcat:contactPoint; + <https://purl.eu/ns/shacl#message> "The range of contact point must be of type <http://www.w3.org/2006/vcard/ns#Kind>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/83ad7325cc6681e43e44550c269847065a95a14f> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.endpointURL"; + shacl:description "The root location or primary endpoint of the service (an IRI)."@en; + shacl:minCount 1; + shacl:name "endpoint URL"@en; + shacl:path dcat:endpointURL; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for endpoint URL"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/8521ebd386ec388c4cf09933c419e3fe7668f29d> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.documentation"; + shacl:description "A page that provides additional information about the Data Service."@en; + shacl:minCount 1; + shacl:name "documentation"@en; + shacl:path foaf:Page; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for documentation"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/99435c17158fbaa12d1d955b8886d5bf935ab016> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.rights"; + shacl:class dc:RightsStatement; + shacl:description "A statement that specifies rights associated with the Distribution."@en; + shacl:name "rights"@en; + shacl:path dc:rights; + <https://purl.eu/ns/shacl#message> "The range of rights must be of type <http://purl.org/dc/terms/RightsStatement>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/998ce689a5bcc3e2764ff84a05255e34d91e8102> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.documentation"; + shacl:description "A page that provides additional information about the Data Service."@en; + shacl:name "documentation"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path foaf:Page; + <https://purl.eu/ns/shacl#message> "The expected value for documentation is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/9adf9f5890592909cf3e67021ae7ab4f895a7745> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.contactpoint"; + shacl:description "Contact information that can be used for sending comments about the Data Service."@en; + shacl:name "contact point"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:contactPoint; + <https://purl.eu/ns/shacl#message> "The expected value for contact point is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/9eaae476a881de13b9430537ace6e70da7327dbd> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.licence"; + shacl:description "A licence under which the Data service is made available."@en; + shacl:maxCount 1; + shacl:name "licence"@en; + shacl:path dc:license; + <https://purl.eu/ns/shacl#message> "Maximally 1 values allowed for licence"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/b4c4138f0581e7240ec4dd866004c56407b3705a> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.rights"; + shacl:description "A statement that specifies rights associated with the Distribution."@en; + shacl:name "rights"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dc:rights; + <https://purl.eu/ns/shacl#message> "The expected value for rights is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/ca2bd10c893237fa342edb75240b08731acda92f> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.servesdataset"; + shacl:description "This property refers to a collection of data that this data service can distribute."@en; + shacl:name "serves dataset"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:servesDataset; + <https://purl.eu/ns/shacl#message> "The expected value for serves dataset is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/d36065836a29f463546e269c25db7b95b879b3fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.applicablelegislation"; + shacl:description "The legislation that mandates the creation or management of the Data Service."@en; + shacl:minCount 1; + shacl:name "applicable legislation"@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for applicable legislation"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/dbcf2adef675735c48b532392359af27af5e8b71> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.licence"; + shacl:class dc:LicenseDocument; + shacl:description "A licence under which the Data service is made available."@en; + shacl:name "licence"@en; + shacl:path dc:license; + <https://purl.eu/ns/shacl#message> "The range of licence must be of type <http://purl.org/dc/terms/LicenseDocument>."@en . + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/eab49dbeb9d895c6e13fc1a939b8a3a7cde0b52b> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.servesdataset"; + shacl:description "This property refers to a collection of data that this data service can distribute."@en; + shacl:minCount 1; + shacl:name "serves dataset"@en; + shacl:path dcat:servesDataset; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for serves dataset"@en . + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/f30149ffb6ec9d00dd5866b052105729fa27d02a> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.licence"; + shacl:description "A licence under which the Data service is made available."@en; + shacl:name "licence"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dc:license; + <https://purl.eu/ns/shacl#message> "The expected value for licence is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/f514dbc668e2c9c457d61f1f2721c7fbcb22cb59> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.HVDcategory"; + shacl:description "The HVD category to which this Data Service belongs."@en; + shacl:minCount 1; + shacl:name "HVD category"@en; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for HVD category"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape> a shacl:NodeShape; + shacl:closed false; + shacl:property <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/08118c51bfc41b71d11f3a58e9410da74e6480e6>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/0a6f3bb11ed4ea12f852c78996b89c9a54ffc0fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/2ab9813b47309d4af98fdfe34189ea24baecc8cd>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/2f39bbd821cac86ab81596cd47c8798f3f60f0b9>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/73465b7fbd7f991a08ddd1b766c2e46fa9dfc14e>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/7b6713c1f4a52e964f5db57eabef294b6d04e90e>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/892bcf3c90199fdd741a47fc4559dc59d5a5b034>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/924bfd3702cf51f4a6bc11bd1b7e06790d5d2fbc>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/9adf9f5890592909cf3e67021ae7ab4f895a7745>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/9f9f581dcae4fbd1653141d8b35ba7f86b4cf740>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/c84f7330b9538a899ebb875c44dc23c9882e74ac>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/d36065836a29f463546e269c25db7b95b879b3fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/f6f077451f13ccf5d721838425fcc37f6cebfe48>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/HVDELI>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/HVDCategoryCV>; + shacl:targetClass dcat:Dataset . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/08118c51bfc41b71d11f3a58e9410da74e6480e6> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.conformsto"; + shacl:description "An implementing rule or other specification."@en; + shacl:name "conforms to"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dc:conformsTo; + <https://purl.eu/ns/shacl#message> "The expected value for conforms to is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/0a6f3bb11ed4ea12f852c78996b89c9a54ffc0fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.applicablelegislation"; + shacl:description "The legislation that mandates the creation or management of the Dataset."@en; + shacl:name "applicable legislation"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "The expected value for applicable legislation is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/2ab9813b47309d4af98fdfe34189ea24baecc8cd> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.datasetdistribution"; + shacl:class dcat:Distribution; + shacl:description "An available Distribution for the Dataset."@en; + shacl:name "dataset distribution"@en; + shacl:path dcat:distribution; + <https://purl.eu/ns/shacl#message> "The range of dataset distribution must be of type <http://www.w3.org/ns/dcat#Distribution>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/2f39bbd821cac86ab81596cd47c8798f3f60f0b9> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.datasetdistribution"; + shacl:description "An available Distribution for the Dataset."@en; + shacl:minCount 1; + shacl:name "dataset distribution"@en; + shacl:path dcat:distribution; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for dataset distribution"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/73465b7fbd7f991a08ddd1b766c2e46fa9dfc14e> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.applicablelegislation"; + shacl:class <http://data.europa.eu/eli/ontology#LegalResource>; + shacl:description "The legislation that mandates the creation or management of the Dataset."@en; + shacl:name "applicable legislation"@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "The range of applicable legislation must be of type <http://data.europa.eu/eli/ontology#LegalResource>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/7b6713c1f4a52e964f5db57eabef294b6d04e90e> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.contactpoint"; + shacl:class vcard:Kind; + shacl:description "Contact information that can be used for sending comments about the Dataset."@en; + shacl:name "contact point"@en; + shacl:path dcat:contactPoint; + <https://purl.eu/ns/shacl#message> "The range of contact point must be of type <http://www.w3.org/2006/vcard/ns#Kind>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/892bcf3c90199fdd741a47fc4559dc59d5a5b034> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.HVDCategory"; + shacl:class skos:Concept; + shacl:description "The HVD category to which this Dataset belongs."@en; + shacl:name "HVD Category"@en; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + <https://purl.eu/ns/shacl#message> "The range of HVD Category must be of type <http://www.w3.org/2004/02/skos/core#Concept>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/924bfd3702cf51f4a6bc11bd1b7e06790d5d2fbc> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.HVDCategory"; + shacl:description "The HVD category to which this Dataset belongs."@en; + shacl:name "HVD Category"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + <https://purl.eu/ns/shacl#message> "The expected value for HVD Category is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/9adf9f5890592909cf3e67021ae7ab4f895a7745> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.contactpoint"; + shacl:description "Contact information that can be used for sending comments about the Dataset."@en; + shacl:name "contact point"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:contactPoint; + <https://purl.eu/ns/shacl#message> "The expected value for contact point is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/9f9f581dcae4fbd1653141d8b35ba7f86b4cf740> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.HVDCategory"; + shacl:description "The HVD category to which this Dataset belongs."@en; + shacl:minCount 1; + shacl:name "HVD Category"@en; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for HVD Category"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/c84f7330b9538a899ebb875c44dc23c9882e74ac> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.conformsto"; + shacl:class dc:Standard; + shacl:description "An implementing rule or other specification."@en; + shacl:name "conforms to"@en; + shacl:path dc:conformsTo; + <https://purl.eu/ns/shacl#message> "The range of conforms to must be of type <http://purl.org/dc/terms/Standard>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/d36065836a29f463546e269c25db7b95b879b3fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.applicablelegislation"; + shacl:description "The legislation that mandates the creation or management of the Dataset."@en; + shacl:minCount 1; + shacl:name "applicable legislation"@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for applicable legislation"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/f6f077451f13ccf5d721838425fcc37f6cebfe48> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.datasetdistribution"; + shacl:description "An available Distribution for the Dataset."@en; + shacl:name "dataset distribution"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:distribution; + <https://purl.eu/ns/shacl#message> "The expected value for dataset distribution is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape> a shacl:NodeShape; + shacl:closed false; + shacl:property <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/0a6f3bb11ed4ea12f852c78996b89c9a54ffc0fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/226b9cb0511ec6b8da045829e10d2676ddbb8375>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/23d4c038584493decec780192681ef61694bff7c>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/27b3b10cebe804356667d0cfca6f658b01f83fbb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/73465b7fbd7f991a08ddd1b766c2e46fa9dfc14e>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/7434c99492683a2fb06dcdcf1f238671caf3d462>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/99435c17158fbaa12d1d955b8886d5bf935ab016>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/9eaae476a881de13b9430537ace6e70da7327dbd>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/a490981ff58636ec8601ca500e67bd9c575eaed9>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/b4c4138f0581e7240ec4dd866004c56407b3705a>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/d36065836a29f463546e269c25db7b95b879b3fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/dbcf2adef675735c48b532392359af27af5e8b71>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/e0065293221c5851ec508ae96cd4ad03ffdedd19>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/f30149ffb6ec9d00dd5866b052105729fa27d02a>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/HVDELI>; + shacl:targetClass dcat:Distribution . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/0a6f3bb11ed4ea12f852c78996b89c9a54ffc0fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.applicablelegislation"; + shacl:description "The legislation that mandates the creation or management of the Distribution"@en; + shacl:name "applicable legislation"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "The expected value for applicable legislation is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/226b9cb0511ec6b8da045829e10d2676ddbb8375> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.linkedschemas"; + shacl:class dc:Standard; + shacl:description "An established schema to which the described Distribution conforms."@en; + shacl:name "linked schemas"@en; + shacl:path dc:conformsTo; + <https://purl.eu/ns/shacl#message> "The range of linked schemas must be of type <http://purl.org/dc/terms/Standard>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/23d4c038584493decec780192681ef61694bff7c> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.accessservice"; + shacl:description "A data service that gives access to the distribution of the dataset"@en; + shacl:name "access service"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:accessService; + <https://purl.eu/ns/shacl#message> "The expected value for access service is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/27b3b10cebe804356667d0cfca6f658b01f83fbb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.linkedschemas"; + shacl:description "An established schema to which the described Distribution conforms."@en; + shacl:name "linked schemas"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dc:conformsTo; + <https://purl.eu/ns/shacl#message> "The expected value for linked schemas is a rdfs:Resource (URI or blank node)"@en . + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/73465b7fbd7f991a08ddd1b766c2e46fa9dfc14e> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.applicablelegislation"; + shacl:class <http://data.europa.eu/eli/ontology#LegalResource>; + shacl:description "The legislation that mandates the creation or management of the Distribution"@en; + shacl:name "applicable legislation"@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "The range of applicable legislation must be of type <http://data.europa.eu/eli/ontology#LegalResource>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/7434c99492683a2fb06dcdcf1f238671caf3d462> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.accessservice"; + shacl:class dcat:DataService; + shacl:description "A data service that gives access to the distribution of the dataset"@en; + shacl:name "access service"@en; + shacl:path dcat:accessService; + <https://purl.eu/ns/shacl#message> "The range of access service must be of type <http://www.w3.org/ns/dcat#DataService>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/99435c17158fbaa12d1d955b8886d5bf935ab016> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.rights"; + shacl:class dc:RightsStatement; + shacl:description "A statement that specifies rights associated with the Distribution."@en; + shacl:name "rights"@en; + shacl:path dc:rights; + <https://purl.eu/ns/shacl#message> "The range of rights must be of type <http://purl.org/dc/terms/RightsStatement>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/9eaae476a881de13b9430537ace6e70da7327dbd> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.licence"; + shacl:description "A licence under which the Distribution is made available."@en; + shacl:maxCount 1; + shacl:name "licence"@en; + shacl:path dc:license; + <https://purl.eu/ns/shacl#message> "Maximally 1 values allowed for licence"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/a490981ff58636ec8601ca500e67bd9c575eaed9> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.accessURL"; + shacl:description "A URL that gives access to a Distribution of the Dataset."@en; + shacl:name "access URL"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dcat:accessURL; + <https://purl.eu/ns/shacl#message> "The expected value for access URL is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/b4c4138f0581e7240ec4dd866004c56407b3705a> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.rights"; + shacl:description "A statement that specifies rights associated with the Distribution."@en; + shacl:name "rights"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dc:rights; + <https://purl.eu/ns/shacl#message> "The expected value for rights is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/d36065836a29f463546e269c25db7b95b879b3fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.applicablelegislation"; + shacl:description "The legislation that mandates the creation or management of the Distribution"@en; + shacl:minCount 1; + shacl:name "applicable legislation"@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation>; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for applicable legislation"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/dbcf2adef675735c48b532392359af27af5e8b71> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.licence"; + shacl:class dc:LicenseDocument; + shacl:description "A licence under which the Distribution is made available."@en; + shacl:name "licence"@en; + shacl:path dc:license; + <https://purl.eu/ns/shacl#message> "The range of licence must be of type <http://purl.org/dc/terms/LicenseDocument>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/e0065293221c5851ec508ae96cd4ad03ffdedd19> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.accessURL"; + shacl:description "A URL that gives access to a Distribution of the Dataset."@en; + shacl:minCount 1; + shacl:name "access URL"@en; + shacl:path dcat:accessURL; + <https://purl.eu/ns/shacl#message> "Minimally 1 values are expected for access URL"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/f30149ffb6ec9d00dd5866b052105729fa27d02a> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.licence"; + shacl:description "A licence under which the Distribution is made available."@en; + shacl:name "licence"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path dc:license; + <https://purl.eu/ns/shacl#message> "The expected value for licence is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DocumentShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass foaf:Document . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape> a shacl:NodeShape; + shacl:closed false; + shacl:property + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/9b6ccc41bb0ced6f6b8f28a86e120bd9d73b32fb>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/a736c4b01ea7557518c0c146f3e311947ce00ccc>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/af064e842c8e058505005f10ba6025ee57ad168b>, + <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/df2e16526cd0f7cc796d3bb27ac1861737a35d91>; + shacl:targetClass vcard:Kind . + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/9b6ccc41bb0ced6f6b8f28a86e120bd9d73b32fb> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Kind.email"; + shacl:description """A email address via which contact can be made."""@en; + shacl:name "email"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path vcard:hasEmail; + <https://purl.eu/ns/shacl#message> "The expected value for email is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/a736c4b01ea7557518c0c146f3e311947ce00ccc> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Kind.contactpage"; + shacl:description "A webpage that either allows to make contact (i.e. a webform) or the information contains how to get into contact. "@en; + shacl:name "contact page"@en; + shacl:nodeKind shacl:BlankNodeOrIRI; + shacl:path vcard:hasURL; + <https://purl.eu/ns/shacl#message> "The expected value for contact page is a rdfs:Resource (URI or blank node)"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/af064e842c8e058505005f10ba6025ee57ad168b> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Kind.contactpage"; + shacl:description "A webpage that either allows to make contact (i.e. a webform) or the information contains how to get into contact. "@en; + shacl:maxCount 1; + shacl:name "contact page"@en; + shacl:path vcard:hasURL; + <https://purl.eu/ns/shacl#message> "Maximally 1 values allowed for contact page"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/df2e16526cd0f7cc796d3bb27ac1861737a35d91> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Kind.email"; + shacl:description """A email address via which contact can be made."""@en; + shacl:maxCount 1; + shacl:name "email"@en; + shacl:path vcard:hasEmail; + <https://purl.eu/ns/shacl#message> "Maximally 1 values allowed for email"@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#LegalResourceShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass <http://data.europa.eu/eli/ontology#LegalResource> . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#LicenceDocumentShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass dc:LicenseDocument . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#LiteralShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass rdfs:Literal . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#ResourceShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass rdfs:Resource . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#RightsstatementShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass dc:RightsStatement . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#StandardShape> a shacl:NodeShape; + shacl:closed false; + shacl:targetClass dc:Standard . + + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#KindShape/union> rdfs:seeAlso "https://semiceu.github.io/uri.semic.eu-generated/DCAT-AP/releases/2.2.0-hvd/#Kind"; + shacl:description """It is recommended to provide at least either an email or a contact form from e.g. a service desk. """@en; + shacl:or ( + [ + shacl:path vcard:hasEmail; + shacl:minCount 1 ; + ] + [ + shacl:path vcard:hasURL; + shacl:minCount 1 ; + ] + ) ; + a shacl:NodeShape ; + shacl:targetClass vcard:Kind ; + shacl:severity shacl:Warning ; + <https://purl.eu/ns/shacl#message> "It is recommended to provide at least either an email or a contact form from e.g. a service desk. "@en . + + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/legalInformation> rdfs:seeAlso "https://semiceu.github.io/uri.semic.eu-generated/DCAT-AP/releases/2.2.0-hvd/#c3"; + shacl:description """It is mandatory to provide legal information."""@en; + shacl:or ( + [ + shacl:path dc:license; + shacl:minCount 1 ; + ] + [ + shacl:path dc:rights; + shacl:minCount 1 ; + ] + ) ; + a shacl:NodeShape ; + shacl:targetClass dcat:Distribution; + <https://purl.eu/ns/shacl#message> "It is mandatory to provide legal information."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/legalInformation> rdfs:seeAlso "https://semiceu.github.io/uri.semic.eu-generated/DCAT-AP/releases/2.2.0-hvd/#c3"; + shacl:description """It is mandatory to provide legal information."""@en; + shacl:or ( + [ + shacl:path dc:license; + shacl:minCount 1 ; + ] + [ + shacl:path dc:rights; + shacl:minCount 1 ; + ] + ) ; + a shacl:NodeShape ; + shacl:targetClass dcat:DataService; + <https://purl.eu/ns/shacl#message> "It is mandatory to provide legal information."@en . + + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/HVDELI> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.applicablelegislation"; + shacl:description "The applicable legislation must be set to the HVD IR ELI."@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation> ; + shacl:hasValue <http://data.europa.eu/eli/reg_impl/2023/138/oj> ; + <https://purl.eu/ns/shacl#message> "The applicable legislation must be set to the HVD IR ELI."@en . + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/HVDELI> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.applicablelegislation"; + shacl:description "The applicable legislation must be set to the HVD IR ELI."@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation> ; + shacl:hasValue <http://data.europa.eu/eli/reg_impl/2023/138/oj> ; + <https://purl.eu/ns/shacl#message> "The applicable legislation must be set to the HVD IR ELI."@en . + + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DistributionShape/HVDELI> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Distribution.applicablelegislation"; + shacl:description "The applicable legislation must be set to the HVD IR ELI."@en; + shacl:path <http://data.europa.eu/r5r/applicableLegislation> ; + shacl:hasValue <http://data.europa.eu/eli/reg_impl/2023/138/oj> ; + <https://purl.eu/ns/shacl#message> "The applicable legislation must be set to the HVD IR ELI."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#SHACL> + rdf:type owl:Ontology ; + owl:imports <http://data.europa.eu/bna/asd487ae75>. + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#HVDCategoryRestriction> + a shacl:NodeShape ; + rdfs:comment "HVD Category Restriction" ; + rdfs:label "HVD Category Restriction" ; + shacl:property [ + shacl:hasValue <http://data.europa.eu/bna/asd487ae75> ; + shacl:minCount 1 ; + shacl:nodeKind shacl:IRI ; + shacl:path skos:inScheme + ] . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DatasetShape/HVDCategoryCV> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#Dataset.HVDcategory"; + shacl:description "The HVD category to which this Dataset belongs."@en; + shacl:name "HVD category"@en; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + shacl:node <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#HVDCategoryRestriction> ; + <https://purl.eu/ns/shacl#message> "The range of HVD category must be of type <http://www.w3.org/2004/02/skos/core#Concept>."@en . + +<https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#DataServiceShape/HVDCategoryCV> rdfs:seeAlso "https://semiceu.github.io//DCAT-AP/releases/2.2.0-hvd#DataService.HVDcategory"; + shacl:description "The HVD category to which this Data Service belongs."@en; + shacl:name "HVD category"@en; + shacl:path <http://data.europa.eu/r5r/hvdCategory>; + shacl:node <https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd#HVDCategoryRestriction> ; + <https://purl.eu/ns/shacl#message> "The range of HVD category must be of type <http://www.w3.org/2004/02/skos/core#Concept>."@en . diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/README.md b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/README.md new file mode 100644 index 00000000000..c77c21496c7 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/README.md @@ -0,0 +1 @@ +SHACL from https://github.com/SEMICeu/DCAT-AP/tree/gh-pages/releases/3.0.0-draft/html/shacl \ No newline at end of file diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/deprecateduris.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/deprecateduris.ttl new file mode 100644 index 00000000000..4f606ff14fe --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/deprecateduris.ttl @@ -0,0 +1,123 @@ +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix : <http://data.europa.eu/r5r#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix dc: <http://purl.org/dc/elements/1.1/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lcon: <http://www.w3.org/ns/locn#> . +@prefix org: <http://www.w3.org/ns/org#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix odrl: <http://www.w3.org/ns/odrl/2/> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix schema: <http://schema.org/> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix spdx: <http://spdx.org/rdf/terms#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix dcatap: <http://data.europa.eu/r5r> . + +#------------------------------------------------------------------------- +# The shapes in this file cover all URI changes that require attention +# by the catalogue owner. +# +# deprecated by the transition from version 1.x to 2.x +# +#------------------------------------------------------------------------- + +:PeriodOfTimeDeprecation_Shape + a sh:NodeShape ; + rdfs:label "PeriodOfTime Deprecation properties"@en ; + sh:property [ + sh:path schema:endDate ; + sh:severity sh:Warning ; + sh:message "replace property schema:endDate with dcat:endDate"@en + ], [ + sh:path schema:startDate ; + sh:severity sh:Warning ; + sh:message "replace property schema:startDate with dcat:startDate"@en + ] ; + sh:targetClass dct:PeriodOfTime . + + +#------------------------------------------------------------------------- +# The shapes in this file cover all URI changes that require attention +# by the catalogue owner. +# +# deprecated by the transition from version 1.x to 2.x +# +#------------------------------------------------------------------------- + + +:DatasetDeprecation_Shape + a sh:NodeShape ; + rdfs:label "Dataset Deprecation properties"@en ; + sh:property [ + sh:path dct:hasVersion ; + sh:severity sh:Warning ; + sh:message "replace property dct:hasVersion with dcat:hasVersion"@en + + ], [ + sh:path dct:isVersionOf ; + sh:severity sh:Warning ; + sh:message "replace dct:isVersionOf with dcat:isVersionOf"@en + ], [ + sh:path owl:versionInfo ; + sh:severity sh:Warning ; + sh:message "replace owl:versionInfo with dcat:version"@en + ]; + sh:targetClass dcat:Dataset . + + +#------------------------------------------------------------------------- +# The shapes in this file cover all URI changes that require attention +# by the catalogue owner. +# +# deprecated by the transition from version 2.x to 3.x +# +#------------------------------------------------------------------------- + + +:DatasetInverseProperties_Shape + a sh:NodeShape ; + rdfs:label "Dataset Deprecation properties"@en ; + sh:property [ + sh:path dcat:isVersionOf ; + sh:severity sh:Warning ; + sh:message "dcat:isVersionOf is an inverse property and should only be used if dcat:hasVersion is present."@en + ]; + sh:targetClass dcat:Dataset . + + + +<http://data.europa.eu/r5r/codelist_imports> + rdf:type owl:Ontology ; + owl:imports <https://github.com/SEMICeu/ADMS-AP/raw/master/purl.org/ADMS_SKOS_v1.00.rdf> . + + +:StatusRestrictionADMS + a sh:NodeShape ; + rdfs:comment "Status restriction" ; + rdfs:label "Status restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue <http://purl.org/adms/status/1.0> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + + +:Distribution_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :StatusRestrictionADMS ; + sh:nodeKind sh:IRI ; + sh:path adms:status ; + sh:description "The codelist of adms:status has changed from DCAT-AP 2.1 to DCAT-AP 3.0.0" ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Distribution. \ No newline at end of file diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/imports.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/imports.ttl new file mode 100644 index 00000000000..47cc2efc350 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/imports.ttl @@ -0,0 +1,28 @@ +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +# +# This file provides the imports that are implicitly the result of reusing them in the DCAT-AP application profile. +# The imports point to the URL of the RDF serializations (mostly the turtle serializations) as not all ontology URIs have content negotation implemented. +# The RDF format is required for the ISA testbed validator. +# The following imports have been outcommented: +# owl:imports <https://www.w3.org/ns/odrl/2/ODRL22.ttl> ; import is excluded because the shacl shape for Category applies to all instances of skos:Concept and the skos:Concepts in the ODRL do not comply to this. + + +<http://data.europa.eu/r5r> + rdf:type owl:Ontology ; + owl:imports <https://www.w3.org/ns/dcat2.ttl> ; + owl:imports <http://dublincore.org/2020/01/20/dublin_core_terms.ttl> ; + owl:imports <http://xmlns.com/foaf/spec/index.rdf> ; + owl:imports <https://www.w3.org/ns/locn.ttl> ; + owl:imports <https://spdx.org/rdf/terms/spdx-ontology.owl.xml> ; + owl:imports <https://schema.org/version/latest/schema.ttl> ; + owl:imports <http://www.w3.org/ns/prov-o.ttl> ; + owl:imports <http://www.w3.org/2006/time.ttl> ; + owl:imports <http://www.w3.org/2006/vcard/ns.ttl> ; + owl:imports <http://www.w3.org/ns/adms.ttl> + . + + diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/mdr-vocabularies.shape.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/mdr-vocabularies.shape.ttl new file mode 100644 index 00000000000..c2cbfb8043c --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/mdr-vocabularies.shape.ttl @@ -0,0 +1,440 @@ +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix : <http://data.europa.eu/r5r#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix cc: <http://creativecommons.org/ns#> . +@prefix dc: <http://purl.org/dc/elements/1.1/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lcon: <http://www.w3.org/ns/locn#> . +@prefix org: <http://www.w3.org/ns/org#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix odrl: <http://www.w3.org/ns/odrl/2/> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix schema: <http://schema.org/> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix spdx: <http://spdx.org/rdf/terms#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix dcatap: <http://data.europa.eu/r5r> . + + +<http://data.europa.eu/r5r/mdr_shapes> + dcat:accessURL <https://joinup.ec.europa.eu/solution/dcat-application-profile-data-portals-europe/distribution/dcat-ap-200-shacl-shapes>; + dcat:downloadURL <https://github.com/SEMICeu/DCAT-AP/raw/cea5a96bb4a6f120c20b7a2b3fb4d86bcd725952/releases/2.0.0/Draft/dcat-ap_2.0.0_shacl_shapes.ttl> ; + dcatap:availability <http://data.europa.eu/r5r/stable> ; + dct:format <http://publications.europa.eu/resource/authority/file-type/RDF_TURTLE> ; + dct:conformsTo <https://www.w3.org/TR/shacl> ; + dct:creator [ + rdfs:seeAlso <https://www.linkedin.com/in/bert-van-nuffelen-a349634/> ; + org:memberOf <https://tenforce.com> ; + foaf:homepage <https://www.linkedin.com/in/bert-van-nuffelen-a349634/> ; + foaf:name "Bert Van Nuffelen" + ], [ + rdfs:seeAlso <https://www.ails.ece.ntua.gr/people/natasa> ; + org:memberOf <https://www.ails.ece.ntua.gr/> ; + foaf:homepage <https://www.ails.ece.ntua.gr/people/natasa> ; + foaf:name "Natasa Sofou" + ], [ + rdfs:seeAlso <http://eugeniu.costezki.ro#me> ; + org:memberOf <http://publications.europa.eu/resource/authority/corporate-body/PUBL> ; + foaf:homepage <http://costezki.ro> ; + foaf:name "Eugeniu Costetchi" + ], [ + rdfs:seeAlso <http://makxdekkers.com/#me> ; + org:memberOf <http://ami-consult.com/#id> ; + foaf:homepage <http://makxdekkers.com/> ; + foaf:name "Makx Dekkers" + ], [ + rdfs:seeAlso <http://nikosloutas.com/> ; + org:memberOf <http://www.pwc.com/gx/en/eu-institutions-services> ; + foaf:homepage <http://nikosloutas.com/> ; + foaf:name "Nikolaos Loutas" + ], [ + rdfs:seeAlso <http://www.deri.ie/users/vassilios-peristeras/> ; + org:memberOf <http://publications.europa.eu/resource/authority/corporate-body/COM> ; + foaf:homepage <http://www.deri.ie/users/vassilios-peristeras/> ; + foaf:name "Vassilios Peristeras" + ] ; + dct:license <https://creativecommons.org/licenses/by/4.0> ; + cc:attributionURL <http://ec.europa.eu/> ; + dct:modified "2021-12-01"^^xsd:date ; + dct:publisher <http://publications.europa.eu/resource/authority/corporate-body/DIGIT> ; + dct:relation <https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/dcat-application-profile-data-portals-europe/release/210> ; + dct:description "This document specifies the controlled vocabulary constraints on properties expressed by DCAT-AP in SHACL."@en ; + dct:title "Controlled Vocabulary Constraints of DCAT Application Profile for Data Portals in Europe"@en ; + owl:versionInfo "2.1.1" ; + foaf:homepage <https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/dcat-application-profile-data-portals-europe/release/210> ; + foaf:maker [ + foaf:mbox <mailto:contact@semic.eu> ; + foaf:name "DCAT-AP Working Group" ; + foaf:page <https://github.com/SEMICeu/DCAT-AP>, <https://joinup.ec.europa.eu/node/64331> + ] . + +:AvailabilityRestriction + a sh:NodeShape ; + rdfs:comment "Availability restriction" ; + rdfs:label "Availability restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/planned-availability> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:ContinentRestriction + a sh:NodeShape ; + rdfs:comment "Continent restriction" ; + rdfs:label "Continent restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/continent> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:CorporateBodyRestriction + a sh:NodeShape ; + rdfs:comment "Corporate Body Restriction" ; + rdfs:label "Corporate Body Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/corporate-body> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:CountryRestriction + a sh:NodeShape ; + rdfs:comment "Country restriction" ; + rdfs:label "Country restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/country> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:DataThemeRestriction + a sh:NodeShape ; + rdfs:comment "Data Theme Restriction" ; + rdfs:label "Data Theme Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/data-theme> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:AccessRightRestriction + a sh:NodeShape ; + rdfs:comment "Access Rights Restriction" ; + rdfs:label "Data Theme Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/access-right> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:DatasetTypeRestriction + a sh:NodeShape ; + rdfs:comment "Dataset Type Restriction" ; + rdfs:label "Dataset Type Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/dataset-type> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + + +:FileTypeRestriction + a sh:NodeShape ; + rdfs:comment "File Type Restriction" ; + rdfs:label "File Type Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/file-type> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:FrequencyRestriction + a sh:NodeShape ; + rdfs:comment "Frequency Restriction" ; + rdfs:label "Frequency Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/frequency> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:GeoNamesRestrictionRegexURI + rdfs:comment "Geonames restriction - base itself on URI structure" ; + rdfs:label "Geonames restriction" ; + a sh:NodeShape ; + sh:pattern "^https://sws.geonames.org" . + + +:LanguageRestriction + a sh:NodeShape ; + rdfs:comment "Language Restriction" ; + rdfs:label "Language Restriction" ; + sh:property [ + sh:hasValue <http://publications.europa.eu/resource/authority/language> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:LicenceTypeRestriction + a sh:NodeShape ; + rdfs:comment "Licence type restriction" ; + rdfs:label "Licence type restriction" ; + sh:property [ + sh:hasValue <http://purl.org/adms/licencetype/1.0> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:PlaceRestriction + a sh:NodeShape ; + rdfs:comment "Place restriction" ; + rdfs:label "Place restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue <http://publications.europa.eu/resource/authority/place> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:PublisherTypeRestriction + a sh:NodeShape ; + rdfs:comment "Publisher type restriction" ; + rdfs:label "Publisher type restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue <http://purl.org/adms/publishertype/1.0> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:IANARestrictionRegexURI + rdfs:comment "IANA restriction - base itself on URL structure" ; + rdfs:label "IANA restriction" ; + a sh:NodeShape ; + sh:pattern "^http.*://www.iana.org/assignments/media-types/" . + +:StatusRestriction + a sh:NodeShape ; + rdfs:comment "Status restriction" ; + rdfs:label "Status restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue <http://publications.europa.eu/resource/authority/distribution-status> ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + +:ChecksumAlgorithmRestriction + a sh:NodeShape ; + rdfs:comment "Checksum algorithm restriction" ; + rdfs:label "Checksum algorithm restriction" ; + sh:pattern "^https://spdx.org/rdf/terms" ; + sh:class <http://spdx.org/rdf/terms#ChecksumAlgorithm>. + +:Checksum_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :ChecksumAlgorithmRestriction ; + sh:nodeKind sh:IRI ; + sh:path spdx:algorithm + ] ; + sh:targetClass spdx:Checksum. + +:LicenseDocument_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :LicenceTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:type + ] ; + sh:targetClass dct:LicenseDocument. + + + +:Catalog_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :LanguageRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:language ; + sh:description "A non EU managed concept is used to indicate a language. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ], [ + sh:node :CorporateBodyRestriction ; + sh:node :Publisher_ShapeCV ; + sh:nodeKind sh:IRI ; + sh:path dct:publisher ; + sh:description "A non EU managed concept is used to indicate the publisher, check if a corresponding exists in the EU corporates bodies NAL" ; + sh:severity sh:Warning + ], [ + sh:node [ + a sh:NodeShape ; + sh:or (:CountryRestriction + :PlaceRestriction + :ContinentRestriction + :GeoNamesRestrictionRegexURI + ) + ] ; + sh:nodeKind sh:IRI ; + sh:path dct:spatial ; + sh:description "A non managed concept is used to indicate a spatial description, check if a corresponding exists" ; + sh:severity sh:Warning + ], [ + sh:hasValue <http://publications.europa.eu/resource/authority/data-theme> ; + sh:nodeKind sh:IRI ; + sh:path dcat:themeTaxonomy ; + sh:description "Multiple themes can be used but at least <http://publications.europa.eu/resource/authority/data-theme> should be present" ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Catalog. + +:Dataset_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :FrequencyRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:accrualPeriodicity ; + sh:description "A non EU managed concept is used to indicate the accrualPeriodicity frequency. If no corresponding can be found inform the maintainer of the EU frequency NAL" ; + sh:severity sh:Violation + ], [ + sh:node :LanguageRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:language ; + sh:description "A non EU managed concept is used to indicate a language. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ], [ + sh:node :CorporateBodyRestriction ; + sh:node :Publisher_ShapeCV ; + sh:nodeKind sh:IRI ; + sh:path dct:publisher ; + sh:description "A non EU managed concept is used to indicate the publisher, check if a corresponding exists in the EU corporates bodies NAL" ; + sh:severity sh:Warning + ], [ + sh:node [ + a sh:NodeShape ; + sh:or (:CountryRestriction + :PlaceRestriction + :ContinentRestriction + :GeoNamesRestrictionRegexURI + ) + ] ; + sh:nodeKind sh:IRI ; + sh:path dct:spatial ; + sh:description "A non managed concept is used to indicate a spatial description, check if a corresponding exists" ; + sh:severity sh:Warning + ], [ + sh:node :DataThemeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dcat:theme ; + sh:description "Multiple themes can be used but at least one concept of <http://publications.europa.eu/resource/authority/data-theme> should be present" ; + sh:severity sh:Warning + ], [ + sh:node :DatasetTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:type ; + sh:description "Multiple types can be used but it is recommended to also provide at least one concept of <http://publications.europa.eu/resource/authority/dataset-type> should be present" ; + sh:severity sh:Warning + ], [ + sh:node :AccessRightRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:accessRights ; + sh:description "A non EU managed concept is used to indicate the access right. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Dataset. + +# ------------------------------------------------------------------------------------------------------------------ +# The constraints for dcat:mediaType, dcat:compressFormat, dcat:packageFormat which are limited to the IANA codelist +# cannot be expressed in SHACL unless a copy in RDF for the IANA codelist is being created. +# A less formal check is provided based upon the assumption that the IANIA codelist is hosted on a known URL domain. +# This check is sensitive to the publication strategy of IANA. +# ------------------------------------------------------------------------------------------------------------------ +:Distribution_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :FileTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:format ; + sh:description "A non EU managed concept is used to indicate the format of the distribution. If no corresponding can be found inform the maintainer of the fileformat NAL." ; + sh:severity sh:Violation + ], [ + sh:node :LanguageRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:language ; + sh:description "A non EU managed concept is used to indicate a language. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ], [ + sh:node :StatusRestriction ; + sh:nodeKind sh:IRI ; + sh:path adms:status ; + sh:description "A non EU managed concept is used to indicate the status of the distribution. If no corresponding can be found inform the maintainer of the adms:status codelist." ; + sh:severity sh:Violation + ], [ + sh:node :AvailabilityRestriction ; + sh:nodeKind sh:IRI ; + sh:path dcatap:availability ; + sh:description "A non EU managed concept is used to indicate the availability of the distribution. If no corresponding can be found inform the maintainer of the DCAT-AP availability codelist." ; + sh:severity sh:Violation + ], [ + sh:node :IANARestrictionRegexURI; + sh:nodeKind sh:IRI ; + sh:path dcat:mediaType ; + sh:description "A mediaType expects a value from IANA. This check uses the URLs from IANA to perform the check as there is no IANA codelist downloadable." ; + sh:severity sh:Warning + ], [ + sh:node :IANARestrictionRegexURI; + sh:nodeKind sh:IRI ; + sh:path dcat:compressFormat ; + sh:description "A compressFormat expects a value from IANA. This check uses the URLs from IANA to perform the check as there is no IANA codelist downloadable." ; + sh:severity sh:Warning + ], [ + sh:node :IANARestrictionRegexURI; + sh:nodeKind sh:IRI ; + sh:path dcat:packageFormat ; + sh:description "A packageFormat expects a value from IANA. This check uses the URLs from IANA to perform the check as there is no IANA codelist downloadable." ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Distribution. + +:DataService_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :AccessRightRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:accessRights ; + sh:description "A non EU managed concept is used to indicate the access right. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Distribution. + + +:Publisher_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :PublisherTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:type ; + sh:description "A non EU managed concept is used to indicate the type of the publisher. If no corresponding can be found inform the maintainer of the adms:publishertype codelist." ; + sh:severity sh:Violation + ] . diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/mdr_imports.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/mdr_imports.ttl new file mode 100644 index 00000000000..a5363b31df8 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/mdr_imports.ttl @@ -0,0 +1,29 @@ +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +# +# This file provides the imports of the codelists recommended by the DCAT-AP application profile. +# http://publications.europa.eu/resource/authority/dataset-type (TODO) + + +<http://data.europa.eu/r5r/codelist_imports> + rdf:type owl:Ontology ; + owl:imports <http://publications.europa.eu/resource/authority/language> ; + owl:imports <http://publications.europa.eu/resource/authority/corporate-body> ; + owl:imports <https://github.com/SEMICeu/DCAT-AP/raw/master/releases/2.0.1/dcat-ap_2.0.1.rdf> ; + owl:imports <http://publications.europa.eu/resource/authority/continent> ; + owl:imports <http://publications.europa.eu/resource/authority/country> ; + owl:imports <http://publications.europa.eu/resource/authority/dataset-type> ; + owl:imports <http://publications.europa.eu/resource/authority/data-theme> ; + owl:imports <http://publications.europa.eu/resource/authority/file-type> ; + owl:imports <http://publications.europa.eu/resource/authority/frequency> ; + owl:imports <https://github.com/SEMICeu/ADMS-AP/raw/master/purl.org/ADMS_SKOS_v1.00.rdf> ; + owl:imports <http://publications.europa.eu/resource/authority/place> ; + owl:imports <http://publications.europa.eu/resource/authority/planned-availability> ; + owl:imports <http://publications.europa.eu/resource/authority/access-right> +. + +# import of the checksum vocabulary +# owl:imports <https://spdx.org/rdf/terms/spdx-ontology.owl.xml> ; diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/range.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/range.ttl new file mode 100644 index 00000000000..2ce766d8519 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/range.ttl @@ -0,0 +1,449 @@ +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix : <https://semiceu.github.io/DCAT-AP/releases/3.0.0/html/shacl/range.ttl#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix cc: <http://creativecommons.org/ns#> . +@prefix dc: <http://purl.org/dc/elements/1.1/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lcon: <http://www.w3.org/ns/locn#> . +@prefix org: <http://www.w3.org/ns/org#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix odrl: <http://www.w3.org/ns/odrl/2/> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix schema: <http://schema.org/> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix spdx: <http://spdx.org/rdf/terms#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix dcatap: <http://data.europa.eu/r5r> . + +<https://semiceu.github.io/DCAT-AP/releases/3.0.0/html/shacl/range.ttl> + dct:description "This file contains the class range constraints for all properties in DCAT-AP"@en. + + + + +#------------------------------------------------------------------------- +# The shapes in this file cover all class range constraints in DCAT-AP +# +# Depending on the exchange agreements these may be necessary to be part +# of the validation process. However they mostly figure in the semantical +# understanding of the ranges. +# +#------------------------------------------------------------------------- + +:Agent_Shape + a sh:NodeShape ; + rdfs:label "Agent"@en ; + sh:property [ + sh:class skos:Concept ; + sh:path dct:type ; + sh:severity sh:Violation + ] ; + sh:targetClass foaf:Agent . + +:CatalogRecord_Shape + a sh:NodeShape ; + rdfs:label "Catalog Record"@en ; + sh:property [ + sh:node :DcatResource_Shape ; + sh:path foaf:primaryTopic ; + sh:severity sh:Violation + ], [ + sh:class dct:Standard ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path adms:status ; + sh:severity sh:Violation + ], [ + sh:class dct:LinguisticSystem ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:class dcat:CatalogRecord ; + sh:path dct:source ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:CatalogRecord . + +:Catalog_Shape + a sh:NodeShape ; + rdfs:label "Catalog"@en ; + sh:property [ + sh:class dct:LinguisticSystem ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:path dcatap:applicableLegislation; + sh:class <http://data.europa.eu/eli/ontology#LegalResource>; + sh:severity sh:Violation + ], [ + sh:class dct:LicenseDocument ; + sh:path dct:license ; + sh:severity sh:Violation + ], [ + sh:class dct:Location ; + sh:path dct:spatial ; + sh:severity sh:Violation + ], [ + sh:class dcat:Catalog ; + sh:path dct:hasPart ; + sh:severity sh:Violation + ], [ + sh:class dcat:Catalog ; + sh:path dct:isPartOf ; + sh:severity sh:Violation + ], [ + sh:class dct:RightsStatement ; + sh:path dct:rights ; + sh:severity sh:Violation + ], [ + sh:class dcat:CatalogRecord ; + sh:path dcat:record ; + sh:severity sh:Violation + ], [ + sh:class skos:ConceptScheme ; + sh:path dcat:themeTaxonomy ; + sh:severity sh:Violation + ], [ + sh:class dcat:DataService ; + sh:path dcat:service ; + sh:severity sh:Violation + ], [ + sh:class dcat:Catalog ; + sh:path dcat:catalog ; + sh:severity sh:Violation + ], [ + sh:class foaf:Agent ; + sh:path dct:creator ; + sh:severity sh:Violation + ], [ + sh:class dcat:Dataset ; + sh:path dcat:dataset ; + sh:severity sh:Violation + ], [ + sh:class foaf:Agent ; + sh:path dct:publisher ; + sh:severity sh:Violation + ], [ + sh:class foaf:Document ; + sh:path foaf:homepage ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Catalog . + + +:DataService_Shape + a sh:NodeShape ; + rdfs:label "Data Service"@en ; + sh:property [ + sh:class dct:RightsStatement ; + sh:path dct:accessRights ; + sh:severity sh:Violation + ], [ + sh:path dcatap:applicableLegislation; + sh:class <http://data.europa.eu/eli/ontology#LegalResource>; + sh:severity sh:Violation + ], [ + sh:class dct:Standard ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:class vcard:Kind ; + sh:path dcat:contactPoint ; + sh:severity sh:Violation + ], [ + sh:class dct:MediaTypeOrExtent ; + sh:path dct:format ; + sh:severity sh:Violation + ], [ + sh:class foaf:Document ; + sh:path dcat:landingPage ; + sh:severity sh:Violation + ], [ + sh:class dct:LicenseDocument ; + sh:path dct:license ; + sh:severity sh:Violation + ], [ + sh:path dct:publisher ; + sh:class foaf:Agent; + sh:severity sh:Violation + ], [ + sh:class dcat:Dataset ; + sh:path dcat:servesDataset ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path dcat:theme ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:DataService . + + +:Dataset_Shape + a sh:NodeShape ; + rdfs:label "Dataset"@en ; + sh:property [ + sh:class dct:RightsStatement ; + sh:path dct:accessRights ; + sh:severity sh:Violation + ], [ + sh:path dcatap:applicableLegislation; + sh:class <http://data.europa.eu/eli/ontology#LegalResource>; + sh:severity sh:Violation + ], [ + sh:class dct:Standard ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:class vcard:Kind ; + sh:path dcat:contactPoint ; + sh:severity sh:Violation + ], [ + sh:class foaf:Agent ; + sh:path dct:creator ; + sh:severity sh:Violation + ], [ + sh:class dcat:Distribution ; + sh:path dcat:distribution ; + sh:severity sh:Violation + ], [ + sh:class foaf:Document ; + sh:path foaf:page ; + sh:severity sh:Violation + ], [ + sh:path dct:accrualPeriodicity; + sh:class dct:Frequency; + sh:severity sh:Violation + ], [ + sh:class dct:Location ; + sh:path dct:spatial ; + sh:severity sh:Violation + ], [ + sh:class dcat:Dataset ; + sh:path dct:hasVersion ; + sh:severity sh:Violation + ], [ + sh:class dcat:DatasetSeries ; + sh:path dcat:inSeries ; + sh:severity sh:Violation + ], [ + sh:class foaf:Document ; + sh:path dcat:landingPage ; + sh:severity sh:Violation + ], [ + sh:class dct:LinguisticSystem ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:class adms:Identifier ; + sh:path adms:identifier ; + sh:severity sh:Violation + ], [ + sh:class dct:ProvenanceStatement ; + sh:path dct:provenance ; + sh:severity sh:Violation + ], [ + sh:class foaf:Agent ; + sh:path dct:publisher ; + sh:severity sh:Violation + ], [ + sh:class prov:Attribution ; + sh:path prov:qualifiedAttribution ; + sh:severity sh:Violation + ], [ + sh:class dcat:Relationship ; + sh:path dcat:qualifiedRelation ; + sh:severity sh:Violation + ], [ + sh:class dcat:Distribution ; + sh:path adms:sample ; + sh:severity sh:Violation + ], [ + sh:class dcat:Dataset ; + sh:path dct:source ; + sh:severity sh:Violation + ], [ + sh:class dct:PeriodOfTime ; + sh:path dct:temporal ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path dcat:theme ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path dct:type ; + sh:severity sh:Violation + ], [ + sh:class prov:Activity ; + sh:path prov:wasGeneratedBy ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Dataset . + + +:DcatResource_Shape + a sh:NodeShape ; + rdfs:comment "the union of Catalog, Dataset, DataService or Dataset Series" ; + rdfs:label "dcat:Resource" ; + sh:message "The node is either a Catalog, Dataset, DataService or a Dataset Series" ; + sh:or ([ + sh:class dcat:Catalog + ] + [ + sh:class dcat:Dataset + ] + [ + sh:class dcat:DataService + ] + [ + sh:class dcat:DatasetSeries + ] + ) . + +:Distribution_Shape + a sh:NodeShape ; + rdfs:label "Distribution"@en ; + sh:property [ + sh:class dcat:DataService ; + sh:path dcat:accessService ; + sh:severity sh:Violation + ], [ + sh:path dcatap:applicableLegislation; + sh:class <http://data.europa.eu/eli/ontology#LegalResource>; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path dcatap:availability ; + sh:severity sh:Violation + ], [ + sh:class spdx:Checksum ; + sh:path spdx:checksum ; + sh:severity sh:Violation + ], [ + sh:class dct:MediaType ; + sh:path dcat:compressFormat ; + sh:severity sh:Violation + ], [ + sh:class foaf:Document ; + sh:path foaf:page ; + sh:severity sh:Violation + ], [ + sh:class dct:MediaTypeOrExtent ; + sh:path dct:format ; + sh:severity sh:Violation + ], [ + sh:class odrl:Policy ; + sh:path odrl:hasPolicy ; + sh:severity sh:Violation + ], [ + sh:class dct:LinguisticSystem ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:class dct:LicenseDocument ; + sh:path dct:license ; + sh:severity sh:Violation + ], [ + sh:class dct:Standard ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:class dct:MediaType ; + sh:path dcat:mediaType ; + sh:severity sh:Violation + ], [ + sh:class dct:MediaType ; + sh:path dcat:packageFormat ; + sh:severity sh:Violation + ], [ + sh:class dct:RightsStatement ; + sh:path dct:rights ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:path adms:status ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Distribution . + + +:LicenceDocument_Shape + a sh:NodeShape ; + rdfs:label "Licence Document"@en ; + sh:property [ + sh:class skos:Concept ; + sh:path dct:type ; + sh:severity sh:Violation + ] ; + sh:targetClass dct:LicenseDocument . + + +:PeriodOfTime_Shape + a sh:NodeShape ; + rdfs:label "PeriodOfTime"@en ; + sh:property [ + sh:class time:Instant ; + sh:path time:hasBeginning ; + sh:severity sh:Violation + ], [ + sh:class time:Instant ; + sh:path time:hasEnd ; + sh:severity sh:Violation + ] ; + sh:targetClass dct:PeriodOfTime . + +:Relationship_Shape + a sh:NodeShape ; + rdfs:label "Relationship"@en ; + sh:property [ + sh:node :DcatResource_Shape ; + sh:path dct:relation ; + sh:severity sh:Violation + ], [ + sh:class dcat:Role ; + sh:path dcat:hadRole ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Relationship . + +:DatasetSeries_Shape + a sh:NodeShape ; + rdfs:label "Dataset Series"@en ; + sh:property [ + sh:class dcat:Dataset ; + sh:path [ sh:inversePath dcat:inSeries; ]; + sh:severity sh:Warning + ], [ + sh:path dcatap:applicableLegislation; + sh:class <http://data.europa.eu/eli/ontology#LegalResource>; + sh:severity sh:Violation + ], [ + sh:path dcat:contactPoint; + sh:class vcard:Kind; + sh:severity sh:Violation + ], [ + sh:path dct:accrualPeriodicity; + sh:class dct:Frequency; + sh:severity sh:Violation + ], [ + sh:path dct:spatial; + sh:class dct:Location; + sh:severity sh:Violation + ], [ + sh:path dct:publisher ; + sh:class foaf:Agent; + sh:severity sh:Violation + ], [ + sh:path dct:temporal; + sh:class dct:PeriodOfTime; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:DatasetSeries . \ No newline at end of file diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/shapes.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/shapes.ttl new file mode 100644 index 00000000000..d179365472f --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/shapes.ttl @@ -0,0 +1,746 @@ +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix : <https://semiceu.github.io/DCAT-AP/releases/3.0.0/html/shacl/shapes.ttl#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix cc: <http://creativecommons.org/ns#> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lcon: <http://www.w3.org/ns/locn#> . +@prefix org: <http://www.w3.org/ns/org#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix odrl: <http://www.w3.org/ns/odrl/2/> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix schema: <http://schema.org/> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix spdx: <http://spdx.org/rdf/terms#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix dcatap: <http://data.europa.eu/r5r> . + +<https://semiceu.github.io/DCAT-AP/releases/3.0.0/html/shacl/shapes.ttl> + dct:format <http://publications.europa.eu/resource/authority/file-type/RDF_TURTLE> ; + dct:conformsTo <https://www.w3.org/TR/shacl> ; + dct:description "This files specifies the core constraints on properties and classes expressed by DCAT-AP in SHACL."@en. + + + +#------------------------------------------------------------------------- +# The shapes in this file cover all classes in DCAT-AP 3.0.0 +# It covers all constraints that must be satisfied except those verifying +# the class ranges. This can be found in a separate file. +# +#------------------------------------------------------------------------- + +:Agent_Shape + a sh:NodeShape ; + rdfs:label "Agent"@en ; + sh:property [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path foaf:name ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path dct:type ; + sh:severity sh:Violation + ] ; + sh:targetClass foaf:Agent . + +:CatalogRecord_Shape + a sh:NodeShape ; + rdfs:label "Catalog Record"@en ; + sh:property [ + sh:maxCount 1 ; + sh:minCount 1 ; + sh:node :DcatResource_Shape ; + sh:path foaf:primaryTopic ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:minCount 1 ; + sh:path dct:modified ; + sh:severity sh:Violation ; + sh:shape :DateOrDateTimeDataType_Shape + ], [ + sh:maxCount 1 ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:issued ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path adms:status ; + sh:severity sh:Violation + ], [ + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path dct:source ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:title ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:description ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:CatalogRecord . + +:Catalog_Shape + a sh:NodeShape ; + rdfs:label "Catalog"@en ; + sh:property [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:path dcatap:applicableLegislation; + sh:nodeKind sh:IRI; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:license ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:issued ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:spatial ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:hasPart ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:modified ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:rights ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:record ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:themeTaxonomy ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:service ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:catalog ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:maxCount 1 ; + sh:path dct:creator ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:dataset ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dct:description ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:minCount 1 ; + sh:path dct:publisher ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dct:title ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path foaf:homepage ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Catalog . + +:CategoryScheme_Shape + a sh:NodeShape ; + rdfs:label "Category Scheme"@en ; + sh:property [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dct:title ; + sh:severity sh:Violation + ] ; + sh:targetClass skos:ConceptScheme . + +:Category_Shape + a sh:NodeShape ; + rdfs:label "Category"@en ; + sh:property [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path skos:prefLabel ; + sh:severity sh:Violation + ] ; + sh:targetClass skos:Concept . + +:Checksum_Shape + a sh:NodeShape ; + rdfs:label "Checksum"@en ; + sh:property [ + sh:maxCount 1 ; + sh:minCount 1 ; + sh:path spdx:algorithm ; + sh:severity sh:Violation + ], [ + sh:datatype xsd:hexBinary ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:path spdx:checksumValue ; + sh:severity sh:Violation + ] ; + sh:targetClass spdx:Checksum . + +:DataService_Shape + a sh:NodeShape ; + rdfs:label "Data Service"@en ; + sh:property [ + sh:maxCount 1 ; + sh:path dct:accessRights ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:severity sh:Violation + ], [ + sh:path dcatap:applicableLegislation; + sh:nodeKind sh:IRI; + sh:severity sh:Violation + ], [ + sh:path dct:conformsTo ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:contactPoint ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:description ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:endpointURL ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:endpointDescription ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:format ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dcat:keyword ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:landingPage ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:maxCount 1 ; + sh:path dct:license ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:maxCount 1 ; + sh:path dct:publisher ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:servesDataset ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:IRI ; + sh:path dcat:theme ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dct:title ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:DataService . + +:Dataset_Shape + a sh:NodeShape ; + rdfs:label "Dataset"@en ; + sh:property [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:maxCount 1 ; + sh:path dct:accessRights ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:IRI ; + sh:path dcatap:applicableLegislation; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:contactPoint ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:creator ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:distribution ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dct:description ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path foaf:page ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:accrualPeriodicity; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:spatial ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:hasVersion ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:identifier ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:inSeries ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:isReferencedBy ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dcat:keyword ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:landingPage ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path dct:modified ; + sh:severity sh:Violation ; + sh:shape :DateOrDateTimeDataType_Shape + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path adms:identifier ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:provenance ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:maxCount 1 ; + sh:path dct:publisher ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path prov:qualifiedAttribution ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:qualifiedRelation ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:relation ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path dct:issued ; + sh:severity sh:Violation ; + sh:shape :DateOrDateTimeDataType_Shape + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path adms:sample ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:source ; + sh:severity sh:Violation + ], [ + sh:datatype xsd:decimal ; + sh:maxCount 1 ; + sh:path dcat:spatialResolutionInMeters ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:temporal ; + sh:severity sh:Violation + ], [ + sh:datatype xsd:duration ; + sh:maxCount 1 ; + sh:path dcat:temporalResolution ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:IRI ; + sh:path dcat:theme ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dct:title ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:type ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcat:version ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path adms:versionNotes ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path prov:wasGeneratedBy ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Dataset . + +:DateOrDateTimeDataType_Shape + a sh:NodeShape ; + rdfs:comment "Date time date disjunction shape checks that a datatype property receives a temporal value: date, dateTime, gYear or gYearMonth literal" ; + rdfs:label "Date time date disjunction" ; + sh:message "The values must be data typed as either xsd:date, xsd:dateTime, xsd:gYear or xsd:gYearMonth" ; + sh:or ([ + sh:datatype xsd:date + ] + [ + sh:datatype xsd:dateTime + ] + [ + sh:datatype xsd:gYear + ] + [ + sh:datatype xsd:gYearMonth + ] + ) . + +:DcatResource_Shape + a sh:NodeShape ; + rdfs:comment "the union of Catalog, Dataset and DataService" ; + rdfs:label "dcat:Resource" ; + sh:message "The node is either a Catalog, Dataset or a DataService" ; + sh:or ([ + sh:class dcat:Catalog + ] + [ + sh:class dcat:Dataset + ] + [ + sh:class dcat:DataService + ] + [ + sh:class dcat:DatasetSeries + ] + ) . + +:Distribution_Shape + a sh:NodeShape ; + rdfs:label "Distribution"@en ; + sh:property [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:accessService ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dcat:accessURL ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:IRI ; + sh:path dcatap:applicableLegislation; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcatap:availability ; + sh:severity sh:Violation + ], [ + sh:datatype xsd:decimal ; + sh:maxCount 1 ; + sh:path dcat:byteSize ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path spdx:checksum ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:compressFormat ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:description ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path foaf:page ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dcat:downloadURL ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:format ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path odrl:hasPolicy ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:language ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:license ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:conformsTo ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:mediaType ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:modified ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dcat:packageFormat ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:issued ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path dct:rights ; + sh:severity sh:Violation + ], [ + sh:datatype xsd:decimal ; + sh:maxCount 1 ; + sh:path dcat:spatialResolutionInMeters ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path adms:status ; + sh:severity sh:Violation + ], [ + sh:datatype xsd:duration ; + sh:maxCount 1 ; + sh:path dcat:temporalResolution ; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:Literal ; + sh:path dct:title ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Distribution . + +:Identifier_Shape + a sh:NodeShape ; + rdfs:label "Identifier"@en ; + sh:property [ + sh:maxCount 1 ; + sh:path skos:notation ; + sh:severity sh:Violation + ] ; + sh:targetClass adms:Identifier . + +:LicenceDocument_Shape + a sh:NodeShape ; + rdfs:label "Licence Document"@en ; + sh:property [ + sh:path dct:type ; + sh:severity sh:Violation + ] ; + sh:targetClass dct:LicenseDocument . + +:Location_Shape + a sh:NodeShape ; + rdfs:label "Location"@en ; + sh:property [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcat:bbox ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcat:centroid ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path lcon:geometry ; + sh:severity sh:Violation + ] ; + sh:targetClass dct:Location . + +:PeriodOfTime_Shape + a sh:NodeShape ; + rdfs:label "PeriodOfTime"@en ; + sh:property [ + sh:maxCount 1 ; + sh:path dcat:endDate ; + sh:severity sh:Violation ; + sh:shape :DateOrDateTimeDataType_Shape + ], [ + sh:maxCount 1 ; + sh:path time:hasBeginning ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path time:hasEnd ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:path dcat:startDate ; + sh:severity sh:Violation ; + sh:shape :DateOrDateTimeDataType_Shape + ] ; + sh:targetClass dct:PeriodOfTime . + +:Relationship_Shape + a sh:NodeShape ; + rdfs:label "Relationship"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dct:relation ; + sh:severity sh:Violation + ], [ + sh:minCount 1 ; + sh:path dcat:hadRole ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Relationship . + +:DatasetSeries_Shape + a sh:NodeShape ; + rdfs:label "Dataset Series"@en ; + sh:property [ + sh:minCount 1; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path [ sh:inversePath dcat:inSeries; ]; + sh:severity sh:Warning + ], [ + sh:nodeKind sh:IRI; + sh:path dcatap:applicableLegislation; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dcat:contactPoint; + sh:severity sh:Violation + ], [ + sh:minCount 1; + sh:nodeKind sh:Literal; + sh:path dct:description; + sh:severity sh:Violation + ], [ + sh:maxCount 1; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dct:accrualPeriodicity; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dct:spatial; + sh:severity sh:Violation + ], [ + sh:node :DateOrDateTimeDataType_Shape ; + sh:maxCount 1; + sh:nodeKind sh:Literal; + sh:path dct:modified; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dct:publisher ; + sh:severity sh:Violation + ], [ + sh:node :DateOrDateTimeDataType_Shape ; + sh:maxCount 1; + sh:nodeKind sh:Literal; + sh:path dct:issued; + sh:severity sh:Violation + ], [ + sh:nodeKind sh:BlankNodeOrIRI; + sh:path dct:temporal; + sh:severity sh:Violation + ], [ + sh:minCount 1; + sh:nodeKind sh:Literal; + sh:path dct:title; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:DatasetSeries . \ No newline at end of file diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/shapes_recommended.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/shapes_recommended.ttl new file mode 100644 index 00000000000..1764aee1546 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/eu-dcat-ap-3.0.0/shapes_recommended.ttl @@ -0,0 +1,336 @@ +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix : <http://data.europa.eu/r5r#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix cc: <http://creativecommons.org/ns#> . +@prefix dc: <http://purl.org/dc/elements/1.1/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lcon: <http://www.w3.org/ns/locn#> . +@prefix org: <http://www.w3.org/ns/org#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix odrl: <http://www.w3.org/ns/odrl/2/> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix schema: <http://schema.org/> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix spdx: <http://spdx.org/rdf/terms#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix dcatap: <http://data.europa.eu/r5r> . + +<http://data.europa.eu/r5r/shacl_shapes> + dcat:accessURL <https://joinup.ec.europa.eu/solution/dcat-application-profile-data-portals-europe/distribution/dcat-ap-200-shacl-shapes>; + dcat:downloadURL <https://github.com/SEMICeu/DCAT-AP/raw/cea5a96bb4a6f120c20b7a2b3fb4d86bcd725952/releases/2.0.0/Draft/dcat-ap_2.0.0_shacl_shapes.ttl> ; + dcatap:availability <http://data.europa.eu/r5r/stable> ; + dct:format <http://publications.europa.eu/resource/authority/file-type/RDF_TURTLE> ; + dct:conformsTo <https://www.w3.org/TR/shacl> ; + dct:creator [ + rdfs:seeAlso <https://www.linkedin.com/in/bert-van-nuffelen-a349634/> ; + org:memberOf <https://tenforce.com> ; + foaf:homepage <https://www.linkedin.com/in/bert-van-nuffelen-a349634/> ; + foaf:name "Bert Van Nuffelen" + ], [ + rdfs:seeAlso <https://www.ails.ece.ntua.gr/people/natasa> ; + org:memberOf <https://www.ails.ece.ntua.gr/> ; + foaf:homepage <https://www.ails.ece.ntua.gr/people/natasa> ; + foaf:name "Natasa Sofou" + ], [ + rdfs:seeAlso <http://eugeniu.costezki.ro#me> ; + org:memberOf <http://publications.europa.eu/resource/authority/corporate-body/PUBL> ; + foaf:homepage <http://costezki.ro> ; + foaf:name "Eugeniu Costetchi" + ], [ + rdfs:seeAlso <http://makxdekkers.com/#me> ; + org:memberOf <http://ami-consult.com/#id> ; + foaf:homepage <http://makxdekkers.com/> ; + foaf:name "Makx Dekkers" + ], [ + rdfs:seeAlso <http://nikosloutas.com/> ; + org:memberOf <http://www.pwc.com/gx/en/eu-institutions-services> ; + foaf:homepage <http://nikosloutas.com/> ; + foaf:name "Nikolaos Loutas" + ], [ + rdfs:seeAlso <http://www.deri.ie/users/vassilios-peristeras/> ; + org:memberOf <http://publications.europa.eu/resource/authority/corporate-body/COM> ; + foaf:homepage <http://www.deri.ie/users/vassilios-peristeras/> ; + foaf:name "Vassilios Peristeras" + ] ; + dct:license <https://creativecommons.org/licenses/by/4.0> ; + cc:attributionURL <http://ec.europa.eu/> ; + dct:modified "2021-12-01"^^xsd:date ; + dct:publisher <http://publications.europa.eu/resource/authority/corporate-body/DIGIT> ; + dct:relation <https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/dcat-application-profile-data-portals-europe/release/210> ; + dct:description "This document specifies the constraints on properties and classes expressed by DCAT-AP in SHACL."@en ; + dct:title "The constraints of DCAT Application Profile for Data Portals in Europe"@en ; + owl:versionInfo "2.1.1" ; + foaf:homepage <https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/dcat-application-profile-data-portals-europe/release/210> ; + foaf:maker [ + foaf:mbox <mailto:contact@semic.eu> ; + foaf:name "DCAT-AP Working Group" ; + foaf:page <https://github.com/SEMICeu/DCAT-AP>, <https://joinup.ec.europa.eu/node/64331> + ] . + + + +#------------------------------------------------------------------------- +# The shapes in this file cover all recommendations in DCAT-AP 2.1.1. +# +# +#------------------------------------------------------------------------- + +:Agent_Shape + a sh:NodeShape ; + rdfs:label "Agent"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dct:type ; + sh:severity sh:Warning + ] ; + sh:targetClass foaf:Agent . + +:CatalogRecord_Shape + a sh:NodeShape ; + rdfs:label "Catalog Record"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dct:conformsTo ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:issued ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path adms:status ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:CatalogRecord . + + +:Catalog_Shape + a sh:NodeShape ; + rdfs:label "Catalog"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dct:language ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:issued ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:license; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:spatial ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:modified ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:themeTaxonomy ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path foaf:homepage ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Catalog . + +:Catalog_Shape2 + a sh:NodeShape ; + rdfs:label "Catalog"@en ; + sh:or ( + [ + sh:path dcat:dataset ; + sh:minCount 1 ; + ] + [ + sh:path dcat:service ; + sh:minCount 1 ; + ] + ) ; + sh:severity sh:Warning; + sh:targetClass dcat:Catalog . + +:DataService_Shape + a sh:NodeShape ; + rdfs:label "Data Service"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dcat:servesDataset ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:endpointDescription ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:contactPoint ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:publisher ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:theme ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:conformsTo ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:keyword ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:DataService . + +:Dataset_Shape + a sh:NodeShape ; + rdfs:label "Dataset"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dcat:contactPoint ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:distribution ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:keyword ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:publisher ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:spatial ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:temporal ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:theme ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Dataset . + +:DatasetSeries_Shape + a sh:NodeShape ; + rdfs:label "Dataset"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dcat:contactPoint ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:publisher ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:DatasetSeries . + +:DateOrDateTimeDataType_Shape + a sh:NodeShape ; + rdfs:comment "Date time date disjunction shape checks that a datatype property receives a date or a dateTime literal" ; + rdfs:label "Date time date disjunction" ; + sh:message "The values must be data typed as either xsd:date or xsd:dateTime" ; + sh:or ([ + sh:datatype xsd:date + ] + [ + sh:datatype xsd:dateTime + ] + ) . + +:DcatResource_Shape + a sh:NodeShape ; + rdfs:comment "the union of Catalog, Dataset and DataService" ; + rdfs:label "dcat:Resource" ; + sh:message "The node is either a Catalog, Dataset or a DataService" ; + sh:or ([ + sh:class dcat:Catalog + ] + [ + sh:class dcat:Dataset + ] + [ + sh:class dcat:DataService + ] + [ + sh:class dcat:DatasetSeries + ] + ) . + +:Distribution_Shape + a sh:NodeShape ; + rdfs:label "Distribution"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dct:description ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcatap:availability ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:format ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dct:license ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Distribution . + +:LicenceDocument_Shape + a sh:NodeShape ; + rdfs:label "Licence Document"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dct:type ; + sh:severity sh:Warning + ] ; + sh:targetClass dct:LicenseDocument . + +:Location_Shape + a sh:NodeShape ; + rdfs:label "Location"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dcat:bbox ; + sh:severity sh:Warning + ], [ + sh:minCount 1 ; + sh:path dcat:centroid ; + sh:severity sh:Warning + ] ; + sh:targetClass dct:Location . + +:PeriodOfTime_Shape + a sh:NodeShape ; + rdfs:label "PeriodOfTime"@en ; + sh:property [ + sh:minCount 1 ; + sh:path dcat:endDate ; + sh:severity sh:Warning ; + ], [ + sh:minCount 1 ; + sh:path dcat:startDate ; + sh:severity sh:Warning ; + ] ; + sh:targetClass dct:PeriodOfTime . + diff --git a/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/geodcat-ap-2.0.1-SHACL.ttl b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/geodcat-ap-2.0.1-SHACL.ttl new file mode 100644 index 00000000000..2c281086575 --- /dev/null +++ b/services/src/test/resources/org/fao/geonet/api/records/formatters/shacl/geodcat-ap-2.0.1-SHACL.ttl @@ -0,0 +1,528 @@ +@prefix : <http://data.europa.eu/r5r#> . +@prefix adms: <http://www.w3.org/ns/adms#> . +@prefix bibo: <http://purl.org/ontology/bibo/> . +@prefix dcat: <http://www.w3.org/ns/dcat#> . +@prefix dcatap: <http://data.europa.eu/r5r/> . +@prefix dct: <http://purl.org/dc/terms/> . +@prefix dqv: <http://www.w3.org/ns/dqv#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix geodcat: <http://data.europa.eu/930/> . +@prefix locn: <http://www.w3.org/ns/locn#> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix prov: <http://www.w3.org/ns/prov#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix sdmx-attribute: <http://purl.org/linked-data/sdmx/2009/attribute#> . +@prefix sh: <http://www.w3.org/ns/shacl#> . +@prefix skos: <http://www.w3.org/2004/02/skos/core#> . +@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + + +<http://data.europa.eu/930/shacl> a owl:Ontology , adms:Asset ; + owl:imports <https://raw.githubusercontent.com/SEMICeu/DCAT-AP/master/releases/2.0.1/dcat-ap_2.0.1_shacl_shapes.ttl> ; + owl:imports <https://raw.githubusercontent.com/SEMICeu/DCAT-AP/master/releases/2.0.1/dcat-ap_2.0.1_shacl_deprecateduris.ttl> ; + owl:imports <https://raw.githubusercontent.com/SEMICeu/DCAT-AP/master/releases/2.0.1/dcat-ap_2.0.1_shacl_mdr-vocabularies.shape.ttl> ; + owl:imports <https://semiceu.github.io/GeoDCAT-AP/releases/2.0.0/geodcat-ap.ttl> ; + owl:imports <http://www.w3.org/ns/dqv.ttl> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/SpatialDataServiceCategory.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ConditionsApplyingToAccessAndUse/ConditionsApplyingToAccessAndUse.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/DegreeOfConformity/DegreeOfConformity.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/PriorityDataset.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ProtocolValue/ProtocolValue.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/LimitationsOnPublicAccess.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/OnLineDescriptionCode/OnLineDescriptionCode.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/QualityOfServiceCriteria/QualityOfServiceCriteria.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ResourceType/ResourceType.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/ResponsiblePartyRole/ResponsiblePartyRole.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType/SpatialDataServiceType.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/SpatialScope.en.rdf> ; + owl:imports <http://inspire.ec.europa.eu/metadata-codelist/TopicCategory/TopicCategory.en.rdf> ; + owl:versionIRI <http://data.europa.eu/930/2.0.0/shacl> ; + adms:status <http://publications.europa.eu/resource/dataset/dataset-status/DEVELOP> ; + dcatap:availability dcatap:stable ; + dct:conformsTo <https://www.w3.org/TR/shacl> ; + rdfs:isDefinedBy <https://semiceu.github.io/GeoDCAT-AP/releases/2.0.0/> ; + dct:license <https://creativecommons.org/licenses/by/4.0> ; + dct:created "2020-12-23"^^xsd:date ; + dct:issued "2021-01-04"^^xsd:date ; + dct:modified "2021-04-12"^^xsd:date ; + dct:dateCopyrighted "2020"^^xsd:gYear ; + dct:title "The constraints of GeoDCAT Application Profile for Data Portals in Europe"@en ; + owl:versionInfo "2.0.0" ; + dct:description "This document specifies the constraints on properties and classes expressed by GeoDCAT-AP in SHACL."@en ; + bibo:editor [ + a foaf:Person ; + owl:sameAs <https://andrea-perego.name/foaf/#me> ; + owl:sameAs <https://orcid.org/0000-0001-9300-2694> ; + foaf:name "Andrea Perego" + ] ; + dct:creator [ + a foaf:Group ; + foaf:name "GeoDCAT-AP Working Group" ; + foaf:page <https://github.com/SEMICeu/GeoDCAT-AP> + ] ; + dct:publisher <http://publications.europa.eu/resource/authority/corporate-body/COM> ; + dct:rightsHolder <http://publications.europa.eu/resource/authority/corporate-body/EURUN> ; + dcat:distribution [ a adms:AssetDistribution ; + dct:format <http://publications.europa.eu/resource/authority/file-type/RDF_TURTLE>, + <http://www.w3.org/ns/formats/data/Turtle> ; + dct:title "SHACL (Turtle)"@en ; + dcat:downloadURL <https://semiceu.github.io/GeoDCAT-AP/releases/2.0.0/geodcat-ap.shacl.ttl> ; + dcat:mediaType "text/turtle"^^dct:IMT + ] ; +. + +#------------------------------------------------------------------------- +# The shapes in this file complement the DCAT-AP ones to cover all classes +# in GeoDCAT-AP 2.0.0. +#------------------------------------------------------------------------- + +geodcat:Activity_Shape + a sh:NodeShape ; + sh:name "Activity"@en ; + sh:property [ + sh:class prov:Entity ; + sh:minCount 1 ; + sh:path prov:generated ; + sh:severity sh:Violation + ], [ + sh:class prov:Association ; + sh:minCount 1 ; + sh:path prov:qualifiedAssociation ; + sh:severity sh:Violation + ] ; + sh:targetClass prov:Activity . + +geodcat:Address_Agent_Shape + a sh:NodeShape ; + sh:name "Address (Agent)"@en ; + sh:property [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:adminUnitL2 ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:postName ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:adminUnitL1 ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:postCode ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path locn:thoroughfare ; + sh:severity sh:Violation + ] ; + sh:targetClass locn:Address . + +geodcat:Address_Kind_Shape + a sh:NodeShape ; + sh:name "Address (Kind)"@en ; + sh:property [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path vcard:region ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path vcard:locality ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path vcard:country-name ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path vcard:postal-code ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path vcard:street-address ; + sh:severity sh:Violation + ] ; + sh:targetClass vcard:Address . + +geodcat:Attribution_Shape + a sh:NodeShape ; + sh:name "Attribution"@en ; + sh:property [ + sh:class prov:Agent ; + sh:minCount 1 ; + sh:path prov:agent ; + sh:severity sh:Violation + ], [ + sh:class dcat:Role ; + sh:minCount 1 ; + sh:path dcat:hadRole ; + sh:severity sh:Violation + ] ; + sh:targetClass prov:Attribution . + +:Catalog_Shape + a sh:NodeShape ; + sh:name "Catalog"@en ; + sh:property [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:created ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Catalog . + +:CatalogRecord_Shape + a sh:NodeShape ; + sh:name "Catalog"@en ; + sh:property [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:created ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:CatalogRecord . + +:CategoryScheme_Shape + a sh:NodeShape ; + sh:name "Category Scheme"@en ; + sh:property [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:created ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:issued ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:modified ; + sh:severity sh:Violation + ] ; + sh:targetClass skos:ConceptScheme . + +:DataService_Shape + a sh:NodeShape ; + sh:name "Data Service"@en ; + sh:property [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:created ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:issued ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:modified ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:DataService . + +:Dataset_Shape + a sh:NodeShape ; + sh:name "Dataset"@en ; + sh:property [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:created ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Dataset . + +geodcat:QualityMeasurement_Shape + a sh:NodeShape ; + sh:name "Quality Measurement"@en ; + sh:property [ + sh:class dqv:Metric ; + sh:maxCount 1 ; + sh:path dqv:isMeasurementOf ; + sh:severity sh:Violation + ], [ + sh:class skos:Concept ; + sh:maxCount 1 ; + sh:path sdmx-attribute:unitMeasure ; + sh:severity sh:Violation + ], [ + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dqv:value ; + sh:severity sh:Violation + ] ; + sh:targetClass dqv:QualityMeasurement . + +geodcat:Standard_Shape + a sh:NodeShape ; + sh:name "Standard"@en ; + sh:property [ + sh:maxCount 1 ; + sh:node :DateOrDateTimeDataType_Shape ; + sh:path dct:issued ; + sh:severity sh:Violation + ] ; + sh:targetClass dct:Standard . + +#------------------------------------------------------------------------- +# Concepts from additional controlled vocabularies used in GeoDCAT-AP. +#------------------------------------------------------------------------- + +# Spatial representation type (ISO 19115) + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> a skos:ConceptScheme ; + dct:title "Spatial representation types"@en ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType/vector> a skos:Concept ; + skos:prefLabel "Vector"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType/grid> a skos:Concept ; + skos:prefLabel "Grid"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType/textTable> a skos:Concept ; + skos:prefLabel "Text table"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType/tin> a skos:Concept ; + skos:prefLabel "TIN"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType/stereoModel> a skos:Concept ; + skos:prefLabel "Stereo model"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType/video> a skos:Concept ; + skos:prefLabel "Video"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/SpatialRepresentationType> ; +. + +# Maintenance frequency (ISO 19115) + +<http://inspire.ec.europa.eu/metadata-codelist/MaintenanceFrequency> a skos:ConceptScheme ; + dct:title "Maintenance frequencies"@en ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/MaintenanceFrequency/asNeeded> a skos:Concept ; + skos:prefLabel "As needed"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/MaintenanceFrequency> ; +. + +<http://inspire.ec.europa.eu/metadata-codelist/MaintenanceFrequency/notPlanned> a skos:Concept ; + skos:prefLabel "Not planned"@en ; + skos:inScheme <http://inspire.ec.europa.eu/metadata-codelist/MaintenanceFrequency> ; +. + +# INSPIRE Glossary + +<http://inspire.ec.europa.eu/glossary> a skos:ConceptScheme ; + dct:title "INSPIRE Glossary"@en ; +. + +<http://inspire.ec.europa.eu/glossary/SpatialReferenceSystem> a skos:Concept ; + skos:prefLabel "Spatial reference system"@en ; + skos:inScheme <http://inspire.ec.europa.eu/glossary> ; +. + +<http://inspire.ec.europa.eu/glossary/TemporalReferenceSystem> a skos:Concept ; + skos:prefLabel "Temporal reference system"@en ; + skos:inScheme <http://inspire.ec.europa.eu/glossary> ; +. + +# INSPIRE Themes + +<http://inspire.ec.europa.eu/theme> a skos:ConceptScheme ; + dct:title "INSPIRE Themes"@en ; +. + +<http://inspire.ec.europa.eu/theme/ad> a skos:Concept ; + skos:prefLabel "Addresses"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/au> a skos:Concept ; + skos:prefLabel "Administrative units"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/af> a skos:Concept ; + skos:prefLabel "Agricultural and aquaculture facilities"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/am> a skos:Concept ; + skos:prefLabel "Area management/restriction/regulation zones and reporting units"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/ac> a skos:Concept ; + skos:prefLabel "Atmospheric conditions"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/br> a skos:Concept ; + skos:prefLabel "Bio-geographical regions"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/bu> a skos:Concept ; + skos:prefLabel "Buildings"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/cp> a skos:Concept ; + skos:prefLabel "Cadastral parcels"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/rs> a skos:Concept ; + skos:prefLabel "Coordinate reference systems"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/el> a skos:Concept ; + skos:prefLabel "Elevation"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/er> a skos:Concept ; + skos:prefLabel "Energy resources"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/ef> a skos:Concept ; + skos:prefLabel "Environmental monitoring facilities"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/gg> a skos:Concept ; + skos:prefLabel "Geographical grid systems"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/gn> a skos:Concept ; + skos:prefLabel "Geographical names"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/ge> a skos:Concept ; + skos:prefLabel "Geology"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/hb> a skos:Concept ; + skos:prefLabel "Habitats and biotopes"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/hh> a skos:Concept ; + skos:prefLabel "Human health and safety"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/hy> a skos:Concept ; + skos:prefLabel "Hydrography"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/lc> a skos:Concept ; + skos:prefLabel "Land cover"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/lu> a skos:Concept ; + skos:prefLabel "Land use"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/mf> a skos:Concept ; + skos:prefLabel "Meteorological geographical features"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/mr> a skos:Concept ; + skos:prefLabel "Mineral resources"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/nz> a skos:Concept ; + skos:prefLabel "Natural risk zones"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/of> a skos:Concept ; + skos:prefLabel "Oceanographic geographical features"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/oi> a skos:Concept ; + skos:prefLabel "Orthoimagery"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/pd> a skos:Concept ; + skos:prefLabel "Population distribution — demography"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/pf> a skos:Concept ; + skos:prefLabel "Production and industrial facilities"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/ps> a skos:Concept ; + skos:prefLabel "Protected sites"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/sr> a skos:Concept ; + skos:prefLabel "Sea regions"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/so> a skos:Concept ; + skos:prefLabel "Soil"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/sd> a skos:Concept ; + skos:prefLabel "Species distribution"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/su> a skos:Concept ; + skos:prefLabel "Statistical units"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/tn> a skos:Concept ; + skos:prefLabel "Transport networks"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. + +<http://inspire.ec.europa.eu/theme/us> a skos:Concept ; + skos:prefLabel "Utility and governmental services"@en ; + skos:inScheme <http://inspire.ec.europa.eu/theme> ; +. diff --git a/web-ui/src/main/resources/WEB-INF/classes/web-ui-wro-sources.xml b/web-ui/src/main/resources/WEB-INF/classes/web-ui-wro-sources.xml index 3708d2bbf22..b160fe4f051 100644 --- a/web-ui/src/main/resources/WEB-INF/classes/web-ui-wro-sources.xml +++ b/web-ui/src/main/resources/WEB-INF/classes/web-ui-wro-sources.xml @@ -83,6 +83,26 @@ <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.js" minimize="true"/> <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fr.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.nl.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.az.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ca.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cs.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cy.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.da.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.de.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.es.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fi.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.hy.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.is.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.it.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ka.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ko.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.pt.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ro.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ru.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sk.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sv.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.uk.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.zh.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/bootstrap-table/dist/bootstrap-table.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/bootstrap-table/dist/bootstrap-table-locale-all.min.js" @@ -100,7 +120,6 @@ <jsSource webappPath="/catalog/lib/recaptcha/angular-recaptcha.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/geohash.js"/> <jsSource webappPath="/catalog/lib/xml2json/xml2json.min.js" minimize="false"/> - <jsSource webappPath="/catalog/lib/dom-to-image/dom-to-image.min.js" minimize="false"/> </declarative> <!-- Same as previous + olcesium --> <declarative name="lib3d" pathOnDisk="web-ui/src/main/resources"> @@ -157,6 +176,26 @@ <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.js"/> <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fr.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.nl.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.az.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ca.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cs.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cy.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.da.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.de.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.es.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fi.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.hy.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.is.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.it.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ka.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ko.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.pt.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ro.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ru.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sk.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sv.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.uk.min.js" minimize="false"/> + <jsSource webappPath="/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.zh.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/bootstrap-table/dist/bootstrap-table.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/bootstrap-table/dist/bootstrap-table-locale-all.min.js" @@ -174,6 +213,5 @@ <jsSource webappPath="/catalog/lib/recaptcha/angular-recaptcha.min.js" minimize="false"/> <jsSource webappPath="/catalog/lib/geohash.js"/> <jsSource webappPath="/catalog/lib/xml2json/xml2json.min.js" minimize="false"/> - <jsSource webappPath="/catalog/lib/dom-to-image/dom-to-image.min.js" minimize="false"/> </declarative> </sources> diff --git a/web-ui/src/main/resources/catalog/components/admin/uiconfig/partials/uiconfig.html b/web-ui/src/main/resources/catalog/components/admin/uiconfig/partials/uiconfig.html index e4c6199680b..132fc2c5b36 100644 --- a/web-ui/src/main/resources/catalog/components/admin/uiconfig/partials/uiconfig.html +++ b/web-ui/src/main/resources/catalog/components/admin/uiconfig/partials/uiconfig.html @@ -3,14 +3,12 @@ id="gn-uiconfig-customize" class="col-lg-6 col-lg-offset-6 gn-nopadding-right height-70-px" > - <div class="pull-right"> - <label class="d-block" data-translate="">chooseOptionsToCustomize</label> - <select - class="form-control" - data-ng-options="o.label group by o.group for o in configOptions" - data-ng-model="optionsToAdd" - ></select> - </div> + <label class="d-block" data-translate="">chooseOptionsToCustomize</label> + <select + class="form-control" + data-ng-options="o.label group by o.group for o in configOptions" + data-ng-model="optionsToAdd" + ></select> </div> <p class="help-block" data-translate="">ui/config-help</p> diff --git a/web-ui/src/main/resources/catalog/components/common/alert/AlertDirective.js b/web-ui/src/main/resources/catalog/components/common/alert/AlertDirective.js index 449f8563f6d..f1406c99c4f 100644 --- a/web-ui/src/main/resources/catalog/components/common/alert/AlertDirective.js +++ b/web-ui/src/main/resources/catalog/components/common/alert/AlertDirective.js @@ -69,6 +69,12 @@ } } }; + + this.closeAlerts = function () { + if (gnAlertValue.length) { + gnAlertValue.splice(0, gnAlertValue.length); + } + }; } ]); diff --git a/web-ui/src/main/resources/catalog/components/common/map/mapService.js b/web-ui/src/main/resources/catalog/components/common/map/mapService.js index 9c6ebc03599..ab9420fb2a6 100644 --- a/web-ui/src/main/resources/catalog/components/common/map/mapService.js +++ b/web-ui/src/main/resources/catalog/components/common/map/mapService.js @@ -747,10 +747,10 @@ extent[1] + ", " + "East " + - extent[0] + + extent[2] + ", " + "West " + - extent[2]; + extent[0]; if (location) { dc += ". " + location; } @@ -1390,7 +1390,7 @@ } else { gnAlertService.addAlert({ msg: $translate.instant("layerCRSNotFound"), - delay: 5000, + delay: 5, type: "warning" }); } @@ -1400,7 +1400,7 @@ msg: $translate.instant("layerNotAvailableInMapProj", { proj: mapProjection }), - delay: 5000, + delay: 5, type: "warning" }); } @@ -1981,7 +1981,7 @@ type: "wmts", url: encodeURIComponent(url) }), - delay: 20000, + delay: 20, type: "warning" }); var o = { @@ -2079,7 +2079,7 @@ type: "wfs", url: encodeURIComponent(url) }), - delay: 20000, + delay: 20, type: "warning" }); var o = { @@ -2159,7 +2159,7 @@ } catch (e) { gnAlertService.addAlert({ msg: $translate.instant("wmtsLayerNoUsableMatrixSet"), - delay: 5000, + delay: 5, type: "danger" }); return; diff --git a/web-ui/src/main/resources/catalog/components/doi/DoiDirective.js b/web-ui/src/main/resources/catalog/components/doi/DoiDirective.js index 14a49dad048..364218dd450 100644 --- a/web-ui/src/main/resources/catalog/components/doi/DoiDirective.js +++ b/web-ui/src/main/resources/catalog/components/doi/DoiDirective.js @@ -44,10 +44,24 @@ scope.response = {}; scope.isUpdate = angular.isDefined(scope.doiUrl); + scope.doiServers = []; + scope.selectedDoiServer = null; + + gnDoiService.getDoiServersForMetadata(scope.uuid).then(function (response) { + scope.doiServers = response.data; + if (scope.doiServers.length > 0) { + scope.selectedDoiServer = scope.doiServers[0].id; + } + }); + + scope.updateDoiServer = function () { + scope.response = {}; + }; + scope.check = function () { scope.response = {}; scope.response["check"] = null; - return gnDoiService.check(scope.uuid).then( + return gnDoiService.check(scope.uuid, scope.selectedDoiServer).then( function (r) { scope.response["check"] = r; scope.isUpdate = angular.isDefined(scope.doiUrl); @@ -60,7 +74,7 @@ }; scope.create = function () { - return gnDoiService.create(scope.uuid).then( + return gnDoiService.create(scope.uuid, scope.selectedDoiServer).then( function (r) { scope.response["create"] = r; delete scope.response["check"]; diff --git a/web-ui/src/main/resources/catalog/components/doi/DoiService.js b/web-ui/src/main/resources/catalog/components/doi/DoiService.js index e21427f8c31..cee4d27b3ff 100644 --- a/web-ui/src/main/resources/catalog/components/doi/DoiService.js +++ b/web-ui/src/main/resources/catalog/components/doi/DoiService.js @@ -33,11 +33,39 @@ "$http", "gnConfig", function ($http, gnConfig) { - function check(id) { - return $http.get("../api/records/" + id + "/doi/checkPreConditions"); + /** + * Returns a promise to validate a metadata to be published on a DOI server. + * + * @param id + * @param doiServerId + * @returns {*} + */ + function check(id, doiServerId) { + return $http.get( + "../api/records/" + id + "/doi/" + doiServerId + "/checkPreConditions" + ); } - function create(id) { - return $http.put("../api/records/" + id + "/doi"); + + /** + * Returns a promise to publish a metadata on a DOI server. + * + * @param id + * @param doiServerId + * @returns {*} + */ + function create(id, doiServerId) { + return $http.put("../api/records/" + id + "/doi/" + doiServerId); + } + + /** + * Returns a promise to retrieve the list of DOI servers + * where a metadata can be published. + * + * @param metadataId + * @returns {*} + */ + function getDoiServersForMetadata(metadataId) { + return $http.get("../api/doiservers/metadata/" + metadataId); } function isDoiApplicableForMetadata(md) { @@ -73,7 +101,8 @@ check: check, create: create, isDoiApplicableForMetadata: isDoiApplicableForMetadata, - canPublishDoiForResource: canPublishDoiForResource + canPublishDoiForResource: canPublishDoiForResource, + getDoiServersForMetadata: getDoiServersForMetadata }; } ]); diff --git a/web-ui/src/main/resources/catalog/components/doi/partials/doiwidget.html b/web-ui/src/main/resources/catalog/components/doi/partials/doiwidget.html index c1a6a8dc3bc..2edf7718127 100644 --- a/web-ui/src/main/resources/catalog/components/doi/partials/doiwidget.html +++ b/web-ui/src/main/resources/catalog/components/doi/partials/doiwidget.html @@ -5,6 +5,16 @@ <h2 data-translate="" data-ng-hide="xsMode">createDoiForRecord</h2> </div> <div class="btn-group" data-ng-class="{'btn-group-xs': xsMode}" role="group"> + <select + class="form-control" + data-ng-change="updateDoiServer()" + data-ng-show="doiServers.length > 1" + data-ng-model="selectedDoiServer" + data-ng-options="s.id as s.name for s in doiServers" + > + > + </select> + <button class="btn btn-default" data-gn-click-and-spin="check()" diff --git a/web-ui/src/main/resources/catalog/components/edit/bounding/partials/boundingpolygon.html b/web-ui/src/main/resources/catalog/components/edit/bounding/partials/boundingpolygon.html index 6d6d612364b..7ca025f75a9 100644 --- a/web-ui/src/main/resources/catalog/components/edit/bounding/partials/boundingpolygon.html +++ b/web-ui/src/main/resources/catalog/components/edit/bounding/partials/boundingpolygon.html @@ -90,7 +90,7 @@ placeholder="{{'inputGeometryText' | translate}}" ng-change="ctrl.handleInputChange()" ng-readonly="ctrl.readOnly" - /> + ></textarea> <small class="text-danger" ng-show="ctrl.fromTextInput && ctrl.parseError"> {{ 'inputGeometryIsInvalid' | translate}} {{ctrl.parseError}}</small > diff --git a/web-ui/src/main/resources/catalog/components/edit/fieldduration/partials/fieldduration.html b/web-ui/src/main/resources/catalog/components/edit/fieldduration/partials/fieldduration.html index e7d5985610e..de4e89fce8a 100644 --- a/web-ui/src/main/resources/catalog/components/edit/fieldduration/partials/fieldduration.html +++ b/web-ui/src/main/resources/catalog/components/edit/fieldduration/partials/fieldduration.html @@ -1,4 +1,4 @@ -<span data-ng-class="required ? 'gn-required' : ''"> +<span data-ng-class="required == 'true' ? 'gn-required' : ''"> <div class="" data-ng-show="isDisabled"> <span data-ng-show="sign">- </span> <span data-ng-show="years != 0">{{years}} {{'year(s)' | translate}} </span> diff --git a/web-ui/src/main/resources/catalog/components/edit/geopublisher/GeoPublisherDirective.js b/web-ui/src/main/resources/catalog/components/edit/geopublisher/GeoPublisherDirective.js index c5aed1fb7ba..34a061b3b04 100644 --- a/web-ui/src/main/resources/catalog/components/edit/geopublisher/GeoPublisherDirective.js +++ b/web-ui/src/main/resources/catalog/components/edit/geopublisher/GeoPublisherDirective.js @@ -194,16 +194,16 @@ gnMap .addWmsFromScratch(map, scope.gsNode.wmsurl, scope.layerName, false) .then( - function (o) { - if (o.layer) { - gnMap.zoomLayerToExtent(o.layer, map); - scope.layer = o.layer; + function (layer) { + if (layer) { + gnMap.zoomLayerToExtent(layer, map); + scope.layer = layer; } }, - function (o) { - if (o.layer) { - gnMap.zoomLayerToExtent(o.layer, map); - scope.layer = o.layer; + function (layer) { + if (layer) { + gnMap.zoomLayerToExtent(layer, map); + scope.layer = layer; } } ); @@ -218,7 +218,12 @@ scope.$watch("gsNode", function (n, o) { if (n != o) { scope.checkNode(scope.gsNode.id); - scope.hasStyler = !angular.isArray(scope.gsNode.stylerurl); + scope.hasStyler = scope.gsNode.stylerurl !== ""; + } + }); + scope.$watch("layerName", function (n, o) { + if (n != o) { + scope.checkNode(scope.gsNode.id); } }); @@ -307,7 +312,6 @@ scope.hidden = false; } scope.mapId = "map-geopublisher"; - // FIXME: only one publisher in a page ? scope.ref = r.ref; scope.refParent = r.refParent; scope.name = r.name; @@ -323,14 +327,17 @@ } // Build layer name based on file name - scope.layerName = r.name.replace(/.zip$|.gpkg$|.tif$|.tiff$|.ecw$/, ""); - scope.wmsLayerName = scope.layerName; + scope.layerName = r.name + .split("/") + .pop() + .replace(/.zip$|.gpkg$|.tif$|.tiff$|.ecw$/, ""); if (scope.layerName.match("^jdbc")) { scope.wmsLayerName = scope.layerName.split("#")[1]; - } else if (scope.layerName.match("^file")) { - scope.wmsLayerName = scope.layerName - .replace(/.*\//, "") - .replace(/.zip$|.gpkg$|.tif$|.tiff$|.ecw$/, ""); + } else { + scope.wmsLayerName = + (scope.gsNode.namespacePrefix !== "" + ? scope.gsNode.namespacePrefix + ":" + : "") + scope.layerName; } }; } diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js index 67fefe6b30f..b08df082594 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js @@ -259,8 +259,7 @@ } function guessContentType() { - // We may support JSON at some point ? - return "application/xml"; + return "application/xml,application/json,text/html"; } function getProperties(doc, url) { @@ -268,6 +267,7 @@ if (angular.isObject(doc)) { // JSON doc + // We may support JSON at some point ? } else if (doc.startsWith("<?xml")) { // XML - Support of ISO19139, ISO19110 and ISO19115-3 try { diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcService.js b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcService.js index 0d9a1fe8329..7755bcee53e 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcService.js +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcService.js @@ -932,7 +932,13 @@ function ($http) { return { search: function (url, prefix, query) { - return $http.get(url + "?prefix=" + prefix + "&query=" + query); + return $http.get( + url + + "?prefix=" + + prefix + + "&query=" + + query.replaceAll("https://doi.org/", "") + ); } }; } diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/doisearchpanel.html b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/doisearchpanel.html index 71799b9652e..35e33c568f9 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/doisearchpanel.html +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/doisearchpanel.html @@ -17,6 +17,7 @@ data-ng-model-options="{ debounce: 1000 }" data-ng-readonly="isSearching" type="text" + title="{{'selectDOIResource' | translate}} - {{doiQueryPattern}}" autocomplete="off" placeholder="{{'anyPlaceHolder' | translate}}" aria-label="{{'anyPlaceHolder' | translate}}" diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkToMd.html b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkToMd.html index d4cd3f89131..71bd10acdaa 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkToMd.html +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkToMd.html @@ -62,7 +62,8 @@ ng-disabled="!canEnableLinkButton(selectRecords)" > <i class="fa gn-icon-{{mode}}"></i> - <i class="icon-external-link"></i>  {{btn.label}} + <i class="icon-external-link"></i>  {{btn.label || ('saveLinkToSibling' | + translate)}} </button> <div data-gn-need-help="linking-records" class="pull-right"></div> </div> diff --git a/web-ui/src/main/resources/catalog/components/edit/validationreport/partials/validationreport.html b/web-ui/src/main/resources/catalog/components/edit/validationreport/partials/validationreport.html index cd08f145494..5b144314137 100644 --- a/web-ui/src/main/resources/catalog/components/edit/validationreport/partials/validationreport.html +++ b/web-ui/src/main/resources/catalog/components/edit/validationreport/partials/validationreport.html @@ -23,26 +23,30 @@ <button type="button" class="btn btn-default btn-xs" - data-ng-class="showSuccess ? 'active' : ''" + data-ng-class="showSuccess ? 'active' : 'inactive'" data-ng-click="toggleShowSuccess();$event.stopPropagation();" data-ng-show="hasSuccess" data-toggle="tooltip" data-placement="top" - title="{{'showHideSuccess' | translate}}" + data-ng-attr-title="{{showSuccess ? ('hideSuccess' | translate): ('showSuccess' | translate)}}" > - <span class="fa fa-thumbs-up text-success" aria-hidden="true"></span> + <span class="text-success" aria-hidden="true" + >{{'validationSuccessLabel' | translate}}</span + > </button> <button type="button" class="btn btn-default btn-xs" - data-ng-class="showErrors ? 'active' : ''" + data-ng-class="showErrors ? 'active' : 'inactive'" data-ng-click="toggleShowErrors();$event.stopPropagation();" data-ng-show="hasErrors" data-toggle="tooltip" data-placement="top" - title="{{'showHideErrors' | translate}}" + data-ng-attr-title="{{showErrors ? ('hideErrors' | translate): ('showErrors' | translate)}}" > - <span class="fa fa-thumbs-down text-danger" aria-hidden="true"></span> + <span class="text-danger" aria-hidden="true" + >{{'validationErrorLabel' | translate}}</span + > </button> </div> </div> @@ -54,7 +58,67 @@ data-ng-repeat="type in ruleTypes" data-ng-class="'schematron-result-list-' + labelImportanceClass(type)" > + <!-- No success or failed validation rules to display --> + <div + data-ng-if="(type.error == 0 || type.error === '?') && (type.success == 0 || type.success === '?')" + class="panel-heading clearfix" + > + <div class="col-md-9"> + <h2 class="gn-schematron-title"> + <span data-ng-if="type.schematronVerificationError"> + <i class="fa fa-exclamation-triangle fa-fw text-danger"></i> </span + >{{(type.label || type.id) | translate}} + </h2> + </div> + + <div + class="col-md-3 gn-nopadding-right" + data-ng-if="!type.schematronVerificationError" + > + <span + class="label pull-right col-md-12" + data-ng-class="labelImportanceClass(type)" + data-ng-if="type.total === '?'" + > + <ng-pluralize + count="type.error" + when="{'0': '0 ' + ('error' | translate), + '1': '1 ' + ('error' | translate), + 'other': '{} ' + ('errors' | translate)}" + > + </ng-pluralize> + </span> + <span + class="label pull-right label-success gn-margin-bottom-sm col-md-12" + data-ng-if="type.total !== '?' && type.success !== '?'" + > + <ng-pluralize + count="type.success" + when="{'0': '0 ' + ('success' | translate), + '1': '1 ' + ('success' | translate), + 'other': '{} ' + ('successes' | translate)}" + > + </ng-pluralize> + </span> + <span + class="label pull-right gn-margin-bottom-sm col-md-12" + data-ng-class="labelImportanceClass(type)" + data-ng-if="type.total !== '?' && type.error !== '?'" + > + <ng-pluralize + count="type.error" + when="{'0': '0 ' + ('error' | translate), + '1': '1 ' + ('error' | translate), + 'other': '{} ' + ('errors' | translate)}" + > + </ng-pluralize> + </span> + </div> + </div> + + <!-- Success or failed validation rules to display --> <div + data-ng-if="(type.error != 0 && type.error !== '?') || (type.success != 0 && type.success !== '?')" data-gn-slide-toggle="{{initialSectionsClosed}}" class="panel-heading clearfix" > @@ -70,7 +134,7 @@ <h2 class="gn-schematron-title"> data-ng-if="!type.schematronVerificationError" > <span - class="label pull-right" + class="label pull-right col-md-12" data-ng-class="labelImportanceClass(type)" data-ng-if="type.total === '?'" > @@ -83,11 +147,30 @@ <h2 class="gn-schematron-title"> </ng-pluralize> </span> <span - class="label pull-right" + class="label pull-right label-success gn-margin-bottom-sm col-md-12" + data-ng-if="type.total !== '?' && type.success !== '?'" + > + <ng-pluralize + count="type.success" + when="{'0': '0 ' + ('success' | translate), + '1': '1 ' + ('success' | translate), + 'other': '{} ' + ('successes' | translate)}" + > + </ng-pluralize> + </span> + <span + class="label pull-right gn-margin-bottom-sm col-md-12" data-ng-class="labelImportanceClass(type)" - data-ng-if="type.total !== '?'" - >{{type.success}} / {{type.total}}</span + data-ng-if="type.total !== '?' && type.error !== '?'" > + <ng-pluralize + count="type.error" + when="{'0': '0 ' + ('error' | translate), + '1': '1 ' + ('error' | translate), + 'other': '{} ' + ('errors' | translate)}" + > + </ng-pluralize> + </span> </div> <div class="col-md-3 gn-nopadding-right" @@ -107,7 +190,10 @@ <h2 class="gn-schematron-title"> </ul> </div> <div class="panel-body" data-ng-if="!type.schematronVerificationError"> - <ul class="list-group" data-ng-repeat="pattern in type.patterns.pattern"> + <ul + class="list-group" + data-ng-repeat="pattern in type.patterns.pattern | orderBy: 'type'" + > <li class="list-group-item" data-ng-repeat="rule in pattern.rules.rule" diff --git a/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet-temporalrange.html b/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet-temporalrange.html index 02cf7c2e574..0bcc837be43 100644 --- a/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet-temporalrange.html +++ b/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet-temporalrange.html @@ -12,16 +12,18 @@ class="input-sm form-control" data-ng-model="range.from" data-ng-model-options="{debounce: 500}" + autocomplete="off" name="start" /> <span class="input-group-addon"> - <icon class="fa fa-fw fa-chevron-right" /> + <icon class="fa fa-fw fa-chevron-right"></icon> </span> <input type="text" class="input-sm form-control" data-ng-model="range.to" data-ng-model-options="{debounce: 500}" + autocomplete="off" name="end" /> <span class="input-group-btn"> @@ -30,14 +32,14 @@ data-ng-click="reset()" title="{{'reset' | translate}}" > - <icon class="fa fa-fw fa-times" /> + <icon class="fa fa-fw fa-times"></icon> </button> <button class="btn btn-default" data-ng-click="filter()" title="{{'apply' | translate}}" > - <icon class="fa fa-fw fa-filter" /> + <icon class="fa fa-fw fa-filter"></icon> </button> </span> </div> diff --git a/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet.html b/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet.html index fc81d1c4878..51963f2f847 100644 --- a/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet.html +++ b/web-ui/src/main/resources/catalog/components/elasticsearch/directives/partials/facet.html @@ -33,7 +33,7 @@ ></span> <span class="gn-facet-label flex-shrink text-ellipsis"> {{::ctrl.item.value | facetTranslator: (ctrl.facet.meta && ctrl.facet.meta.field) - || ctrl.facet.key | capitalize}} + || ctrl.facet.key}} </span> <span ng-if="ctrl.item.count" diff --git a/web-ui/src/main/resources/catalog/components/history/GnHistoryDirective.js b/web-ui/src/main/resources/catalog/components/history/GnHistoryDirective.js index df5c81d2dbc..dbd0f27688b 100644 --- a/web-ui/src/main/resources/catalog/components/history/GnHistoryDirective.js +++ b/web-ui/src/main/resources/catalog/components/history/GnHistoryDirective.js @@ -58,7 +58,10 @@ if (gnConfig["metadata.workflow.enable"]) { types.workflow = true; } - types.task = true; + // Currently the only task is DOI + if (gnConfig["system.publication.doi.doienabled"]) { + types.task = true; + } types.event = true; scope.filter = { @@ -69,6 +72,10 @@ }; }); + scope.getNumberOfTypes = function () { + return Object.keys(scope.filter.types).length; + }; + // Wait for metatada to be available scope.$watch("md", function (n, o) { if (angular.isDefined(n)) { diff --git a/web-ui/src/main/resources/catalog/components/history/partials/historyStep.html b/web-ui/src/main/resources/catalog/components/history/partials/historyStep.html index 305b795d3e9..ff458cfb0cd 100644 --- a/web-ui/src/main/resources/catalog/components/history/partials/historyStep.html +++ b/web-ui/src/main/resources/catalog/components/history/partials/historyStep.html @@ -109,7 +109,7 @@ data-ng-init="key = h.metadataId + '-' + h.statusId" > <div - data-ng-show="h.statusValue.name == 'doiCreationTask'" + data-ng-if="h.statusValue.name == 'doiCreationTask'" data-gn-doi-wizard="h.metadataId" ></div> diff --git a/web-ui/src/main/resources/catalog/components/history/partials/recordHistory.html b/web-ui/src/main/resources/catalog/components/history/partials/recordHistory.html index 7bd26fc6311..09bcd634bc7 100644 --- a/web-ui/src/main/resources/catalog/components/history/partials/recordHistory.html +++ b/web-ui/src/main/resources/catalog/components/history/partials/recordHistory.html @@ -4,7 +4,7 @@ <span data-translate="">recordHistory</span> </div> <div class="panel-body"> - <div class="btn-group"> + <div class="btn-group" data-ng-if="getNumberOfTypes() > 1"> <label data-ng-repeat="(k, v) in filter.types" class="btn btn-default" diff --git a/web-ui/src/main/resources/catalog/components/metadataactions/MetadataActionService.js b/web-ui/src/main/resources/catalog/components/metadataactions/MetadataActionService.js index 84a9d9a2492..51d51978d82 100644 --- a/web-ui/src/main/resources/catalog/components/metadataactions/MetadataActionService.js +++ b/web-ui/src/main/resources/catalog/components/metadataactions/MetadataActionService.js @@ -51,6 +51,7 @@ "$q", "$http", "gnConfig", + "gnLangs", function ( $rootScope, $timeout, @@ -67,7 +68,8 @@ $translate, $q, $http, - gnConfig + gnConfig, + gnLangs ) { var windowName = "geonetwork"; var windowOption = ""; @@ -154,7 +156,7 @@ if (params.sortOrder) { url += "&sortOrder=" + params.sortOrder; } - url += "&bucket=" + bucket; + url += "&bucket=" + bucket + "&language=" + gnLangs.current; location.replace(url); } else if (angular.isString(params)) { gnMdFormatter.getFormatterUrl(null, null, params).then(function (url) { @@ -194,7 +196,11 @@ }; this.exportCSV = function (bucket) { - window.open("../api/records/csv" + "?bucket=" + bucket, windowName, windowOption); + window.open( + "../api/records/csv" + "?bucket=" + bucket + "&language=" + gnLangs.current, + windowName, + windowOption + ); }; this.validateMdLinks = function (bucket) { $rootScope.$broadcast("operationOnSelectionStart"); @@ -275,20 +281,28 @@ ); } else { $rootScope.$broadcast("operationOnSelectionStart"); - $http.delete("../api/records?" + "bucket=" + bucket).then( - function (data) { - $rootScope.$broadcast("mdSelectNone"); - $rootScope.$broadcast("operationOnSelectionStop"); - $rootScope.$broadcast("search"); - $timeout(function () { + $http + .delete("../api/records?" + "bucket=" + bucket) + .then( + function (data) { + $rootScope.$broadcast("mdSelectNone"); $rootScope.$broadcast("search"); - }, 5000); - deferred.resolve(data); - }, - function (data) { - deferred.reject(data); - } - ); + $timeout(function () { + $rootScope.$broadcast("search"); + }, 5000); + deferred.resolve(data); + }, + function (data) { + gnAlertService.addAlert({ + msg: data.data.message || data.data.description, + type: "danger" + }); + deferred.reject(data); + } + ) + .finally(function () { + $rootScope.$broadcast("operationOnSelectionStop"); + }); } return deferred.promise; }; @@ -523,6 +537,7 @@ } if (md) { + gnMetadataManager.updateMdObj(md); md.publish(publicationType); } }, @@ -640,8 +655,10 @@ }) .then(function (data) { $rootScope.$broadcast("inspireMdValidationStop"); - $rootScope.$broadcast("operationOnSelectionStop"); $rootScope.$broadcast("search"); + }) + .finally(function () { + $rootScope.$broadcast("operationOnSelectionStop"); }); }; @@ -653,8 +670,10 @@ method: "DELETE" }) .then(function (data) { - $rootScope.$broadcast("operationOnSelectionStop"); $rootScope.$broadcast("search"); + }) + .finally(function () { + $rootScope.$broadcast("operationOnSelectionStop"); }); }; diff --git a/web-ui/src/main/resources/catalog/components/metadataactions/partials/relatedDistribution.html b/web-ui/src/main/resources/catalog/components/metadataactions/partials/relatedDistribution.html index 900d7f03508..7f05a72904c 100644 --- a/web-ui/src/main/resources/catalog/components/metadataactions/partials/relatedDistribution.html +++ b/web-ui/src/main/resources/catalog/components/metadataactions/partials/relatedDistribution.html @@ -204,7 +204,7 @@ <h3 class="flex-grow"> </p> <div - data-ng-if="canPublishDoiForResource(md, linkForEdit)" + data-ng-if="canPublishDoiForResource(md, linkForEdit, doiServers)" data-gn-doi-wizard="md.uuid" data-gn-doi-url="r.locUrl" data-xs-mode="true" diff --git a/web-ui/src/main/resources/catalog/components/ng-skos/templates/skos-concept-thesaurus.html b/web-ui/src/main/resources/catalog/components/ng-skos/templates/skos-concept-thesaurus.html index 0dae7eea07c..f8407b708ec 100644 --- a/web-ui/src/main/resources/catalog/components/ng-skos/templates/skos-concept-thesaurus.html +++ b/web-ui/src/main/resources/catalog/components/ng-skos/templates/skos-concept-thesaurus.html @@ -44,7 +44,7 @@ <b>Related Terms:</b> <ul ng-repeat="r in related"> <li> - <span skos-label="r" lang="{{language}}" ng-click="click(r)" /> + <span skos-label="r" lang="{{language}}" ng-click="click(r)"></span> </li> </ul> </div> diff --git a/web-ui/src/main/resources/catalog/components/search/mdview/mdviewDirective.js b/web-ui/src/main/resources/catalog/components/search/mdview/mdviewDirective.js index 4f9f2e6546c..e1ca1871d49 100644 --- a/web-ui/src/main/resources/catalog/components/search/mdview/mdviewDirective.js +++ b/web-ui/src/main/resources/catalog/components/search/mdview/mdviewDirective.js @@ -178,12 +178,28 @@ var resourceType = scope.md.resourceType ? scope.md.resourceType[0] : undefined; + var filter = []; if (scope.ofSameType && resourceType) { var mapping = resourceTypeMapping[resourceType]; scope.label = mapping ? mapping.label : resourceType; - query.query.bool.filter = [ - { terms: { resourceType: mapping ? mapping.types : [resourceType] } } - ]; + filter.push({ + terms: { resourceType: mapping ? mapping.types : [resourceType] } + }); + } + + if ( + gnGlobalSettings.gnCfg.mods.search.moreLikeThisFilter && + gnGlobalSettings.gnCfg.mods.search.moreLikeThisFilter != "" + ) { + filter.push({ + query_string: { + query: gnGlobalSettings.gnCfg.mods.search.moreLikeThisFilter + } + }); + } + + if (filter.length > 0) { + query.query.bool.filter = filter; } return query; @@ -588,15 +604,20 @@ }, link: function (scope, element, attrs) { scope.mdService = gnUtilityService; - scope.$watch(scope.md, function (newVal, oldVal) { - if (newVal !== null && newVal !== oldVal) { - $http - .get("../api/records/" + scope.md.getUuid() + "/permalink") - .then(function (r) { - scope.socialMediaLink = r.data; - }); - } - }); + + scope.$watch( + "md", + function (newVal, oldVal) { + if (newVal !== null && newVal !== oldVal) { + $http + .get("../api/records/" + scope.md.getUuid() + "/permalink") + .then(function (r) { + scope.socialMediaLink = r.data; + }); + } + }, + true + ); } }; } diff --git a/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js b/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js index 1310e4a4810..a58b4ae60f3 100644 --- a/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js +++ b/web-ui/src/main/resources/catalog/components/search/mdview/mdviewModule.js @@ -85,7 +85,7 @@ $scope.gnMetadataActions = gnMetadataActions; $scope.url = location.href; $scope.compileScope = $scope.$new(); - $scope.recordIdentifierRequested = gnSearchLocation.uuid; + $scope.recordIdentifierRequested = gnSearchLocation.getUuid(); $scope.isUserFeedbackEnabled = false; $scope.isRatingEnabled = false; $scope.showCitation = false; diff --git a/web-ui/src/main/resources/catalog/components/search/mdview/partials/datapreview.html b/web-ui/src/main/resources/catalog/components/search/mdview/partials/datapreview.html index dca4cf4e11e..e49c707a527 100644 --- a/web-ui/src/main/resources/catalog/components/search/mdview/partials/datapreview.html +++ b/web-ui/src/main/resources/catalog/components/search/mdview/partials/datapreview.html @@ -1,7 +1,7 @@ <div data-ng-if="hasExtent" ol-map="map"></div> <div class="row"> - <div class="col-md-3"> + <div class="col-md-3 gn-nopadding-left gn-padding-top-lg"> <div data-gn-wfs-filter-facets="" data-layer="currentLayer" @@ -9,7 +9,7 @@ data-boot-mode="index" ></div> </div> - <div class="col-md-9"> + <div class="col-md-9 gn-nopadding-right gn-padding-top-lg"> <gn-features-tables gn-features-tables-map="map" data-show-close="false" diff --git a/web-ui/src/main/resources/catalog/components/search/mdview/partials/keywordBadges.html b/web-ui/src/main/resources/catalog/components/search/mdview/partials/keywordBadges.html index cf41dc05e76..f27b4b445bf 100644 --- a/web-ui/src/main/resources/catalog/components/search/mdview/partials/keywordBadges.html +++ b/web-ui/src/main/resources/catalog/components/search/mdview/partials/keywordBadges.html @@ -17,7 +17,7 @@ class="pull-left" > <button gn-popover-anchor="" class="btn btn-default btn-xs"> - {{::k.default | capitalize}} + {{::k.default}} </button> <div gn-popover-content=""> <a data-ng-href="{{::k.link}}" data-ng-if="::!!k.link"> diff --git a/web-ui/src/main/resources/catalog/components/search/resultsview/SelectionDirective.js b/web-ui/src/main/resources/catalog/components/search/resultsview/SelectionDirective.js index 500ece65fd0..ae8fedf50bb 100644 --- a/web-ui/src/main/resources/catalog/components/search/resultsview/SelectionDirective.js +++ b/web-ui/src/main/resources/catalog/components/search/resultsview/SelectionDirective.js @@ -99,7 +99,7 @@ function (r) { gnAlertService.addAlert({ msg: r.data.message || r.data.description, - delay: 20000, + delay: 20, type: "danger" }); if (r.id) { diff --git a/web-ui/src/main/resources/catalog/components/search/searchmanager/LocationService.js b/web-ui/src/main/resources/catalog/components/search/searchmanager/LocationService.js index c04e9b9ff4b..7d1a9c252e4 100644 --- a/web-ui/src/main/resources/catalog/components/search/searchmanager/LocationService.js +++ b/web-ui/src/main/resources/catalog/components/search/searchmanager/LocationService.js @@ -77,12 +77,14 @@ return p.indexOf(this.METADATA) == 0 || p.indexOf(this.DRAFT) == 0; }; - this.isMap = function () { - return $location.path() == this.MAP; + this.isMap = function (path) { + var p = path || $location.path(); + return p == this.MAP; }; - this.isHome = function () { - return $location.path() == this.HOME; + this.isHome = function (path) { + var p = path || $location.path(); + return p == this.HOME; }; this.isUndefined = function () { diff --git a/web-ui/src/main/resources/catalog/components/thesaurus/ThesaurusDirective.js b/web-ui/src/main/resources/catalog/components/thesaurus/ThesaurusDirective.js index 203b3b546ed..14567e0696a 100644 --- a/web-ui/src/main/resources/catalog/components/thesaurus/ThesaurusDirective.js +++ b/web-ui/src/main/resources/catalog/components/thesaurus/ThesaurusDirective.js @@ -256,7 +256,8 @@ // on keyword. maxTags: "@", thesaurusTitle: "@", - browsable: "@" + browsable: "@", + required: "@" }, templateUrl: "../../catalog/components/thesaurus/" + "partials/keywordselector.html", diff --git a/web-ui/src/main/resources/catalog/components/thesaurus/partials/keywordselector.html b/web-ui/src/main/resources/catalog/components/thesaurus/partials/keywordselector.html index 4144fa182c0..ab309a23859 100644 --- a/web-ui/src/main/resources/catalog/components/thesaurus/partials/keywordselector.html +++ b/web-ui/src/main/resources/catalog/components/thesaurus/partials/keywordselector.html @@ -17,7 +17,7 @@ </div> <span data-ng-show="!invalidKeywordMatch"> - <div class="row"> + <div class="row" data-ng-class="required == 'true' ? 'gn-required' : ''"> <label class="col-sm-2 control-label"> {{thesaurusTitle}} </label> <div class="col-sm-9" diff --git a/web-ui/src/main/resources/catalog/components/userfeedback/GnUserfeedbackDirective.js b/web-ui/src/main/resources/catalog/components/userfeedback/GnUserfeedbackDirective.js index de197b907ac..80d6c7964e6 100644 --- a/web-ui/src/main/resources/catalog/components/userfeedback/GnUserfeedbackDirective.js +++ b/web-ui/src/main/resources/catalog/components/userfeedback/GnUserfeedbackDirective.js @@ -303,6 +303,7 @@ "Metadata", "vcRecaptchaService", "gnConfig", + "gnConfigService", function ( $http, gnUserfeedbackService, @@ -311,7 +312,8 @@ $rootScope, Metadata, vcRecaptchaService, - gnConfig + gnConfig, + gnConfigService ) { return { restrict: "AEC", @@ -322,10 +324,12 @@ templateUrl: "../../catalog/components/" + "userfeedback/partials/userfeedbacknew.html", link: function (scope) { - scope.recaptchaEnabled = - gnConfig["system.userSelfRegistration.recaptcha.enable"]; - scope.recaptchaKey = - gnConfig["system.userSelfRegistration.recaptcha.publickey"]; + gnConfigService.loadPromise.then(function () { + scope.recaptchaEnabled = + gnConfig["system.userSelfRegistration.recaptcha.enable"]; + scope.recaptchaKey = + gnConfig["system.userSelfRegistration.recaptcha.publickey"]; + }); scope.resolveRecaptcha = false; scope.userName = null; diff --git a/web-ui/src/main/resources/catalog/components/userfeedback/GnmdFeedbackDirective.js b/web-ui/src/main/resources/catalog/components/userfeedback/GnmdFeedbackDirective.js index 9405de99f71..f693181de2a 100644 --- a/web-ui/src/main/resources/catalog/components/userfeedback/GnmdFeedbackDirective.js +++ b/web-ui/src/main/resources/catalog/components/userfeedback/GnmdFeedbackDirective.js @@ -139,6 +139,9 @@ scope.mdFeedbackOpen = false; } else { scope.success = false; + if (scope.recaptchaEnabled) { + vcRecaptchaService.reload(); + } } }); } diff --git a/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js b/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js index 80834e2d4ec..493c85a99f6 100644 --- a/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js +++ b/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js @@ -1143,45 +1143,35 @@ return { copy: function (toCopy) { var deferred = $q.defer(); - navigator.permissions.query({ name: "clipboard-write" }).then( - function (result) { - if (result.state == "granted" || result.state == "prompt") { - navigator.clipboard.writeText(toCopy).then( - function () { - deferred.resolve(); - }, - function (r) { - console.warn(r); - deferred.reject(); - } - ); + if (navigator.clipboard && navigator.clipboard.writeText) { + navigator.clipboard.writeText(toCopy).then( + function () { + deferred.resolve(); + }, + function (r) { + console.warn(r); + deferred.reject(); } - }, - function () { - deferred.reject(); - } - ); + ); + } else { + deferred.reject(); + } return deferred.promise; }, paste: function () { var deferred = $q.defer(); - navigator.permissions.query({ name: "clipboard-read" }).then( - function (result) { - if (result.state == "granted" || result.state == "prompt") { - navigator.clipboard.readText().then( - function (text) { - deferred.resolve(text); - }, - function () { - deferred.reject(); - } - ); + if (navigator.clipboard && navigator.clipboard.readText) { + navigator.clipboard.readText().then( + function (text) { + deferred.resolve(text); + }, + function () { + deferred.reject(); } - }, - function () { - deferred.reject(); - } - ); + ); + } else { + deferred.reject(); + } return deferred.promise; } }; diff --git a/web-ui/src/main/resources/catalog/components/viewer/ViewerDirective.js b/web-ui/src/main/resources/catalog/components/viewer/ViewerDirective.js index cb6f63ed0fe..b48ad9e2c40 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/ViewerDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/ViewerDirective.js @@ -255,7 +255,7 @@ }), type: "success" }, - 5000 + 5 ); } }, @@ -293,7 +293,7 @@ url: config.url, extent: extent ? extent.join(",") : "" }), - delay: 5000, + delay: 5, type: "warning" }); // TODO: You may want to add more than one time @@ -408,7 +408,7 @@ filters: { filters: { maps: { - query_string: { query: '+resourceType:"map/interactive"' } + query_string: { query: '+resourceType:"map-interactive"' } } } } diff --git a/web-ui/src/main/resources/catalog/components/viewer/gfi/FeaturesLoader.js b/web-ui/src/main/resources/catalog/components/viewer/gfi/FeaturesLoader.js index c9ca61926cf..62d6fbdde68 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/gfi/FeaturesLoader.js +++ b/web-ui/src/main/resources/catalog/components/viewer/gfi/FeaturesLoader.js @@ -151,7 +151,7 @@ }) .then( function (response) { - if (infoFormat && infoFormat.match(/application\/(geo|geo\+)json/i) != null) { + if (infoFormat && infoFormat.match(/application\/(geo|geo\+)?json/i) != null) { var jsonf = new ol.format.GeoJSON(); var features = []; response.data.features.forEach(function (f) { diff --git a/web-ui/src/main/resources/catalog/components/viewer/gfi/partials/featurestables.html b/web-ui/src/main/resources/catalog/components/viewer/gfi/partials/featurestables.html index 2e04c189d49..c5643c6959f 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/gfi/partials/featurestables.html +++ b/web-ui/src/main/resources/catalog/components/viewer/gfi/partials/featurestables.html @@ -63,12 +63,11 @@ data-ng-show="ctrl.currentTable == table" ng-repeat="table in ctrl.tables" > - <div class="pull-left"> - <strong> - <span>{{table.name}}</span>  {{table.loader.getCount()}} - <span data-translate="">features</span> - </strong> - </div> + <!-- <div class="pull-left">--> + <h4> + <span>{{table.name}}</span> + </h4> + <!-- </div>--> <gn-features-table gn-features-table-loader="table.loader" gn-features-table-loader-map="ctrl.map" diff --git a/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextDirective.js b/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextDirective.js index c02aa5d8cac..edb386ea705 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/owscontext/OwsContextDirective.js @@ -45,7 +45,7 @@ filters: [ { query_string: { - query: '+resourceType:"map/interactive"' + query: '+resourceType:"map-interactive"' } } ], @@ -140,27 +140,55 @@ scope.mapFileName = getMapFileName(); scope.map.once("postrender", function (event) { - domtoimage.toPng(scope.map.getTargetElement()).then(function (data) { - // resize if necessary - var finalData = data; - - if (scaleFactor !== undefined) { - var img = new Image(); - img.src = data; - img.onload = function () { - var canvas = document.createElement("canvas"); - var size = scope.map.getSize(); - canvas.width = size[0]; - canvas.height = size[1]; - canvas - .getContext("2d") - .drawImage(img, 0, 0, canvas.width, canvas.height); - finalData = canvas.toDataURL("image/png"); - }; + var mapCanvas = document.createElement("canvas"); + var size = scope.map.getSize(); + mapCanvas.width = size[0]; + mapCanvas.height = size[1]; + var mapContext = mapCanvas.getContext("2d"); + Array.prototype.forEach.call( + scope.map + .getViewport() + .querySelectorAll(".ol-layer canvas, canvas.ol-layer"), + function (canvas) { + if (canvas.width > 0) { + var opacity = + canvas.parentNode.style.opacity || canvas.style.opacity; + mapContext.globalAlpha = opacity === "" ? 1 : Number(opacity); + var matrix; + var transform = canvas.style.transform; + if (transform) { + // Get the transform parameters from the style's transform matrix + matrix = transform + .match(/^matrix\(([^\(]*)\)$/)[1] + .split(",") + .map(Number); + } else { + matrix = [ + parseFloat(canvas.style.width) / canvas.width, + 0, + 0, + parseFloat(canvas.style.height) / canvas.height, + 0, + 0 + ]; + } + // Apply the transform to the export map context + CanvasRenderingContext2D.prototype.setTransform.apply( + mapContext, + matrix + ); + var backgroundColor = canvas.parentNode.style.backgroundColor; + if (backgroundColor) { + mapContext.fillStyle = backgroundColor; + mapContext.fillRect(0, 0, canvas.width, canvas.height); + } + mapContext.drawImage(canvas, 0, 0); + } } - - defer.resolve(finalData); - }); + ); + mapContext.globalAlpha = 1; + mapContext.setTransform(1, 0, 0, 1, 0, 0); + defer.resolve(mapCanvas.toDataURL()); }); scope.map.renderSync(); } else { @@ -208,7 +236,8 @@ title: "", recordAbstract: "", group: null, - publishToAll: false + publishToAll: false, + schema: "iso19115-3.2018" }; scope.mapProps = angular.extend({}, defaultMapProps); diff --git a/web-ui/src/main/resources/catalog/components/viewer/searchlayerformap/SearchLayerForMapDirective.js b/web-ui/src/main/resources/catalog/components/viewer/searchlayerformap/SearchLayerForMapDirective.js index 7deaaa7c25b..ed4f17c7ea5 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/searchlayerformap/SearchLayerForMapDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/searchlayerformap/SearchLayerForMapDirective.js @@ -75,7 +75,7 @@ } }; if ($scope.mode === "map") { - $scope.searchObj.params.type = "map/interactive"; + $scope.searchObj.params.type = "map-interactive"; } else { $scope.searchObj.params.linkProtocol = "OGC:WMS*"; } diff --git a/web-ui/src/main/resources/catalog/components/viewer/wfsfilter/partials/wfsfilterfacet.html b/web-ui/src/main/resources/catalog/components/viewer/wfsfilter/partials/wfsfilterfacet.html index 8c75135b90d..e10fd98de86 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/wfsfilter/partials/wfsfilterfacet.html +++ b/web-ui/src/main/resources/catalog/components/viewer/wfsfilter/partials/wfsfilterfacet.html @@ -17,21 +17,15 @@ <div data-ng-show="isWfsAvailable"> <!--admin buttons--> - <div class="btn-group dropup wfs-filter-group"> - <!--Facet count--> - <div - class="btn btn-default btn-xs disabled" - data-ng-if="isFeaturesIndexed" - class="count text-center" - data-ng-if="showCount" + <!--Facet count--> + <h4 data-ng-if="isFeaturesIndexed" class="count" data-ng-if="showCount"> + {{count | number}} / {{countTotal | number}} <span translate="" + >features</span > - {{count | number}} / {{countTotal | number}} <span translate="" - >features</span - > - </div> - + </h4> + <div class="btn-group dropup wfs-filter-group"> <button - class="btn btn-default btn-xs" + class="btn btn-default" data-ng-if="!managerOnly && isFeaturesIndexed && displayTableOnLoad != 'true'" @@ -41,7 +35,7 @@ <i class="fa fa-table"></i> </button> <button - class="btn btn-default btn-xs" + class="btn btn-default" data-ng-disabled="!indexObject.isPointOnly" data-ng-if="!managerOnly && isFeaturesIndexed" @@ -52,7 +46,7 @@ <i class="fa fa-th-large"></i> </button> <button - class="btn btn-default btn-xs" + class="btn btn-default" ng-class="{ disabled: !filtersChanged }" data-ng-if="!managerOnly && isFeaturesIndexed" title="{{::'applyFilter' | translate}}" @@ -62,7 +56,7 @@ <i class="fa fa-filter"></i> </button> <button - class="btn btn-default btn-xs" + class="btn btn-default" title="{{::'refresh' | translate}}" data-ng-if="(user.canEditRecord(md) || (user.isAdministrator() && md.isHarvested == 'true'))" @@ -74,7 +68,7 @@ data-ng-if="(user.canEditRecord(md) || (user.isAdministrator() && md.isHarvested == 'true'))" type="button" - class="btn btn-default btn-xs dropdown-toggle" + class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" @@ -105,7 +99,7 @@ data-ng-if="managerOnly" title="{{'addToMap' | translate}}" data-ng-href="catalog.search#/map?add={{mapAddCmd | encodeURIComponent}}" - class="btn btn-default btn-xs" + class="btn btn-default" > <i class="fa fa-globe"></i> </a> @@ -133,43 +127,46 @@ ></gn-heatmap> <!-- Search --> - <div - data-ng-if="!managerOnly && isFeaturesIndexed" - class="input-group input-group-sm" - > - <input - class="form-control input-xs" - data-ng-keyup="$event.keyCode == 13 && filterFacets()" - type="text" - placeholder="{{::'anyPlaceHolder' | translate}}" - data-ng-model="ctrl.filter.fullTextSearch" - /> - <span class="input-group-btn"> - <button - data-ng-if="!managerOnly && isFeaturesIndexed" - data-gn-click-and-spin="resetFacets(false).then(filterWMS)" - title="{{'reset' | translate}}" - class="btn btn-default btn-xs gn-reset-facets" - > - <i class="fa fa-fw fa-times"></i> - </button> - <button - data-ng-if="!managerOnly && isFeaturesIndexed" - title="{{'featuresInMapExtent' | translate}}" - data-ng-click="setFeaturesInMapExtent()" - data-ng-class="{'active': featuresInMapExtent}" - class="btn btn-default btn-xs" - > - <i class="fa fa-pencil-square-o fa-fw"></i> - </button> - <button - class="btn btn-default btn-xs" - title="{{'search' | translate}}" - data-ng-click="filterFacets()" - > - <i class="fa fa-fw fa-search"></i> - </button> - </span> + <div class="flex-row flex-align-center gn-margin-bottom"> + <div + data-ng-if="!managerOnly && isFeaturesIndexed" + class="input-group flex-grow gn-margin-right-sm" + > + <input + class="form-control" + data-ng-keyup="$event.keyCode == 13 && filterFacets()" + type="text" + placeholder="{{::'anyPlaceHolder' | translate}}" + data-ng-model="ctrl.filter.fullTextSearch" + /> + <div class="input-group-btn"> + <button + data-ng-if="!managerOnly && isFeaturesIndexed" + data-gn-click-and-spin="resetFacets(false).then(filterWMS)" + title="{{'reset' | translate}}" + class="btn btn-default gn-reset-facets" + > + <i class="fa fa-fw fa-times"></i> + </button> + + <button + class="btn btn-default" + title="{{'search' | translate}}" + data-ng-click="filterFacets()" + > + <i class="fa fa-fw fa-search"></i> + </button> + </div> + </div> + <button + data-ng-if="!managerOnly && isFeaturesIndexed" + title="{{'featuresInMapExtent' | translate}}" + data-ng-click="setFeaturesInMapExtent()" + data-ng-class="{'active': featuresInMapExtent}" + class="btn btn-default" + > + <i class="fa fa-pencil-square-o fa-fw"></i> + </button> </div> <!-- Facets --> @@ -185,7 +182,7 @@ data-ng-class="{'text-primary': isFilterActive(field.name, field)}" > <span - class="fa fa-arrow-circle-right" + class="fa fa-chevron-right" data-ng-class="{ 'fa-rotate-90': field.expanded, 'gn-field-empty': !isFilterActive(field.name, field) @@ -208,7 +205,7 @@ ></span> <input type="text" - class="form-control input-sm layerfilter" + class="form-control layerfilter" placeholder="{{ 'filter' | translate }}" ng-model="facetFilters[field.name]" ng-model-options="{debounce: 300}" @@ -266,7 +263,7 @@ data-ng-class="{'text-primary': isFilterActive('geometry')}" > <span - class="fa fa-arrow-circle-right" + class="fa fa-chevron-right" data-ng-class="{ 'fa-rotate-90': indexObject.geomField.expanded, 'gn-field-empty': !isFilterActive('geometry') diff --git a/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js b/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js index bdc1eb1f285..9d4dec15053 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js @@ -105,7 +105,7 @@ }), type: "success" }, - 4 + 15 ); gnMap.feedLayerMd(layer); return layer; diff --git a/web-ui/src/main/resources/catalog/js/CatController.js b/web-ui/src/main/resources/catalog/js/CatController.js index 79b66951b47..65b8d949d76 100644 --- a/web-ui/src/main/resources/catalog/js/CatController.js +++ b/web-ui/src/main/resources/catalog/js/CatController.js @@ -370,6 +370,8 @@ size: 20 }, moreLikeThisSameType: true, + moreLikeThisFilter: + "-cl_status.key:(obsolete OR historicalArchive OR superseded)", moreLikeThisConfig: { more_like_this: { fields: [ @@ -824,7 +826,7 @@ is3DModeAllowed: false, singleTileWMS: true, isSaveMapInCatalogAllowed: true, - isExportMapAsImageEnabled: false, + isExportMapAsImageEnabled: true, isAccessible: false, storage: "sessionStorage", bingKey: "", @@ -937,6 +939,7 @@ "protocol:OGC:WFS|OGC:WCS|.*DOWNLOAD.*|DB:.*|FILE:.*|OGC API Features|OGC API Coverages", title: "download" }, + { filter: "protocol:OGC:OWS-C", title: "map" }, { filter: "function:legend", title: "mapLegend" }, { filter: "function:featureCatalogue", @@ -1321,6 +1324,7 @@ "geocoder", "disabledTools", "filters", + "info", "scoreConfig", "autocompleteConfig", "moreLikeThisConfig", diff --git a/web-ui/src/main/resources/catalog/js/LoginController.js b/web-ui/src/main/resources/catalog/js/LoginController.js index 9a6a5de8f80..42097136212 100644 --- a/web-ui/src/main/resources/catalog/js/LoginController.js +++ b/web-ui/src/main/resources/catalog/js/LoginController.js @@ -45,6 +45,7 @@ "$window", "$timeout", "gnUtilityService", + "gnConfigService", "gnConfig", "gnGlobalSettings", "vcRecaptchaService", @@ -59,6 +60,7 @@ $window, $timeout, gnUtilityService, + gnConfigService, gnConfig, gnGlobalSettings, vcRecaptchaService, @@ -73,8 +75,23 @@ $scope.userToRemind = null; $scope.changeKey = null; - $scope.recaptchaEnabled = gnConfig["system.userSelfRegistration.recaptcha.enable"]; - $scope.recaptchaKey = gnConfig["system.userSelfRegistration.recaptcha.publickey"]; + gnConfigService.loadPromise.then(function () { + $scope.recaptchaEnabled = + gnConfig["system.userSelfRegistration.recaptcha.enable"]; + $scope.recaptchaKey = gnConfig["system.userSelfRegistration.recaptcha.publickey"]; + + // take the bigger of the two values + $scope.passwordMinLength = Math.max( + gnConfig["system.security.passwordEnforcement.minLength"], + 6 + ); + $scope.passwordMaxLength = Math.max( + gnConfig["system.security.passwordEnforcement.maxLength"], + 6 + ); + $scope.passwordPattern = gnConfig["system.security.passwordEnforcement.pattern"]; + }); + $scope.resolveRecaptcha = false; $scope.redirectUrl = gnUtilityService.getUrlParameter("redirect"); @@ -84,17 +101,6 @@ $scope.isShowLoginAsLink = gnGlobalSettings.isShowLoginAsLink; $scope.isUserProfileUpdateEnabled = gnGlobalSettings.isUserProfileUpdateEnabled; - // take the bigger of the two values - $scope.passwordMinLength = Math.max( - gnConfig["system.security.passwordEnforcement.minLength"], - 6 - ); - $scope.passwordMaxLength = Math.max( - gnConfig["system.security.passwordEnforcement.maxLength"], - 6 - ); - $scope.passwordPattern = gnConfig["system.security.passwordEnforcement.pattern"]; - function initForm() { if ($window.location.pathname.indexOf("new.password") !== -1) { // Retrieve username from URL parameter @@ -196,6 +202,9 @@ timeout: 0, type: "danger" }); + if ($scope.recaptchaEnabled) { + vcRecaptchaService.reload(); + } } ); }; diff --git a/web-ui/src/main/resources/catalog/js/admin/DoiServerController.js b/web-ui/src/main/resources/catalog/js/admin/DoiServerController.js new file mode 100644 index 00000000000..eb773b5fc15 --- /dev/null +++ b/web-ui/src/main/resources/catalog/js/admin/DoiServerController.js @@ -0,0 +1,215 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +(function () { + goog.provide("gn_doiserver_controller"); + + var module = angular.module("gn_doiserver_controller", []); + + /** + * GnDoiServerController provides management interface + * for DOI server configuration used for DOI publication. + * + */ + module.controller("GnDoiServerController", [ + "$scope", + "$http", + "$rootScope", + "$translate", + function ($scope, $http, $rootScope, $translate) { + $scope.doiServers = []; + $scope.doiServerSelected = null; + $scope.doiServerUpdated = false; + $scope.doiServerSearch = ""; + $scope.isUpdate = null; + $scope.selectedPublicationGroups = []; + $scope.groupsForPublication = []; + + // Load groups + function loadGroups() { + $http.get("../api/groups").then( + function (response) { + $scope.groupsForPublication = response.data; + + var getLabel = function (g) { + return g.label[$scope.lang] || g.name; + }; + + angular.forEach($scope.groupsForPublication, function (u) { + u.langlabel = getLabel(u); + }); + }, + function (response) { + // TODO + } + ); + } + + loadGroups(); + + function loadDoiServers() { + $scope.doiServerSelected = null; + if ($scope.gnDoiServerEdit) { + $scope.gnDoiServerEdit.$setPristine(); + } + + $http.get("../api/doiservers").then(function (response) { + $scope.doiServers = response.data; + }); + } + + $scope.updateDoiServerUrl = function (newUrl, urlPrefix) { + $scope.doiServerSelected.url = newUrl; + $scope.doiServerSelected.publicUrl = urlPrefix; + + $scope.gnDoiServerEdit.$setDirty(); + }; + + $scope.updatingDoiServer = function () { + $scope.doiServerUpdated = true; + }; + + $scope.selectDoiServer = function (v) { + if ($scope.gnDoiServerEdit.$dirty) { + if (!confirm($translate.instant("formConfirmExit"))) { + return; + } + } + + $scope.isUpdate = true; + $scope.doiServerUpdated = false; + $scope.doiServerSelected = v; + $scope.selectedPublicationGroups = []; + + for (var i = 0; i < v.publicationGroups.length; i++) { + var group = _.find($scope.groupsForPublication, { id: v.publicationGroups[i] }); + if (group !== undefined) { + $scope.selectedPublicationGroups.push(group); + } + } + + $scope.gnDoiServerEdit.$setPristine(); + }; + + $scope.addDoiServer = function () { + $scope.isUpdate = false; + $scope.selectedPublicationGroups = []; + $scope.doiServerSelected = { + id: "", + name: "", + description: "", + url: "", + username: "", + password: "", + landingPageTemplate: + "http://localhost:8080/geonetwork/srv/resources/records/{{uuid}}", + publicUrl: "", + pattern: "{{uuid}}", + prefix: "", + publicationGroups: [] + }; + }; + $scope.saveDoiServer = function () { + $scope.doiServerSelected.publicationGroups = _.map( + $scope.selectedPublicationGroups, + "id" + ); + + $http + .put( + "../api/doiservers" + + ($scope.isUpdate ? "/" + $scope.doiServerSelected.id : ""), + $scope.doiServerSelected + ) + .then( + function (response) { + loadDoiServers(); + $rootScope.$broadcast("StatusUpdated", { + msg: $translate.instant("doiServerUpdated"), + timeout: 2, + type: "success" + }); + }, + function (response) { + $rootScope.$broadcast("StatusUpdated", { + title: $translate.instant("doiServerUpdateError"), + error: response.data, + timeout: 0, + type: "danger" + }); + } + ); + }; + + $scope.resetPassword = null; + $scope.resetUsername = null; + $scope.resetDoiServerPassword = function () { + $scope.resetPassword = null; + $scope.resetUsername = null; + $("#passwordResetModal").modal(); + }; + + $scope.saveNewPassword = function () { + var data = $.param({ + username: $scope.resetUsername, + password: $scope.resetPassword + }); + + $http + .post("../api/doiservers/" + $scope.doiServerSelected.id + "/auth", data, { + headers: { "Content-Type": "application/x-www-form-urlencoded" } + }) + .then( + function (response) { + $scope.resetPassword = null; + $("#passwordResetModal").modal("hide"); + }, + function (response) { + // TODO + } + ); + }; + + $scope.deleteDoiServerConfig = function () { + $("#gn-confirm-remove-doiserver").modal("show"); + }; + + $scope.confirmDeleteDoiServerConfig = function () { + $http.delete("../api/doiservers/" + $scope.doiServerSelected.id).then( + function (response) { + loadDoiServers(); + }, + function (response) { + $rootScope.$broadcast("StatusUpdated", { + title: $translate.instant("doiServerDeleteError"), + error: response.data, + timeout: 0, + type: "danger" + }); + } + ); + }; + loadDoiServers(); + } + ]); +})(); diff --git a/web-ui/src/main/resources/catalog/js/admin/SettingsController.js b/web-ui/src/main/resources/catalog/js/admin/SettingsController.js index c3bafb3ada8..e094b0f4513 100644 --- a/web-ui/src/main/resources/catalog/js/admin/SettingsController.js +++ b/web-ui/src/main/resources/catalog/js/admin/SettingsController.js @@ -35,6 +35,7 @@ goog.require("gn_system_settings_controller"); goog.require("gn_languages_controller"); goog.require("gn_static_pages_controller"); + goog.require("gn_doiserver_controller"); var module = angular.module("gn_settings_controller", [ "gn_system_settings_controller", @@ -47,7 +48,8 @@ "gn_metadata_identifier_templates_controller", "gn_cssstyle_settings_controller", "gn_scroll_spy", - "gn_static_pages_controller" + "gn_static_pages_controller", + "gn_doiserver_controller" ]); module.controller("GnSettingsController", [ @@ -126,6 +128,12 @@ label: "manageMapServers", href: "#/settings/mapservers" }, + { + type: "doiservers", + icon: "gn-icon-doi", + label: "manageDoiServers", + href: "#/settings/doiservers" + }, { type: "static-pages", icon: "fa-link", diff --git a/web-ui/src/main/resources/catalog/js/admin/SourcesController.js b/web-ui/src/main/resources/catalog/js/admin/SourcesController.js index 2a6c5e86e62..c83ff220c7c 100644 --- a/web-ui/src/main/resources/catalog/js/admin/SourcesController.js +++ b/web-ui/src/main/resources/catalog/js/admin/SourcesController.js @@ -211,7 +211,7 @@ $scope.deleteSourceLogo = function () { $scope.source.logo = null; - // $scope.updateSource(); + $scope.gnSourceForm.$setDirty(); }; // upload directive options diff --git a/web-ui/src/main/resources/catalog/js/admin/SystemSettingsController.js b/web-ui/src/main/resources/catalog/js/admin/SystemSettingsController.js index d62c4d70814..b6cc6fab770 100644 --- a/web-ui/src/main/resources/catalog/js/admin/SystemSettingsController.js +++ b/web-ui/src/main/resources/catalog/js/admin/SystemSettingsController.js @@ -410,7 +410,11 @@ "../api/ui" + (isUpdate ? "/" + newid : ""), { id: newid, - configuration: isUpdate ? $scope.uiConfiguration.configuration : null + configuration: isUpdate + ? typeof $scope.uiConfiguration.configuration === "string" + ? $scope.uiConfiguration.configuration + : JSON.stringify($scope.uiConfiguration.configuration, null, 2) + : null }, { responseType: "text" } ) diff --git a/web-ui/src/main/resources/catalog/js/edit/DirectoryController.js b/web-ui/src/main/resources/catalog/js/edit/DirectoryController.js index 280d0e27e36..3baa7a89bd0 100644 --- a/web-ui/src/main/resources/catalog/js/edit/DirectoryController.js +++ b/web-ui/src/main/resources/catalog/js/edit/DirectoryController.js @@ -455,7 +455,7 @@ .then(refreshEntriesInfo, function (e) { gnAlertService.addAlert({ msg: $translate.instant("directoryEntry-removeError-referenced"), - delay: 5000, + delay: 5, type: "danger" }); }); diff --git a/web-ui/src/main/resources/catalog/js/edit/EditorBoardController.js b/web-ui/src/main/resources/catalog/js/edit/EditorBoardController.js index bb5c459b0a8..15ed806c00a 100644 --- a/web-ui/src/main/resources/catalog/js/edit/EditorBoardController.js +++ b/web-ui/src/main/resources/catalog/js/edit/EditorBoardController.js @@ -135,7 +135,8 @@ }, function (reason) { $rootScope.$broadcast("StatusUpdated", { - title: reason.data.description, //returned error JSON obj + title: reason.data.message, //returned error JSON obj + error: reason.data.description, timeout: 0, type: "danger" }); diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.az.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.az.min.js new file mode 100644 index 00000000000..aa1edbf4f80 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.az.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1,clear:"Təmizlə",monthsTitle:"Aylar"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ca.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ca.min.js new file mode 100644 index 00000000000..d21351866dc --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ca.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ca={days:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],daysShort:["dg.","dl.","dt.","dc.","dj.","dv.","ds."],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthsShort:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],today:"Avui",monthsTitle:"Mesos",clear:"Esborra",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cs.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cs.min.js new file mode 100644 index 00000000000..42dfd1a29d8 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cy.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cy.min.js new file mode 100644 index 00000000000..f85ea031dd0 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.cy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.da.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.da.min.js new file mode 100644 index 00000000000..53c81805282 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.da.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"Måneder"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.de.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.de.min.js new file mode 100644 index 00000000000..c76f75d37f4 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.de.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["So","Mo","Di","Mi","Do","Fr","Sa"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.es.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.es.min.js new file mode 100644 index 00000000000..f3cef5d2b93 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.es.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fi.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fi.min.js new file mode 100644 index 00000000000..33af3d3ebc6 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.fi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.hy.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.hy.min.js new file mode 100644 index 00000000000..a1cf653d380 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.hy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.is.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.is.min.js new file mode 100644 index 00000000000..f49bd18cc23 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.is.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.it.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.it.min.js new file mode 100644 index 00000000000..cc30766ffa0 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.it.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ka.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ka.min.js new file mode 100644 index 00000000000..84f14c0e90e --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ka.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ko.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ko.min.js new file mode 100644 index 00000000000..9751ee5c228 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ko.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.pt.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.pt.min.js new file mode 100644 index 00000000000..e2b4e64d774 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.pt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ro.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ro.min.js new file mode 100644 index 00000000000..5fff2986df1 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ro.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ru.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ru.min.js new file mode 100644 index 00000000000..52bc010b97c --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.ru.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sk.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sk.min.js new file mode 100644 index 00000000000..79a9267fd52 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sv.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sv.min.js new file mode 100644 index 00000000000..7ab6becb925 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.uk.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.uk.min.js new file mode 100644 index 00000000000..a555be8008a --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.zh.min.js b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.zh.min.js new file mode 100644 index 00000000000..5688b92ea61 --- /dev/null +++ b/web-ui/src/main/resources/catalog/lib/bootstrap.ext/datepicker/bootstrap-datepicker.zh.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); diff --git a/web-ui/src/main/resources/catalog/lib/dom-to-image/dom-to-image.min.js b/web-ui/src/main/resources/catalog/lib/dom-to-image/dom-to-image.min.js deleted file mode 100644 index bc73227434d..00000000000 --- a/web-ui/src/main/resources/catalog/lib/dom-to-image/dom-to-image.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! dom-to-image 10-06-2017 */ -!function(a){"use strict";function b(a,b){function c(a){return b.bgcolor&&(a.style.backgroundColor=b.bgcolor),b.width&&(a.style.width=b.width+"px"),b.height&&(a.style.height=b.height+"px"),b.style&&Object.keys(b.style).forEach(function(c){a.style[c]=b.style[c]}),a}return b=b||{},g(b),Promise.resolve(a).then(function(a){return i(a,b.filter,!0)}).then(j).then(k).then(c).then(function(c){return l(c,b.width||q.width(a),b.height||q.height(a))})}function c(a,b){return h(a,b||{}).then(function(b){return b.getContext("2d").getImageData(0,0,q.width(a),q.height(a)).data})}function d(a,b){return h(a,b||{}).then(function(a){return a.toDataURL()})}function e(a,b){return b=b||{},h(a,b).then(function(a){return a.toDataURL("image/jpeg",b.quality||1)})}function f(a,b){return h(a,b||{}).then(q.canvasToBlob)}function g(a){"undefined"==typeof a.imagePlaceholder?v.impl.options.imagePlaceholder=u.imagePlaceholder:v.impl.options.imagePlaceholder=a.imagePlaceholder,"undefined"==typeof a.cacheBust?v.impl.options.cacheBust=u.cacheBust:v.impl.options.cacheBust=a.cacheBust}function h(a,c){function d(a){var b=document.createElement("canvas");if(b.width=c.width||q.width(a),b.height=c.height||q.height(a),c.bgcolor){var d=b.getContext("2d");d.fillStyle=c.bgcolor,d.fillRect(0,0,b.width,b.height)}return b}return b(a,c).then(q.makeImage).then(q.delay(100)).then(function(b){var c=d(a);return c.getContext("2d").drawImage(b,0,0),c})}function i(a,b,c){function d(a){return a instanceof HTMLCanvasElement?q.makeImage(a.toDataURL()):a.cloneNode(!1)}function e(a,b,c){function d(a,b,c){var d=Promise.resolve();return b.forEach(function(b){d=d.then(function(){return i(b,c)}).then(function(b){b&&a.appendChild(b)})}),d}var e=a.childNodes;return 0===e.length?Promise.resolve(b):d(b,q.asArray(e),c).then(function(){return b})}function f(a,b){function c(){function c(a,b){function c(a,b){q.asArray(a).forEach(function(c){b.setProperty(c,a.getPropertyValue(c),a.getPropertyPriority(c))})}a.cssText?b.cssText=a.cssText:c(a,b)}c(window.getComputedStyle(a),b.style)}function d(){function c(c){function d(a,b,c){function d(a){var b=a.getPropertyValue("content");return a.cssText+" content: "+b+";"}function e(a){function b(b){return b+": "+a.getPropertyValue(b)+(a.getPropertyPriority(b)?" !important":"")}return q.asArray(a).map(b).join("; ")+";"}var f="."+a+":"+b,g=c.cssText?d(c):e(c);return document.createTextNode(f+"{"+g+"}")}var e=window.getComputedStyle(a,c),f=e.getPropertyValue("content");if(""!==f&&"none"!==f){var g=q.uid();b.className=b.className+" "+g;var h=document.createElement("style");h.appendChild(d(g,c,e)),b.appendChild(h)}}[":before",":after"].forEach(function(a){c(a)})}function e(){a instanceof HTMLTextAreaElement&&(b.innerHTML=a.value),a instanceof HTMLInputElement&&b.setAttribute("value",a.value)}function f(){b instanceof SVGElement&&(b.setAttribute("xmlns","http://www.w3.org/2000/svg"),b instanceof SVGRectElement&&["width","height"].forEach(function(a){var c=b.getAttribute(a);c&&b.style.setProperty(a,c)}))}return b instanceof Element?Promise.resolve().then(c).then(d).then(e).then(f).then(function(){return b}):b}return c||!b||b(a)?Promise.resolve(a).then(d).then(function(c){return e(a,c,b)}).then(function(b){return f(a,b)}):Promise.resolve()}function j(a){return s.resolveAll().then(function(b){var c=document.createElement("style");return a.appendChild(c),c.appendChild(document.createTextNode(b)),a})}function k(a){return t.inlineAll(a).then(function(){return a})}function l(a,b,c){return Promise.resolve(a).then(function(a){return a.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),(new XMLSerializer).serializeToString(a)}).then(q.escapeXhtml).then(function(a){return'<foreignObject x="0" y="0" width="100%" height="100%">'+a+"</foreignObject>"}).then(function(a){return'<svg xmlns="http://www.w3.org/2000/svg" width="'+b+'" height="'+c+'">'+a+"</svg>"}).then(function(a){return"data:image/svg+xml;charset=utf-8,"+a})}function m(){function a(){var a="application/font-woff",b="image/jpeg";return{woff:a,woff2:a,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:b,jpeg:b,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"}}function b(a){var b=/\.([^\.\/]*?)$/g.exec(a);return b?b[1]:""}function c(c){var d=b(c).toLowerCase();return a()[d]||""}function d(a){return a.search(/^(data:)/)!==-1}function e(a){return new Promise(function(b){for(var c=window.atob(a.toDataURL().split(",")[1]),d=c.length,e=new Uint8Array(d),f=0;f<d;f++)e[f]=c.charCodeAt(f);b(new Blob([e],{type:"image/png"}))})}function f(a){return a.toBlob?new Promise(function(b){a.toBlob(b)}):e(a)}function g(a,b){var c=document.implementation.createHTMLDocument(),d=c.createElement("base");c.head.appendChild(d);var e=c.createElement("a");return c.body.appendChild(e),d.href=b,e.href=a,e.href}function h(){var a=0;return function(){function b(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}return"u"+b()+a++}}function i(a){return new Promise(function(b,c){var d=new Image;d.onload=function(){b(d)},d.onerror=c,d.src=a})}function j(a){var b=3e4;return v.impl.options.cacheBust&&(a+=(/\?/.test(a)?"&":"?")+(new Date).getTime()),new Promise(function(c){function d(){if(4===g.readyState){if(200!==g.status)return void(h?c(h):f("cannot fetch resource: "+a+", status: "+g.status));var b=new FileReader;b.onloadend=function(){var a=b.result.split(/,/)[1];c(a)},b.readAsDataURL(g.response)}}function e(){h?c(h):f("timeout of "+b+"ms occured while fetching resource: "+a)}function f(a){console.error(a),c("")}var g=new XMLHttpRequest;g.onreadystatechange=d,g.ontimeout=e,g.responseType="blob",g.timeout=b,g.open("GET",a,!0),g.send();var h;if(v.impl.options.imagePlaceholder){var i=v.impl.options.imagePlaceholder.split(/,/);i&&i[1]&&(h=i[1])}})}function k(a,b){return"data:"+b+";base64,"+a}function l(a){return a.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")}function m(a){return function(b){return new Promise(function(c){setTimeout(function(){c(b)},a)})}}function n(a){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}function o(a){return a.replace(/#/g,"%23").replace(/\n/g,"%0A")}function p(a){var b=r(a,"border-left-width"),c=r(a,"border-right-width");return a.scrollWidth+b+c}function q(a){var b=r(a,"border-top-width"),c=r(a,"border-bottom-width");return a.scrollHeight+b+c}function r(a,b){var c=window.getComputedStyle(a).getPropertyValue(b);return parseFloat(c.replace("px",""))}return{escape:l,parseExtension:b,mimeType:c,dataAsUrl:k,isDataUrl:d,canvasToBlob:f,resolveUrl:g,getAndEncode:j,uid:h(),delay:m,asArray:n,escapeXhtml:o,makeImage:i,width:p,height:q}}function n(){function a(a){return a.search(e)!==-1}function b(a){for(var b,c=[];null!==(b=e.exec(a));)c.push(b[1]);return c.filter(function(a){return!q.isDataUrl(a)})}function c(a,b,c,d){function e(a){return new RegExp("(url\\(['\"]?)("+q.escape(a)+")(['\"]?\\))","g")}return Promise.resolve(b).then(function(a){return c?q.resolveUrl(a,c):a}).then(d||q.getAndEncode).then(function(a){return q.dataAsUrl(a,q.mimeType(b))}).then(function(c){return a.replace(e(b),"$1"+c+"$3")})}function d(d,e,f){function g(){return!a(d)}return g()?Promise.resolve(d):Promise.resolve(d).then(b).then(function(a){var b=Promise.resolve(d);return a.forEach(function(a){b=b.then(function(b){return c(b,a,e,f)})}),b})}var e=/url\(['"]?([^'"]+?)['"]?\)/g;return{inlineAll:d,shouldProcess:a,impl:{readUrls:b,inline:c}}}function o(){function a(){return b(document).then(function(a){return Promise.all(a.map(function(a){return a.resolve()}))}).then(function(a){return a.join("\n")})}function b(){function a(a){return a.filter(function(a){return a.type===CSSRule.FONT_FACE_RULE}).filter(function(a){return r.shouldProcess(a.style.getPropertyValue("src"))})}function b(a){var b=[];return a.forEach(function(a){try{q.asArray(a.cssRules||[]).forEach(b.push.bind(b))}catch(c){console.log("Error while reading CSS rules from "+a.href,c.toString())}}),b}function c(a){return{resolve:function(){var b=(a.parentStyleSheet||{}).href;return r.inlineAll(a.cssText,b)},src:function(){return a.style.getPropertyValue("src")}}}return Promise.resolve(q.asArray(document.styleSheets)).then(b).then(a).then(function(a){return a.map(c)})}return{resolveAll:a,impl:{readAll:b}}}function p(){function a(a){function b(b){return q.isDataUrl(a.src)?Promise.resolve():Promise.resolve(a.src).then(b||q.getAndEncode).then(function(b){return q.dataAsUrl(b,q.mimeType(a.src))}).then(function(b){return new Promise(function(c,d){a.onload=c,a.onerror=d,a.src=b})})}return{inline:b}}function b(c){function d(a){var b=a.style.getPropertyValue("background");return b?r.inlineAll(b).then(function(b){a.style.setProperty("background",b,a.style.getPropertyPriority("background"))}).then(function(){return a}):Promise.resolve(a)}return c instanceof Element?d(c).then(function(){return c instanceof HTMLImageElement?a(c).inline():Promise.all(q.asArray(c.childNodes).map(function(a){return b(a)}))}):Promise.resolve(c)}return{inlineAll:b,impl:{newImage:a}}}var q=m(),r=n(),s=o(),t=p(),u={imagePlaceholder:void 0,cacheBust:!1},v={toSvg:b,toPng:d,toJpeg:e,toBlob:f,toPixelData:c,impl:{fontFaces:s,images:t,util:q,inliner:r,options:{}}};"undefined"!=typeof module?module.exports=v:a.domtoimage=v}(this); \ No newline at end of file diff --git a/web-ui/src/main/resources/catalog/locales/en-admin.json b/web-ui/src/main/resources/catalog/locales/en-admin.json index ea30bfd3131..7f3cd11fd34 100644 --- a/web-ui/src/main/resources/catalog/locales/en-admin.json +++ b/web-ui/src/main/resources/catalog/locales/en-admin.json @@ -633,22 +633,6 @@ "system/documentation": "Documentation configuration", "system/documentation/url": "Base manual url", "system/documentation/url-help": "Base application manual url. Defaults to the official manual page (https://docs.geonetwork-opensource.org/{version}/{lang}) and can be customised to use a self hosted documentation with a custom branding. The url can contain \\{\\{lang\\}\\} placeholder, to display the manual in different languages when available, and \\{\\{version\\}\\} placeholder to use the application version.", - "system/publication": "Publication", - "system/publication/doi/doienabled": "Allow creation of Digital Object Identifier (DOI)", - "system/publication/doi/doipattern": "DOI pattern", - "system/publication/doi/doipattern-help": "Default is '\\{\\{uuid\\}\\}' but the DOI structure can be customized with database id and/or record group eg. 'example-\\{\\{groupOwner\\}\\}-\\{\\{id\\}\\}'", - "system/publication/doi/doienabled-help": "A Digital Object Identifier (DOI) is an alphanumeric string assigned to uniquely identify an object. It is tied to a metadata description of the object as well as to a digital location, such as a URL, where all the details about the object are accessible. More information available on <a href='https://www.datacite.org/dois.html'>DataCite website</a>.", - "system/publication/doi/doipublicurl": "The final DOI URL prefix", - "system/publication/doi/doipublicurl-help": "Keep it empty to use the default https://doi.org prefix. Use https://mds.test.datacite.org/doi when using the test API.", - "system/publication/doi/doiurl": "The DataCite API endpoint", - "system/publication/doi/doiurl-help": "Usually https://mds.datacite.org or https://mds.test.datacite.org for testing.", - "system/publication/doi/doiusername": "Your DataCite username", - "system/publication/doi/doipassword": "Your DataCite password", - "system/publication/doi/doipassword-help": "All requests to the MDS API require authentication. For this reason, only traffic via a secure connection (HTTPS) is supported. The DataCite Metadata Store (MDS) uses HTTP Basic authentication. You can obtain an account <a href='https://support.datacite.org/docs/obtain-test-account'>here</a>.", - "system/publication/doi/doikey": "Your DataCite prefix", - "system/publication/doi/doikey-help": "Usually looks like 10.xxxx. You will be allowed to register DOI names only under the prefixes that have been assigned to you.", - "system/publication/doi/doilandingpagetemplate": "DOI landing page URL template", - "system/publication/doi/doilandingpagetemplate-help": "The URL to use to register the DOI. A good default for GeoNetwork is http://localhost:8080/geonetwork/srv/resources/records/\\{\\{uuid\\}\\}. The landing page URL MUST contains the UUID of the record.", "system/csw": "Catalog Service for the Web (CSW)", "system/csw/capabilityRecordUuid": "Record to use for GetCapabilities", "system/csw/capabilityRecordUuid-help": "Choose the record to be used to build custom GetCapabilities document. If none exist, create a service metadata record (using ISO19139 or 19115-3 standards). To have a capabilities document with the main information required, set title, abstract, point of contact, keywords, constraints. If you need INSPIRE support also set properly the record main language and additional languages, INSPIRE themes and INSPIRE conformity.", @@ -884,7 +868,7 @@ "metadata/workflow/forceValidationOnMdSave-help": "When the metadata is saved force validation check", "metadata/import": "Metadata import", "metadata/import/restrict": "Restrict import to schemas", - "metadata/import/restrict-help": "List of all allowed schemas for metadata to be imported. If the metadata schema is not allowed, then the import is not done. No value means all schemas allowed.", + "metadata/import/restrict-help": "Comma separated list of all allowed schemas for metadata to be imported. If the metadata schema is not allowed, then the import is not done. No value means all schemas allowed.", "metadata/import/userprofile": "Minimum user profile allowed to import metadata", "metadata/import/userprofile-help": "Minimum user profile allowed to import metadata (Editor, Reviewer or Administrator). The default value is Editor.", "metadata/delete": "Metadata delete", @@ -1098,6 +1082,7 @@ "ui-mod-header": "Top toolbar", "ui-mod-footer": "Footer", "ui-mod-cookieWarning": "Cookie warning", + "ui-mod-directory": "Directory", "ui-createPageTpl": "New metadata page layout", "ui-createPageTpl-horizontal": "Horizontal", "ui-createPageTpl-vertical": "Vertical", @@ -1512,6 +1497,33 @@ "fieldTooShort": "The value is too short", "fieldEmailNotValid": "A valid email address is required", "formConfirmExit": "The form has changes, if you exit the changes will be lost. Do you want to exit on the page?", + "manageDoiServers": "DOI servers", + "doiservers": "DOI servers", + "doiservers-description": "A Digital Object Identifier (DOI) is an alphanumeric string assigned to uniquely identify an object. It is tied to a metadata description of the object as well as to a digital location, such as a URL, where all the details about the object are accessible. More information available on <a href='https://www.datacite.org/dois.html'>DataCite website</a>.", + "newDoiServer": "New server", + "updateDoiServer": "Update server", + "doiserver-name": "Server name", + "doiserver-description": "Description", + "doiserver-url": "DataCite API endpoint", + "doiserver-url-help": "Usually https://mds.datacite.org or https://mds.test.datacite.org for testing.", + "doiserver-apiKey": "API Key", + "doiserver-landingPageTemplate": "Landing page URL template", + "doiserver-landingPageTemplate-help": "The URL to use to register the DOI. A good default for GeoNetwork is http://localhost:8080/geonetwork/srv/resources/records/\\{\\{uuid\\}\\}. The landing page URL MUST contains the UUID of the record.", + "doiserver-publicUrl": "Final DOI URL prefix", + "doiserver-publicUrl-help": "Keep it empty to use the default https://doi.org prefix. Use https://mds.test.datacite.org/doi when using the test API.", + "doiserver-username": "DataCite username", + "doiserver-password": "DataCite password", + "doiserver-password-help": "All requests to the MDS API require authentication. For this reason, only traffic via a secure connection (HTTPS) is supported. The DataCite Metadata Store (MDS) uses HTTP Basic authentication. You can obtain an account <a href='https://support.datacite.org/docs/obtain-test-account'>here</a>.", + "doiserver-pattern": "DOI pattern", + "doiserver-pattern-help": "Default is '\\{\\{uuid\\}\\}' but the DOI structure can be customized with database id and/or record group eg. 'example-\\{\\{groupOwner\\}\\}-\\{\\{id\\}\\}'", + "doiserver-prefix": "DataCite prefix", + "doiserver-prefix-help": "Usually looks like 10.xxxx. You will be allowed to register DOI names only under the prefixes that have been assigned to you.", + "doiserver-publicationGroups": "Publication groups", + "doiserver-publicationGroups-help": "Select the groups which metadata should be published to the DOI server. If no groups are selected, the server will be provided to publish the metadata that has no other DOI servers related to the metadata owner group.", + "doiserver-defaultApiText": "DataCite API", + "doiserver-testApiText": "DataCite API test", + "doiserver-euApiText": "Publication Office of the European Union", + "confirmDoiServerDelete": "Are you sure you want to delete this DOI server?", "NoTranslationProvider": "No translation provider", "LibreTranslate": "Libretranslate" } diff --git a/web-ui/src/main/resources/catalog/locales/en-editor.json b/web-ui/src/main/resources/catalog/locales/en-editor.json index dd6dc4a1fd8..a2e2ba082c7 100644 --- a/web-ui/src/main/resources/catalog/locales/en-editor.json +++ b/web-ui/src/main/resources/catalog/locales/en-editor.json @@ -236,6 +236,7 @@ "onlineUseDQReport": "Data quality report", "onlineUseDQTOR": "Data quality specification", "onlineUseDQProdReport": "Data quality production report", + "onlineUseMap": "Map", "onlineUseLegend": "Legend for the resource", "onlineUseLegendLYR": "Style for the resource for ArcGIS (LYR)", "onlineUseStyleSLD": "Style for the resource using SLD", @@ -441,6 +442,8 @@ "addOnlinesrc#API-help": "eg. view service, REST API", "addOnlinesrc#onlineDownload|localNetwork": "Add download", "addOnlinesrc#onlineDownload|localNetwork-help": "eg. file, download service, local network links", + "addOnlinesrc#onlineUseMap": "Add map", + "addOnlinesrc#onlineUseMap-help": "eg. PDF static maps or OGC Web Map Context interactive maps", "addOnlinesrc#onlineUseLegend": "Add portrayal", "addOnlinesrc#onlineUseLegend-help": "eg. LYR, QML, SLD files", "addOnlinesrc#links": "Add links", @@ -454,5 +457,7 @@ "associated-fcats": "Feature catalog", "associated-siblings": "Associated resources", "associated-hasfeaturecats": "Using this feature catalog", - "associatedResourcesPanel": "Associated resources" + "associatedResourcesPanel": "Associated resources", + "validationSuccessLabel": "success", + "validationErrorLabel": "errors" } diff --git a/web-ui/src/main/resources/catalog/locales/en-search.json b/web-ui/src/main/resources/catalog/locales/en-search.json index 65a4d70eba6..9a2a2be6837 100644 --- a/web-ui/src/main/resources/catalog/locales/en-search.json +++ b/web-ui/src/main/resources/catalog/locales/en-search.json @@ -366,8 +366,8 @@ "shareOnLinkedIn": "Share on LinkedIn", "shareByEmail": "Share by email", "zoomto": "Zoom To", - "recordNotFound": "The record with identifier <strong>{{uuid}}</strong> was not found or is not shared with you. Try to <a href=\"catalog.signin?redirect={{url}}\">sign in</a> if you've an account.", - "intersectWith": "Intersects with", + "recordNotFound": "The record with identifier <strong>{{uuid}}</strong> was not found or is not shared with you.", + "trySignIn": "Try to <a href=\"catalog.signin?redirect={{url}}\">sign in</a> if you've an account.", "intersectWith": "Intersects with", "fullyOutsideOf": "Fully outside of", "encloses": "Enclosing", "within": "Within", diff --git a/web-ui/src/main/resources/catalog/locales/en-v4.json b/web-ui/src/main/resources/catalog/locales/en-v4.json index e412c79f700..59927c5984e 100644 --- a/web-ui/src/main/resources/catalog/locales/en-v4.json +++ b/web-ui/src/main/resources/catalog/locales/en-v4.json @@ -164,12 +164,14 @@ "dropIndexAndRebuild": "Delete index and reindex", "rebuildIndexHelp": "While rebuilding index, search may return incomplete results and the CSW GetRecords operation can be disabled (if you selected the option in the settings). Use this function, when catalog traffic is low. It's recommended to rebuild index manually from here when making changes directly in the database. If you change index mapping (cf. <a href='https://github.com/geonetwork/core-geonetwork/blob/es/web/src/main/webResources/WEB-INF/data/config/index/records.json'>records.json</a>), then you have to click on 'Delete index and reindex'.", "indexInEsDoneError": "There is an error with the index. See the logs for details", - "indexInEsDone": "The indexing operation was successfull", + "indexInEsDone": "The indexing operation was successful", "indexCommit": "Commit index changes", "indexCommit-help": "To use only if indexing task is hanging.", "indexCommitError": "Error while committing index changes.", "ui-moreLikeThisConfig": "More like this configuration", - "ui-moreLikeThisConfig-help": "Configuration must have a more_like_this.like which will be set with the record title to search for similar records.", + "ui-moreLikeThisConfig-help": "Configuration must have a more_like_this.like which will be set with the record title to search for similar records. (See <a href=\"https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html\">Elasticsearch API</a>).", + "ui-moreLikeThisFilter": "More like this query filter", + "ui-moreLikeThisFilter-help": "Optional filter expression to apply on the more like this query (eg. <pre>-cl_status.key:(obsolete OR historicalArchive OR superseded)</pre> to exclude obsolete records).", "ui-autocompleteConfig": "Autocompletion configuration", "ui-autocompleteConfig-help": "Configuration must have a query.multi_match.query which will be set on autocompletion.", "ui-facetConfig": "Facets configuration", @@ -405,6 +407,9 @@ "measureDescription": "Description", "measureValue": "Value", "measureDate": "Date", + "nextUpdateDate": "Next update", + "userDefinedFrequency": "Update frequency", + "maintenanceNote": "Maintenance note", "switchPortals": "Switch to another Portal", "dataPreview": "Discover data", "tableOfContents": "Table of Contents", @@ -432,7 +437,7 @@ "overviewUrl": "Overview URL", "restApiUrl": "REST API URL", "filterHelp": "Please click on one of the buttons below to activate the filter", - "selectDOIResource": "Choose a DOI resource", + "selectDOIResource": "Search for a DOI", "httpStatus--200": "Invalid status", "httpStatus-200": "200: Valid status", "httpStatus-404": "404: Not found", diff --git a/web-ui/src/main/resources/catalog/style/gn.less b/web-ui/src/main/resources/catalog/style/gn.less index c0f4782dfb6..9262198a246 100644 --- a/web-ui/src/main/resources/catalog/style/gn.less +++ b/web-ui/src/main/resources/catalog/style/gn.less @@ -1604,6 +1604,9 @@ gn-indexing-task-status { .text-large { font-size: 30px; } +.width-auto { + width: auto; +} .width-100 { width: 100%; } diff --git a/web-ui/src/main/resources/catalog/style/gn_admin.less b/web-ui/src/main/resources/catalog/style/gn_admin.less index bdb3df8caeb..df08bc00014 100644 --- a/web-ui/src/main/resources/catalog/style/gn_admin.less +++ b/web-ui/src/main/resources/catalog/style/gn_admin.less @@ -219,7 +219,8 @@ ul.pager { #gn-mapservers-container, #gn-sources-container, #gn-metadatatemplates-container, -#gn-static-pages-container { +#gn-static-pages-container, +#gn-doiservers-container { // Fixes gn-modal windows; TODO: fix this globally in gn-popup style [gn-modal] { max-width: none; diff --git a/web-ui/src/main/resources/catalog/style/gn_editor.less b/web-ui/src/main/resources/catalog/style/gn_editor.less index 64920135207..b32bd5b872b 100644 --- a/web-ui/src/main/resources/catalog/style/gn_editor.less +++ b/web-ui/src/main/resources/catalog/style/gn_editor.less @@ -1024,3 +1024,9 @@ gn-bounding-polygon { border-radius: 50% !important; } } + +#gn-editor-validation-panel { + button.inactive { + opacity: 0.65; + } +} diff --git a/web-ui/src/main/resources/catalog/style/gn_icons.less b/web-ui/src/main/resources/catalog/style/gn_icons.less index 9425c45040f..6eb3ddf60f7 100644 --- a/web-ui/src/main/resources/catalog/style/gn_icons.less +++ b/web-ui/src/main/resources/catalog/style/gn_icons.less @@ -17,12 +17,12 @@ content: @fa-var-cog; } .gn-icon-map:before, +.gn-icon-map-static:before, .gn-icon-staticMap:before, -.gn-icon-maps:before { - content: @fa-var-map; -} +.gn-icon-maps:before, +.gn-icon-map-interactive:before, .gn-icon-interactiveMap:before { - content: @fa-var-globe; + content: @fa-var-map; } .gn-icon-featureCatalog:before { content: @fa-var-table; diff --git a/web-ui/src/main/resources/catalog/style/gn_metadata.less b/web-ui/src/main/resources/catalog/style/gn_metadata.less index 33ac3d63140..a830b0fe0fe 100644 --- a/web-ui/src/main/resources/catalog/style/gn_metadata.less +++ b/web-ui/src/main/resources/catalog/style/gn_metadata.less @@ -551,8 +551,6 @@ ul.container-list { margin-bottom: 0.5em; } td { - padding-left: 40px; - word-break: break-word; ul { padding-left: 0; } diff --git a/web-ui/src/main/resources/catalog/style/gn_viewer.less b/web-ui/src/main/resources/catalog/style/gn_viewer.less index c346e805fef..b9198d23921 100644 --- a/web-ui/src/main/resources/catalog/style/gn_viewer.less +++ b/web-ui/src/main/resources/catalog/style/gn_viewer.less @@ -341,7 +341,6 @@ .list-group-item { transition: max-height @transition-params; padding: 5px 15px; - min-height: 42px; &:hover, &:focus { .fa-arrows-alt, @@ -360,6 +359,11 @@ } } } + .gn-facet-container { + .list-group-item { + border: 0; + } + } .gn-baselayer-switcher-menu { list-style: none; .list-group-item { @@ -418,10 +422,11 @@ } } h4 { - margin: 1em 0 0.5em 0; + margin: 1em 0 0 0; + font-size: 16px; } h5 { - margin: 0.2em 0; + margin: 0.7em 0; } [data-gn-layer-dimensions] { overflow: unset !important; @@ -841,11 +846,48 @@ gn-features-tables, .tab-content { background: white; min-height: 5em; - padding: 1em; + padding: 0 15px; } .gn-features-table { - padding: 0.25em; - box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.1); + .bootstrap-table { + display: grid; + grid-template-columns: auto 0fr; + grid-template-rows: auto; + grid-template-areas: + "main toolbar" + "footer toolbar"; + .fixed-table-toolbar { + grid-area: toolbar; + .columns-right { + margin: 0 0 0 10px; + display: inline-block; + vertical-align: middle; + .btn, + .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; + margin-top: -1px; + margin-left: 0; + border-radius: 0; + } + .btn:first-child:not(:last-child) { + border-radius: 4px 4px 0 0; + } + .btn-group:last-child:not(:first-child) > .btn:first-child { + border-radius: 0 0 4px 4px; + } + } + } + .fixed-table-container { + grid-area: main; + } + .fixed-table-pagination { + grid-area: footer; + } + } } .layername { display: inline-block; @@ -878,6 +920,11 @@ gn-features-tables, } .gn-md-view { + .tab-content { + background: white; + min-height: 5em; + padding: 0 0 15px 0; + } gn-features-tables { position: unset; .gn-features-table { @@ -891,6 +938,32 @@ gn-features-tables, [data-gn-wfs-filter-facets] .gn-facet-container { overflow: auto; max-height: 550px; + .list-group { + margin-bottom: 0; + .list-group-item { + border: 0; + padding: 8px 15px; + } + } + } +} +.gn-editor-sidebar { + .gn-related-resources { + p { + margin-top: 5px; + } + } + .gn-related-item { + h4 { + font-size: 14px; + } + } + .wfs-filter-group { + margin-top: 10px; + margin-bottom: 0; + .btn { + .btn-xs(); + } } } diff --git a/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.html b/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.html index 8057edba033..77ea9d96c9c 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.html +++ b/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.html @@ -98,6 +98,21 @@ <fieldset> <legend data-translate="">filteringAndProcessing</legend> + <div id="gn-harvest-settings-gn-advanced-xsl-row"> + <label + id="gn-harvest-settings-gn-advanced-xsl-label" + class="control-label" + data-translate="" + >geonetwork-xslfilter</label + > + <div + id="gn-harvest-settings-gn-advanced-xsl-input" + data-gn-import-xsl="harvesterSelected.site.xslfilter" + data-mode="btn-group" + ></div> + <p class="help-block" data-translate="">geonetwork-xslfilterHelp</p> + </div> + <div id="gn-harvest-settings-webdav-advanced-validate-row"> <label id="gn-harvest-settings-webdav-advanced-validate-label" diff --git a/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.js b/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.js index 29ce0fb1cad..95ec0705197 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.js +++ b/web-ui/src/main/resources/catalog/templates/admin/harvest/type/webdav.js @@ -1,87 +1,91 @@ // This is not that much elegant and should be replaced by some kind // of Angular module. var gnHarvesterwebdav = { - createNew : function() { - return { - "@id" : "", - "@type" : "webdav", - "owner" : [], - "ownerGroup" : [], - "ownerUser": [""], - "site" : { - "name" : "", - "uuid" : "", - "url" : "http://", - "account" : { - "use" : false, - "username" : [], - "password" : [] - }, - "icon" : "blank.png" - }, - "content" : { - "validate" : "NOVALIDATION", - "importxslt" : "none", - "translateContent": false, - "translateContentLangs": "", - "translateContentFields": "" - }, - "options" : { - "every" : "0 0 0 ? * *", - "oneRunOnly" : false, - "status" : "active", - "recurse" : true, - "overrideUuid" : "SKIP", - "subtype" : "waf" - }, - "ifRecordExistAppendPrivileges": false, - "privileges" : [ { - "@id" : "1", - "operation" : [ { - "@name" : "view" - }, { - "@name" : "dynamic" - } ] - } ], - "categories" : [{'@id': ''}], - "info" : { - "lastRun" : [], - "running" : false - } - }; - }, - buildResponse : function(h, $scope) { - var body = '<node id="' + h['@id'] + '" ' - + ' type="' + h['@type'] + '">' - + ' <ownerGroup><id>' + h.ownerGroup[0] + '</id></ownerGroup>' - + ' <ownerUser><id>' + h.ownerUser[0] + '</id></ownerUser>' - + ' <site>' - + ' <name>' + h.site.name + '</name>' - + ' <url>' + h.site.url.replace(/&/g, '&') + '</url>' - + ' <icon>' + h.site.icon + '</icon>' - + ' </site>' - + ' <account>' - + ' <use>' + h.site.account.use + '</use>' - + ' <username>' + h.site.account.username + '</username>' - + ' <password>' + h.site.account.password + '</password>' - + ' </account>' - + ' <options>' - + ' <oneRunOnly>' + h.options.oneRunOnly + '</oneRunOnly>' - + ' <overrideUuid>' + h.options.overrideUuid + '</overrideUuid>' - + ' <every>' + h.options.every + '</every>' - + ' <status>' + h.options.status + '</status>' - + ' <recurse>' + h.options.recurse + '</recurse>' - + ' <subtype>' + h.options.subtype + '</subtype>' - + ' </options>' - + ' <content>' - + ' <validate>' + h.content.validate + '</validate>' - + ' <importxslt>' + h.content.importxslt + '</importxslt>' - + ' <translateContent>' + _.escape(h.content.translateContent) + '</translateContent>' - + ' <translateContentLangs>' + _.escape(h.content.translateContentLangs) + '</translateContentLangs>' - + ' <translateContentFields>' + _.escape(h.content.translateContentFields) + '</translateContentFields>' - + ' </content>' - + $scope.buildResponseGroup(h) - + $scope.buildResponseCategory(h) + '</node>'; - return body; - } + createNew: function () { + return { + "@id": "", + "@type": "webdav", + "owner": [], + "ownerGroup": [], + "ownerUser": [""], + "site": { + "name": "", + "uuid": "", + "url": "http://", + "account": { + "use": false, + "username": [], + "password": [] + }, + "icon": "blank.png", + "xslfilter": [] + }, + "content": { + "validate": "NOVALIDATION", + "importxslt": "none", + "translateContent": false, + "translateContentLangs": "", + "translateContentFields": "" + }, + "options": { + "every": "0 0 0 ? * *", + "oneRunOnly": false, + "status": "active", + "recurse": true, + "overrideUuid": "SKIP", + "subtype": "waf" + }, + "ifRecordExistAppendPrivileges": false, + "privileges": [{ + "@id": "1", + "operation": [{ + "@name": "view" + }, { + "@name": "dynamic" + }] + }], + "categories": [{'@id': ''}], + "info": { + "lastRun": [], + "running": false + } + }; + }, + buildResponse: function (h, $scope) { + var body = '<node id="' + h['@id'] + '" ' + + ' type="' + h['@type'] + '">' + + ' <ownerGroup><id>' + h.ownerGroup[0] + '</id></ownerGroup>' + + ' <ownerUser><id>' + h.ownerUser[0] + '</id></ownerUser>' + + ' <site>' + + ' <name>' + h.site.name + '</name>' + + ' <url>' + h.site.url.replace(/&/g, '&') + '</url>' + + ' <icon>' + h.site.icon + '</icon>' + + ' <xslfilter>' + + (h.site.xslfilter[0] ? h.site.xslfilter.replace(/&/g, '&') : '') + + '</xslfilter>' + + ' </site>' + + ' <account>' + + ' <use>' + h.site.account.use + '</use>' + + ' <username>' + h.site.account.username + '</username>' + + ' <password>' + h.site.account.password + '</password>' + + ' </account>' + + ' <options>' + + ' <oneRunOnly>' + h.options.oneRunOnly + '</oneRunOnly>' + + ' <overrideUuid>' + h.options.overrideUuid + '</overrideUuid>' + + ' <every>' + h.options.every + '</every>' + + ' <status>' + h.options.status + '</status>' + + ' <recurse>' + h.options.recurse + '</recurse>' + + ' <subtype>' + h.options.subtype + '</subtype>' + + ' </options>' + + ' <content>' + + ' <validate>' + h.content.validate + '</validate>' + + ' <importxslt>' + h.content.importxslt + '</importxslt>' + + ' <translateContent>' + _.escape(h.content.translateContent) + '</translateContent>' + + ' <translateContentLangs>' + _.escape(h.content.translateContentLangs) + '</translateContentLangs>' + + ' <translateContentFields>' + _.escape(h.content.translateContentFields) + '</translateContentFields>' + + ' </content>' + + $scope.buildResponseGroup(h) + + $scope.buildResponseCategory(h) + '</node>'; + return body; + } }; diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/csw-test.html b/web-ui/src/main/resources/catalog/templates/admin/settings/csw-test.html index 36410627dc3..1be5c008285 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/settings/csw-test.html +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/csw-test.html @@ -69,6 +69,18 @@ <h4 data-translate="">cswSampleGetRequest</h4> >GetRecordById</a > </li> + <li> + <a + href="csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&ID=8c74e8c4-701a-4cd1-a988-7f2bf9e891bd&outputSchema=https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd/" + >GetRecordById (with outputSchema)</a + > + </li> + <li> + <a + href="csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecords&outputSchema=http://data.europa.eu/930/&elementSetName=full&resultType=results&maxRecords=30" + >GetRecords</a + > + </li> </ul> </div> </div> diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/doiservers.html b/web-ui/src/main/resources/catalog/templates/admin/settings/doiservers.html new file mode 100644 index 00000000000..dfb2ca9ba0c --- /dev/null +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/doiservers.html @@ -0,0 +1,488 @@ +<div class="row" data-ng-controller="GnDoiServerController" id="gn-doiservers-container"> + <div class="col-lg-4"> + <div class="panel panel-default"> + <div class="panel-heading" data-translate="">doiservers</div> + <div class="panel-body"> + <input + class="form-control" + data-ng-model="doiServersSearch.$" + autofocus="" + placeholder="{{'filter' | translate}}" + /> + <input type="hidden" data-ng-model="doiServerSelected.id" /> + + <div class="list-group"> + <a + href="" + class="list-group-item" + data-ng-repeat="v in doiServers | filter:doiServersSearch | orderBy:'name'" + data-ng-click="selectDoiServer(v)" + title="{{v.description}}" + > + {{v.name}} + </a> + </div> + + <button + type="button" + class="btn btn-primary btn-block" + data-ng-click="addDoiServer()" + > + <i class="fa fa-plus"></i> + <span data-translate="">newDoiServer</span> + </button> + </div> + </div> + + <div data-gn-need-help="doi-server-configuration"></div> + </div> + + <div class="col-lg-8" data-ng-hide="doiServerSelected == null"> + <div class="panel panel-default"> + <div class="panel-heading"> + <span data-ng-hide="doiServerSelected.id == ''" data-translate="" + >updateDoiServer</span + > + <span data-ng-hide="doiServerSelected.id != ''" data-translate="" + >newDoiServer</span + > + <strong>{{doiServerSelected.name}}</strong> + <div class="btn-toolbar pull-right"> + <button + data-ng-hide="doiServerSelected.id == ''" + type="button" + class="btn btn-default" + data-ng-click="resetDoiServerPassword(doiServerSelected.id)" + > + <i class="fa fa-lock"></i>  + <span data-translate="">resetPassword</span> + </button> + <button + type="button" + class="btn btn-primary" + data-ng-disabled="!gnDoiServerEdit.$valid || !gnDoiServerEdit.$dirty" + data-ng-click="saveDoiServer('#gn-doiserver-edit')" + > + <i class="fa fa-save"></i>  + <span data-translate="">save</span> + </button> + <button + type="button" + class="btn btn-primary btn-danger" + data-ng-hide="doiServerSelected.id == ''" + data-ng-click="deleteDoiServerConfig()" + > + <i class="fa fa-times"></i>  + <span data-translate="">delete</span> + </button> + </div> + </div> + <div class="panel-body"> + <form + id="gn-doiserver-edit" + name="gnDoiServerEdit" + class="form-horizontal" + data-ng-keypress="updatingDoiServer()" + data-confirm-message="{{ 'formConfirmExit' | translate}}" + data-confirm-on-exit="" + novalidate="" + > + <input type="hidden" name="_csrf" value="{{csrf}}" /> + <input + type="hidden" + name="id" + data-ng-model="doiServerSelected.id" + value="{{doiServerSelected.id}}" + /> + + <div + class="form-group" + data-ng-class="gnDoiServerEdit.name.$error.required || + (gnDoiServerEdit.name.$touched && gnDoiServerEdit.name.$invalid) ? 'has-error' : ''" + > + <label class="control-label col-sm-3" data-translate="" for="name" + >doiserver-name</label + > + + <div class="col-sm-9"> + <input + type="text" + id="name" + name="name" + class="form-control" + required="" + data-ng-model="doiServerSelected.name" + /> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.name.$error" + data-ng-if="gnDoiServerEdit.name.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + </div> + + <div class="form-group"> + <label class="control-label col-sm-3" data-translate="" + >doiserver-description</label + > + + <div class="col-sm-9"> + <textarea + name="description" + class="form-control" + data-ng-model="doiServerSelected.description" + ></textarea> + </div> + </div> + + <div + class="form-group" + data-ng-class="gnDoiServerEdit.url.$error.required || + (gnDoiServerEdit.url.$touched && gnDoiServerEdit.url.$invalid) ? 'has-error' : ''" + > + <label class="control-label col-sm-3" data-translate="" for="url" + >doiserver-url</label + > + + <div class="col-sm-9"> + <div class="input-group"> + <input + type="url" + name="url" + id="url" + class="form-control" + required="" + data-ng-model="doiServerSelected.url" + placeholder="http://" + /> + <div class="input-group-btn"> + <button + type="button" + class="btn btn-default dropdown-toggle" + data-toggle="dropdown" + aria-haspopup="true" + aria-expanded="false" + > + <i class="fa fa-fw fa-th-list"></i> + <span class="caret"></span> + </button> + <ul class="dropdown-menu dropdown-menu-right"> + <li> + <a + data-ng-click="updateDoiServerUrl('https://mds.datacite.org', '')" + title="{{'doiserver-defaultApiText' | translate}}" + data-translate="" + >doiserver-defaultApiText</a + > + </li> + <li> + <a + data-ng-click="updateDoiServerUrl('https://mds.test.datacite.org', 'https://mds.test.datacite.org/doi')" + title="{{'doiserver-testApiText' | translate}}" + data-translate="" + >doiserver-testApiText</a + > + </li> + <li> + <a + data-ng-click="updateDoiServerUrl('https://ra.publications.europa.eu/servlet/ws/doidata?api=medra.org', '')" + title="{{'doiserver-euApiText' | translate}}" + data-translate="" + >doiserver-euApiText</a + > + </li> + </ul> + </div> + </div> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.url.$error" + data-ng-if="gnDoiServerEdit.url.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate="">doiserver-url-help</p> + </div> + </div> + + <div + class="form-group" + data-ng-class="gnDoiServerEdit.username.$error.required || + (gnDoiServerEdit.username.$touched && gnDoiServerEdit.username.$invalid) ? 'has-error' : ''" + > + <label class="control-label col-sm-3" data-translate="" for="username" + >doiserver-username</label + > + + <div class="col-sm-9"> + <input + type="text" + class="form-control" + required="" + id="username" + name="username" + data-ng-model="doiServerSelected.username" + /> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.username.$error" + data-ng-if="gnDoiServerEdit.username.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + </div> + + <div data-ng-show="!isUpdate"> + <div + class="form-group" + data-ng-class="gnDoiServerEdit.password.$error.required || + (gnDoiServerEdit.password.$touched && gnDoiServerEdit.password.$invalid) ? 'has-error' : ''" + > + <label class="control-label col-sm-3" data-translate="" for="password" + >doiserver-password</label + > + + <div class="col-sm-9"> + <input + type="password" + class="form-control" + id="password" + name="password" + required="required" + autocomplete="new-password" + data-ng-model="doiServerSelected.password" + /> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.password.$error" + data-ng-if="gnDoiServerEdit.password.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate="">doiserver-password-help</p> + </div> + </div> + </div> + + <div + class="form-group" + data-ng-class="gnDoiServerEdit.landingPageTemplate.$error.required || + (gnDoiServerEdit.landingPageTemplate.$touched && gnDoiServerEdit.landingPageTemplate.$invalid) ? 'has-error' : ''" + > + <label + class="control-label col-sm-3" + data-translate="" + for="landingPageTemplate" + >doiserver-landingPageTemplate</label + > + + <div class="col-sm-9"> + <input + type="text" + id="landingPageTemplate" + name="landingPageTemplate" + class="form-control" + required="" + data-ng-model="doiServerSelected.landingPageTemplate" + placeholder="" + /> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.landingPageTemplate.$error" + data-ng-if="gnDoiServerEdit.landingPageTemplate.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate=""> + doiserver-landingPageTemplate-help + </p> + </div> + </div> + + <div class="form-group"> + <label class="control-label col-sm-3" data-translate="" for="publicUrl" + >doiserver-publicUrl</label + > + + <div class="col-sm-9"> + <input + type="text" + id="publicUrl" + class="form-control" + data-ng-model="doiServerSelected.publicUrl" + placeholder="" + /> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate="">doiserver-publicUrl-help</p> + </div> + </div> + + <div + class="form-group" + data-ng-class="gnDoiServerEdit.pattern.$error.required || + (gnDoiServerEdit.pattern.$touched && gnDoiServerEdit.pattern.$invalid) ? 'has-error' : ''" + > + <label class="control-label col-sm-3" data-translate="" for="pattern" + >doiserver-pattern</label + > + + <div class="col-sm-9"> + <input + type="text" + id="pattern" + name="pattern" + class="form-control" + required="" + data-ng-model="doiServerSelected.pattern" + placeholder="" + /> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.pattern.$error" + data-ng-if="gnDoiServerEdit.pattern.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate="">doiserver-pattern-help</p> + </div> + </div> + + <div + class="form-group" + data-ng-class="gnDoiServerEdit.prefix.$error.required || + (gnDoiServerEdit.prefix.$touched && gnDoiServerEdit.pattern.$invalid) ? 'has-error' : ''" + > + <label class="control-label col-sm-3" data-translate="" for="prefix" + >doiserver-prefix</label + > + + <div class="col-sm-9"> + <input + type="text" + id="prefix" + name="prefix" + class="form-control" + required="" + data-ng-model="doiServerSelected.prefix" + placeholder="" + /> + + <div + class="help-block" + data-ng-messages="gnDoiServerEdit.prefix.$error" + data-ng-if="gnDoiServerEdit.prefix.$touched" + > + <p data-ng-message="required" data-translate="">fieldRequired</p> + </div> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate="">doiserver-prefix-help</p> + </div> + </div> + + <div class="form-group"> + <label class="control-label col-sm-3" data-translate="" + >doiserver-publicationGroups</label + > + <div class="col-sm-9"> + <div + data-gn-multiselect="selectedPublicationGroups" + data-choices="groupsForPublication" + ></div> + </div> + + <div class="col-sm-9 col-sm-offset-3"> + <p class="help-block" data-translate="">doiserver-publicationGroups-help</p> + </div> + </div> + </form> + </div> + </div> + </div> + + <div + class="modal fade" + id="passwordResetModal" + tabindex="-1" + role="dialog" + aria-labelledby="{{'passwordReset' | translate}}" + aria-hidden="true" + > + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> + × + </button> + <h4 + class="modal-title" + data-translate="" + data-translate-values="{ user: '{{doiServerSelected.name}}'}" + > + resetPasswordTitle + </h4> + </div> + <div class="modal-body"> + <form id="gn-password-reset" class="form-horizontal" name="gnPasswordReset"> + <div class="form-group"> + <input type="hidden" name="_csrf" value="{{csrf}}" /> + <label class="control-label col-sm-3" data-translate="">password</label> + + <div class="col-sm-9"> + <input + type="password" + class="form-control" + required="required" + autocomplete="off" + data-ng-model="resetPassword" + /> + </div> + </div> + </form> + </div> + <div class="modal-footer"> + <button type="button" class="btn" data-dismiss="modal"> + <i class="fa fa-ban-circle"></i>  <span data-translate="">cancel</span> + </button> + <button type="button" class="btn btn-primary" data-ng-click="saveNewPassword()"> + <i class="fa fa-lock"></i>  + <span data-translate="">resetPassword</span> + </button> + </div> + </div> + </div> + </div> + + <div + gn-modal + class="gn-confirm-delete" + gn-popup-options="{title: 'confirmDialogTitle', confirmCallback: confirmDeleteDoiServerConfig}" + id="gn-confirm-remove-doiserver" + > + <p translate>confirmDoiServerDelete</p> + </div> +</div> diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/mapservers.html b/web-ui/src/main/resources/catalog/templates/admin/settings/mapservers.html index 62ee52e5ee7..671b60bbcc9 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/settings/mapservers.html +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/mapservers.html @@ -51,6 +51,7 @@ <button type="button" class="btn btn-default" + data-ng-hide="mapserverSelected.id === ''" data-ng-click="resetMapServerPassword(mapserverSelected.id)" > <i class="fa fa-lock"></i>  @@ -134,42 +135,11 @@ class="form-control" required="" data-ng-model="mapserverSelected.configurl" - placeholder="http://" + placeholder="http://localhost/geoserver/rest" /> </div> </div> - <fieldset data-ng-show="operation === 'ADD_NODE'"> - <legend data-translate="">useAccount</legend> - - <div class="form-group"> - <label class="control-label col-sm-3" data-translate="">username</label> - - <div class="col-sm-9"> - <input - type="text" - class="form-control" - required="" - data-ng-model="mapserverSelected.username" - /> - </div> - </div> - - <div class="form-group"> - <label class="control-label col-sm-3" data-translate="">password</label> - - <div class="col-sm-9"> - <input - type="password" - class="form-control" - required="required" - autocomplete="new-password" - data-ng-model="mapserverSelected.password" - /> - </div> - </div> - </fieldset> - <div class="form-group"> <label class="control-label col-sm-3" data-translate="">workspace</label> @@ -222,7 +192,7 @@ class="form-control" required="" data-ng-model="mapserverSelected.wmsurl" - placeholder="http://" + placeholder="http://localhost/geoserer/wms" /> </div> </div> @@ -237,7 +207,7 @@ class="form-control" required="" data-ng-model="mapserverSelected.wfsurl" - placeholder="http://" + placeholder="http://localhost/geoserver/wfs" /> </div> </div> @@ -252,7 +222,7 @@ class="form-control" required="" data-ng-model="mapserverSelected.wcsurl" - placeholder="http://" + placeholder="http://localhost/geoserver/wcs" /> </div> </div> diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/sources.html b/web-ui/src/main/resources/catalog/templates/admin/settings/sources.html index a0315d50b0f..56edf2a2bb6 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/settings/sources.html +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/sources.html @@ -50,6 +50,7 @@ {{::s.name}} <img class="gn-source-logo" + onerror="this.style.display='none'" data-ng-src="{{'../../images/' + (s.type === 'subportal' ? 'harvesting/' + s.logo : 'logos/' + s.uuid + '.png')}}" /> </a> @@ -169,6 +170,20 @@ </p> </div> + <table class="table table-striped"> + <tr data-ng-repeat="(key, value) in source.label"> + <td>{{key | translate}}</td> + <td> + <input + type="text" + class="form-control" + value="{{value}}" + data-ng-model="source.label[key]" + /> + </td> + </tr> + </table> + <label data-translate="">sourceFilter</label> <input type="text" class="form-control" data-ng-model="source.filter" /> <p class="help-block" data-translate="">sourceFilter-help</p> @@ -177,130 +192,116 @@ <span data-translate="">displayInHeaderSwitcher</span> </label> <p class="help-block" data-translate="">displayInHeaderSwitcher-help</p> - </form> - <div> - <label data-translate="">sourceLogo</label> + <label data-translate="">sourceUiConfig</label> + <select + id="uiConfigurationList" + class="form-control" + data-ng-options="c.id as c.id for (key, c) in uiConfigurations | orderBy: 'id'" + data-ng-model="source.uiConfig" + ></select> + <p class="help-block" data-translate="">sourceUiConfig-help</p> - <div class="row" data-ng-show="source.logo"> - <div class="col-md-6 gn-nopadding-left"> - <img - data-ng-show="source.logo" - src="../../images/harvesting/{{ source.logo }}" - class="img-thumbnail form-group" - data-ng-attr-title="{{ source.logo }}" - /> - </div> - <div class="col-md-6 gn-nopadding-left"> - <a href="" data-ng-click="deleteSourceLogo()" class="text-danger"> - <i data-ng-show="source.logo" class="fa fa-times delete"></i> - </a> - </div> + <div> + <label for="serviceList" + >{{'system/csw/capabilityRecordUuid' | translate}}</label + > + + <div + data-gn-suggest="serviceRecordSearchObj" + data-gn-suggest-model="source.serviceRecord" + data-gn-suggest-property="_id" + data-gn-suggest-display-title="span" + ></div> + + <p class="help-block"> + {{'system/csw/capabilityRecordUuid-help' | translate}} + </p> </div> - <!--Display logo picker from harvester logos--> - <div class="row" data-ng-show="queue.length == 0"> - <div class="col-md-12 gn-nopadding-left gn-margin-bottom" translate> - selectExistingLogo - </div> - <div class="col-md-12 gn-nopadding-left gn-margin-bottom"> - <div class="form-group" gn-logo-picker="source.logo"></div> - </div> + <div data-ng-show="groups.length"> + <label class="control-label" data-translate="">subPortalGroupOwner</label> + <div + data-groups-combo="" + data-owner-group="source.groupOwner" + data-set-default-value="false" + data-optional="{{::$parent.user.isAdministrator()}}" + lang="lang" + groups="groups" + data-exclude-special-groups="true" + ></div> + + <p class="help-block" data-translate="">subPortalGroupOwnerHelp</p> </div> - <!--Display logo upload input--> - <form - id="gn-group-edit" - name="gnGroupEdit" - method="POST" - data-file-upload="logoUploadOptions" - role="form" - > - <input type="hidden" name="_csrf" value="{{csrf}}" /> - <div class="row" data-ng-show="!source.logo" id="group-logo-upload"> - <div class="col-md-12 gn-nopadding-left gn-margin-bottom" translate> - addNewLogo + <div> + <label data-translate="">sourceLogo</label> + + <div class="row" data-ng-show="source.logo"> + <div class="col-md-6 gn-nopadding-left"> + <img + data-ng-show="source.logo" + src="../../images/harvesting/{{ source.logo }}" + class="img-thumbnail form-group" + data-ng-attr-title="{{ source.logo }}" + /> </div> - <div class="col-md-12 gn-nopadding-left gn-nopadding-right"> - <div class="panel panel-default"> - <div class="panel-heading" data-translate="">upload</div> - <div class="panel-body"> - <span class="btn btn-success btn-block fileinput-button"> - <i class="fa fa-plus fa-white"></i> - <span data-translate="">chooseLogos</span> - <input type="file" id="source-logo" name="file" /> - </span> - <ul style="list-style: none"> - <li data-ng-repeat="file in queue"> - <div class="preview" data-file-upload-preview="file"></div> - {{file.name}} ({{file.type}} / {{file.size | formatFileSize}}) - <i class="fa fa-trash-o" data-ng-click="clear(file)"></i> - </li> - </ul> - </div> - </div> + <div class="col-md-6 gn-nopadding-left"> + <a href="" data-ng-click="deleteSourceLogo()" class="text-danger"> + <i data-ng-show="source.logo" class="fa fa-times delete"></i> + </a> </div> </div> - </form> - - <p class="help-block" data-translate="">sourceLogo-help</p> - </div> - - <label data-translate="">sourceUiConfig</label> - <select - id="uiConfigurationList" - class="form-control" - data-ng-options="c.id as c.id for (key, c) in uiConfigurations | orderBy: 'id'" - data-ng-model="source.uiConfig" - ></select> - <p class="help-block" data-translate="">sourceUiConfig-help</p> - - <div> - <label for="serviceList" - >{{'system/csw/capabilityRecordUuid' | translate}}</label - > - - <div - data-gn-suggest="serviceRecordSearchObj" - data-gn-suggest-model="source.serviceRecord" - data-gn-suggest-property="_id" - data-gn-suggest-display-title="span" - ></div> + </div> + </form> - <p class="help-block"> - {{'system/csw/capabilityRecordUuid-help' | translate}} - </p> + <!--Display logo picker from harvester logos--> + <div class="row" data-ng-show="queue.length == 0"> + <div class="col-md-12 gn-nopadding-left gn-margin-bottom" translate> + selectExistingLogo + </div> + <div class="col-md-12 gn-nopadding-left gn-margin-bottom"> + <div class="form-group" gn-logo-picker="source.logo"></div> + </div> </div> - <div data-ng-show="groups.length"> - <label class="control-label" data-translate="">subPortalGroupOwner</label> - <div - data-groups-combo="" - data-owner-group="source.groupOwner" - data-set-default-value="false" - data-optional="{{::$parent.user.isAdministrator()}}" - lang="lang" - groups="groups" - data-exclude-special-groups="true" - ></div> + <!--Display logo upload input--> + <form + id="gn-group-edit" + name="gnGroupEdit" + method="POST" + data-file-upload="logoUploadOptions" + role="form" + > + <input type="hidden" name="_csrf" value="{{csrf}}" /> + <div class="row" data-ng-show="!source.logo" id="group-logo-upload"> + <div class="col-md-12 gn-nopadding-left gn-margin-bottom" translate> + addNewLogo + </div> + <div class="col-md-12 gn-nopadding-left gn-nopadding-right"> + <div class="panel panel-default"> + <div class="panel-heading" data-translate="">upload</div> + <div class="panel-body"> + <span class="btn btn-success btn-block fileinput-button"> + <i class="fa fa-plus fa-white"></i> + <span data-translate="">chooseLogos</span> + <input type="file" id="source-logo" name="file" /> + </span> + <ul style="list-style: none"> + <li data-ng-repeat="file in queue"> + <div class="preview" data-file-upload-preview="file"></div> + {{file.name}} ({{file.type}} / {{file.size | formatFileSize}}) + <i class="fa fa-trash-o" data-ng-click="clear(file)"></i> + </li> + </ul> + </div> + </div> + </div> + </div> + </form> - <p class="help-block" data-translate="">subPortalGroupOwnerHelp</p> - </div> + <p class="help-block" data-translate="">sourceLogo-help</p> </div> - - <table class="table table-striped"> - <tr data-ng-repeat="(key, value) in source.label"> - <td>{{key | translate}}</td> - <td> - <input - type="text" - class="form-control" - value="{{value}}" - data-ng-model="source.label[key]" - /> - </td> - </tr> - </table> </div> </div> </div> diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/ui.html b/web-ui/src/main/resources/catalog/templates/admin/settings/ui.html index 80dd7408aec..b6aa5a6197a 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/settings/ui.html +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/ui.html @@ -25,7 +25,7 @@ id="gn-uiconfig-toolbar" > <div class="row"> - <div class="col-md-4 gn-nopadding-left"> + <div class="col-md-6 gn-nopadding-left"> <label for="uiConfigurationList" title="{{'uiConfiguration-help' | translate}}" @@ -40,12 +40,12 @@ ></select> </div> - <div class="col-md-8 gn-nopadding-left gn-nopadding-right"> + <div class="col-md-6 gn-nopadding-left gn-nopadding-right"> <label for="addUiSettings" data-translate="">addUiSettings</label> <div class="row"> <!-- add UI config --> - <div class="col-md-6 gn-nopadding-left"> + <div class="col-md-12 gn-nopadding-left"> <div class="input-group"> <input class="form-control" @@ -70,7 +70,7 @@ </div> <!-- delete and save--> - <div class="col-md-6 gn-nopadding-left gn-nopadding-right"> + <div class="col-md-12 gn-nopadding-left gn-nopadding-right"> <div class="btn-toolbar pull-right"> <button type="submit" @@ -78,8 +78,9 @@ id="gn-btn-settings-delete" data-ng-disabled="!uiConfiguration" data-ng-click="deleteUiConfig()" + title="{{'deleteUiSettings'|translate}}" > - <span class="fa fa-times"></span> + <span class="fa fa-fw fa-times"></span> {{"deleteUiSettings"|translate}} </button> <button @@ -88,8 +89,9 @@ id="gn-btn-settings-save" data-ng-disabled="!gnSettings.$valid" data-ng-click="updateUiConfig()" + title="{{'saveSettings'|translate}}" > - <span class="fa fa-save"></span> + <span class="fa fa-fw fa-save"></span> {{"saveSettings"|translate}} </button> </div> @@ -104,7 +106,10 @@ data-ng-show="uiConfiguration.configuration !== undefined" > <div class="panel-heading"> - <h1><span data-translate="">ui</span> <strong>{{uiConfiguration.id}}</strong></h1> + <h1> + <span data-translate="" class="gn-margin-right-sm">ui</span> + <strong>{{uiConfiguration.id}}</strong> + </h1> <div data-gn-need-help="user-interface-configuration" class="pull-right"></div> </div> diff --git a/web-ui/src/main/resources/catalog/templates/admin/usergroup/users.html b/web-ui/src/main/resources/catalog/templates/admin/usergroup/users.html index 3c7271c9d70..39a7163574e 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/usergroup/users.html +++ b/web-ui/src/main/resources/catalog/templates/admin/usergroup/users.html @@ -614,7 +614,7 @@ <h3 data-translate="">UserAdmin</h3> data-gn-saved-selections="" data-ng-if="userSelected.id > 0" data-gn-saved-selections-panel="userSelected" - /> + ></div> </div> </div> </div> diff --git a/web-ui/src/main/resources/catalog/templates/formatter-viewer.html b/web-ui/src/main/resources/catalog/templates/formatter-viewer.html index e0a7427ae43..7a04c8b83b4 100644 --- a/web-ui/src/main/resources/catalog/templates/formatter-viewer.html +++ b/web-ui/src/main/resources/catalog/templates/formatter-viewer.html @@ -3,7 +3,7 @@ <div class="gn-md-actions-btn pull-right btn-group md-actions" data-gn-md-actions-menu="md" - /> + ></div> <a class="btn btn-primary gn-md-edit-btn" data-ng-show="user.canEditRecord(md)" diff --git a/web-ui/src/main/resources/catalog/views/default/directives/directive.js b/web-ui/src/main/resources/catalog/views/default/directives/directive.js index 3cb6d257501..91dcba20883 100644 --- a/web-ui/src/main/resources/catalog/views/default/directives/directive.js +++ b/web-ui/src/main/resources/catalog/views/default/directives/directive.js @@ -98,6 +98,7 @@ module.directive("gnMdActionsMenu", [ "gnMetadataActions", "$http", + "$q", "gnConfig", "gnConfigService", "gnGlobalSettings", @@ -105,6 +106,7 @@ function ( gnMetadataActions, $http, + $q, gnConfig, gnConfigService, gnGlobalSettings, @@ -122,6 +124,8 @@ scope.tasks = []; scope.hasVisibletasks = false; + scope.doiServers = []; + gnConfigService.load().then(function (c) { scope.isMdWorkflowEnable = gnConfig["metadata.workflow.enable"]; @@ -224,7 +228,7 @@ scope.taskConfiguration = { doiCreationTask: { isVisible: function (md) { - return gnConfig["system.publication.doi.doienabled"]; + return scope.doiServers.length > 0; }, isApplicable: function (md) { // TODO: Would be good to return why a task is not applicable as tooltip @@ -265,6 +269,14 @@ scope.$watch(attrs.gnMdActionsMenu, function (a) { scope.md = a; + + if (scope.md) { + $http + .get("../api/doiservers/metadata/" + scope.md.id) + .then(function (response) { + scope.doiServers = response.data; + }); + } }); scope.getScope = function () { diff --git a/web-ui/src/main/resources/catalog/views/default/directives/partials/attributetable.html b/web-ui/src/main/resources/catalog/views/default/directives/partials/attributetable.html index 7966e0d8fa0..378bba50116 100644 --- a/web-ui/src/main/resources/catalog/views/default/directives/partials/attributetable.html +++ b/web-ui/src/main/resources/catalog/views/default/directives/partials/attributetable.html @@ -32,7 +32,7 @@ <td>{{attribute.definition}}</td> </tr> <tr data-ng-if="attribute.values.length > 0"> - <td colspan="3" class="gn-noborder-top gn-nopadding-top gn-nopadding-bottom" /> + <td colspan="3" class="gn-noborder-top gn-nopadding-top gn-nopadding-bottom"></td> </tr> <tr data-ng-repeat-end data-ng-if="attribute.values.length > 0"> <td colspan="3" class="gn-noborder-top"> diff --git a/web-ui/src/main/resources/catalog/views/default/less/gn_admin_default.less b/web-ui/src/main/resources/catalog/views/default/less/gn_admin_default.less index 461ec2fa5c1..c9b868d0b27 100644 --- a/web-ui/src/main/resources/catalog/views/default/less/gn_admin_default.less +++ b/web-ui/src/main/resources/catalog/views/default/less/gn_admin_default.less @@ -515,6 +515,16 @@ ul.gn-resultview li.list-group-item { margin-bottom: 10px; border-color: #ccc; } + .col-lg-4, .col-md-6 { + @media (max-width: @screen-sm-max) { + padding-right: 0 !important; + } + } + .col-md-12, #gn-uiconfig-customize { + padding-right: 0 !important; + margin-bottom: @gn-spacing; + } + // checkbox (Bootstrap 5.2) input[type="checkbox"], input[type="radio"] { @@ -656,7 +666,16 @@ ul.gn-resultview li.list-group-item { z-index: 901; } #gn-uiconfig-customize { - margin-top: -85px; + + @media (max-width: @screen-md-max) { + padding-left: 0 !important; + } + + @media (min-width: @screen-lg-min) { + margin-top: -85px; + } + + .dropdown-menu { padding: 0 !important; li { diff --git a/web-ui/src/main/resources/catalog/views/default/less/gn_map_default.less b/web-ui/src/main/resources/catalog/views/default/less/gn_map_default.less index 3fff351c769..0b44f6fcd49 100644 --- a/web-ui/src/main/resources/catalog/views/default/less/gn_map_default.less +++ b/web-ui/src/main/resources/catalog/views/default/less/gn_map_default.less @@ -97,7 +97,7 @@ margin: 0; padding: 0; position: absolute; - width: 16.5em; + width: 24.5em; // value = maptools panel width - label width - panel tools opener button width (34em - 7em - 2.5em) border-radius: 0; li { width: calc(~"100% -30px"); diff --git a/web-ui/src/main/resources/catalog/views/default/less/gn_result_default.less b/web-ui/src/main/resources/catalog/views/default/less/gn_result_default.less index 4e26b7506c4..48d5ead834f 100644 --- a/web-ui/src/main/resources/catalog/views/default/less/gn_result_default.less +++ b/web-ui/src/main/resources/catalog/views/default/less/gn_result_default.less @@ -147,7 +147,7 @@ .img-thumbnail { padding: 0; border: none; - max-height: 300px; + max-height: 500px; min-height: 150px; max-width: 100%; } @@ -258,14 +258,20 @@ display: inline; line-break: auto; word-break: break-word; + letter-spacing: -1em; + * { + letter-spacing: normal; + } a { line-break: normal; } &:after { content: ", "; + letter-spacing: normal; } &:last-child:after { content: ""; + letter-spacing: normal; } } } @@ -325,6 +331,9 @@ } } // keywords + .gn-thesaurus:not(:has(button)) { + display: none !important; + } [data-gn-keyword-badges] { .btn { word-break: break-word; diff --git a/web-ui/src/main/resources/catalog/views/default/module.js b/web-ui/src/main/resources/catalog/views/default/module.js index a3e72354245..380d6b1ed5d 100644 --- a/web-ui/src/main/resources/catalog/views/default/module.js +++ b/web-ui/src/main/resources/catalog/views/default/module.js @@ -95,7 +95,7 @@ filters: [ { query_string: { - query: '+resourceType:"map/interactive"' + query: '+resourceType:"map-interactive"' } } ], @@ -412,7 +412,7 @@ msg: $translate.instant("layerProtocolNotSupported", { type: link.protocol }), - delay: 20000, + delay: 20, type: "warning" }); return; @@ -536,7 +536,7 @@ setActiveTab(); $scope.$on("$locationChangeSuccess", setActiveTab); - $scope.$on("$locationChangeSuccess", function (next, current) { + $scope.$on("$locationChangeSuccess", function (event, next, current) { if ( gnSearchLocation.isSearch() && (!angular.isArray(searchMap.getSize()) || searchMap.getSize()[0] < 0) @@ -545,6 +545,15 @@ searchMap.updateSize(); }, 0); } + + // Changing from the map to search pages, hide alerts + var currentUrlHash = + current.indexOf("#") > -1 ? current.slice(current.indexOf("#") + 1) : ""; + if (gnSearchLocation.isMap(currentUrlHash)) { + setTimeout(function () { + gnAlertService.closeAlerts(); + }, 0); + } }); var sortConfig = gnSearchSettings.sortBy.split("#"); diff --git a/web-ui/src/main/resources/catalog/views/default/templates/home.html b/web-ui/src/main/resources/catalog/views/default/templates/home.html index c6aa22348aa..b68a0d79cef 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/home.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/home.html @@ -119,11 +119,14 @@ <h1 data-translate="">topMaps</h1> > <div data-ng-class="fluidLayout ? 'container-fluid' : 'container'"> <div data-ng-show="homeFacet.list.length > 0"> - <div class="row" data-ng-show="homeFacet.list.length > 1"> + <div class="row"> <h1 class="col-md-12"> - <span data-translate="">browseBy</span> + <span data-translate="" data-ng-if="homeFacet.list.length > 2">browseBy</span> + <span data-ng-if="homeFacet.list.length < 3" data-translate=""> + {{::('facet-' + homeFacet.list[0]) | facetKeyTranslator}} + </span> </h1> - <div class="gn-topic-select col-md-12"> + <div class="gn-topic-select col-md-12" data-ng-if="homeFacet.list.length > 2"> <label data-ng-repeat="facetKey in homeFacet.list" data-ng-init="agg = searchInfo.aggregations[facetKey]" diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/maintenance.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/maintenance.html new file mode 100644 index 00000000000..a2672e5df09 --- /dev/null +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/maintenance.html @@ -0,0 +1,38 @@ +<div data-ng-repeat="maintenance in mdView.current.record.maintenance"> + <div data-ng-if="maintenance.frequency" class="gn-margin-bottom flex-row"> + <span class="badge badge-rounded" title="{{'updateFrequency' | translate}}"> + <i class="fa fa-fw fa-rotate"></i> + </span> + <div> + <h3 data-translate="">updateFrequency</h3> + <p>{{maintenance.frequency | translate}}</p> + </div> + </div> + <div data-ng-if="maintenance.noteObject.default" class="gn-margin-bottom flex-row"> + <span class="badge badge-rounded" title="{{'maintenanceNote' | translate}}"> + <i class="fa fa-fw fa-rotate"></i> + </span> + <div> + <h3 data-translate="">maintenanceNote</h3> + <p>{{maintenance.noteObject.default}}</p> + </div> + </div> + <div data-ng-if="maintenance.nextUpdateDate" class="gn-margin-bottom flex-row"> + <span class="badge badge-rounded" title="{{'nextUpdateDate' | translate}}"> + <i class="fa fa-fw fa-calendar-plus"></i> + </span> + <div> + <h3 data-translate="">nextUpdateDate</h3> + <p>{{maintenance.nextUpdateDate}}</p> + </div> + </div> + <div data-ng-if="maintenance.userDefinedFrequency" class="gn-margin-bottom flex-row"> + <span class="badge badge-rounded" title="{{'userDefinedFrequency' | translate}}"> + <i class="fa fa-fw fa-rotate"></i> + </span> + <div> + <h3 data-translate="">userDefinedFrequency</h3> + <p data-gn-field-duration-div="{{maintenance.userDefinedFrequency}}"></p> + </div> + </div> +</div> diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/metadata.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/metadata.html index 2823fdaf407..92c79a4dd8a 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView/metadata.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/metadata.html @@ -20,7 +20,9 @@ <h3 data-translate="">updatedOn</h3> <div> <h3 data-translate="">metadataLanguage</h3> <ul class="gn-comma-list"> - <li data-ng-repeat="l in mdLanguages">{{l | translate}}</li> + <li data-ng-repeat="l in mdLanguages"> + <span> {{l | translate}} </span> + </li> </ul> </div> </div> diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/recordView.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/recordView.html index 846ef56531a..9d6ec37f733 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView/recordView.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/recordView.html @@ -35,10 +35,20 @@ <div class="alert alert-warning" data-ng-hide="!mdView.loadDetailsFinished || mdView.current.record" - data-translate="" - data-translate-values="{uuid: '{{recordIdentifierRequested | htmlToPlaintext}}', url: '{{url | encodeURIComponent}}'}" > - recordNotFound + <span + data-translate="" + data-translate-values="{uuid: '{{recordIdentifierRequested | htmlToPlaintext}}'}" + > + recordNotFound + </span> + <span + data-ng-hide="user" + data-translate="" + data-translate-values="{url: '{{url | encodeURIComponent}}'}" + > + trySignIn + </span> </div> <div class="row" data-ng-show="!mdView.loadDetailsFinished"> <i class="fa fa-spinner fa-spin fa-3x fa-fw"></i> diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/spatial.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/spatial.html index b99638e5c76..8f75ae1d8d5 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView/spatial.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/spatial.html @@ -35,7 +35,7 @@ <h3 data-translate="">scale</h3> data-ng-repeat="d in mdView.current.record.resolutionScaleDenominator" class="gn-scale" > - {{d}} + <span> {{d}} </span> </li> </ul> </div> @@ -51,7 +51,9 @@ <h3 data-translate="">scale</h3> <div> <h3 data-translate="">resolution</h3> <ul class="gn-comma-list"> - <li data-ng-repeat="r in mdView.current.record.resolutionDistance">{{r}}</li> + <li data-ng-repeat="r in mdView.current.record.resolutionDistance"> + <span>{{r}}</span> + </li> </ul> </div> </div> diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/technical.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/technical.html index a6bfc157cba..0fdc21a8737 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView/technical.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/technical.html @@ -22,6 +22,10 @@ <h3>{{date.type | translate}}</h3> </ul> </section> + <div + ng-include="'../../catalog/views/default/templates/recordView/maintenance.html'" + ></div> + <div data-ng-if="mdView.current.record.serviceType" class="gn-margin-bottom flex-row"> <span class="badge badge-rounded" title="{{'serviceType' | translate}}"> <i class="fa fa-fw fa-cloud"></i> @@ -49,21 +53,6 @@ <h3 data-translate="">cl_couplingType</h3> <p data-ng-repeat="c in mdView.current.record.cl_couplingType">{{c.default}}</p> </div> </div> - - <div - data-ng-if="mdView.current.record.cl_maintenanceAndUpdateFrequency.length > 0" - class="gn-margin-bottom flex-row" - > - <span class="badge badge-rounded" title="{{'updateFrequency' | translate}}"> - <i class="fa fa-fw fa-language"></i> - </span> - <div> - <h3 data-translate="">updateFrequency</h3> - <p data-ng-repeat="c in mdView.current.record.cl_maintenanceAndUpdateFrequency"> - {{c.default}} - </p> - </div> - </div> </div> <div> @@ -73,7 +62,7 @@ <h3 data-translate="">updateFrequency</h3> && viewConfig.internalThesaurus && viewConfig.internalThesaurus.indexOf(key) !== -1) || highlightedThesaurus.indexOf(key) === -1" - class="gn-margin-bottom flex-row" + class="gn-margin-bottom flex-row gn-thesaurus" > <span class="badge badge-rounded"> <i class="fa fa-fw fa-tags"></i> @@ -133,11 +122,8 @@ <h3 data-translate="">resourceEdition</h3> <div> <h3 data-translate="">language</h3> <ul class="gn-comma-list"> - <li - data-ng-repeat="l in mdView.current.record.resourceLanguage" - data-translate="" - > - {{l}} + <li data-ng-repeat="l in mdView.current.record.resourceLanguage"> + <span data-translate=""> {{l}} </span> </li> </ul> </div> diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/thumbnails.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/thumbnails.html index 87fab96123f..6338bf0f4d5 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView/thumbnails.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/thumbnails.html @@ -1,13 +1,22 @@ <ul class="gn-thumbnails" data-ng-if="mdView.current.record.overview.length > 0"> <li data-ng-repeat="img in mdView.current.record.overview"> <img + data-ng-if="img.name" data-gn-img-modal="img" class="img-thumbnail" - alt="{{'overview' | translate}}" + alt="{{img.name}}" title="{{img.name}}" data-ng-src="{{mdView.current.record.draft === 'y'? img.url + (img.url.indexOf('?') > 0 ? '&' : '?') + 'approved=false' : img.url}}" onerror="this.onerror=null; this.parentElement.style.display='none';" /> - <p class="text-center" data-ng-if="img.name != ''">{{img.name}}</p> + <img + data-ng-if="!img.name" + data-gn-img-modal="img" + class="img-thumbnail" + alt="{{'overview' | translate}}" + title="{{'overview' | translate}}" + data-ng-src="{{mdView.current.record.draft === 'y'? img.url + (img.url.indexOf('?') > 0 ? '&' : '?') + 'approved=false' : img.url}}" + onerror="this.onerror=null; this.parentElement.style.display='none';" + /> </li> </ul> diff --git a/web/src/main/webResources/WEB-INF/config-db/database_migration.xml b/web/src/main/webResources/WEB-INF/config-db/database_migration.xml index 0352f3a4983..38de48bb7c0 100644 --- a/web/src/main/webResources/WEB-INF/config-db/database_migration.xml +++ b/web/src/main/webResources/WEB-INF/config-db/database_migration.xml @@ -391,6 +391,7 @@ </entry> <entry key="4.4.5"> <list> + <value>java:v445.DoiServerDatabaseMigration</value> <value>WEB-INF/classes/setup/sql/migrate/v445/migrate-</value> </list> </entry> diff --git a/web/src/main/webResources/WEB-INF/data/config/index/records.json b/web/src/main/webResources/WEB-INF/data/config/index/records.json index f5262626866..28febb0667d 100644 --- a/web/src/main/webResources/WEB-INF/data/config/index/records.json +++ b/web/src/main/webResources/WEB-INF/data/config/index/records.json @@ -1361,7 +1361,6 @@ { "tag": { "match": "th_*", - "match_mapping_type": "object", "mapping": { "properties": { "default": { diff --git a/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages.properties b/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages.properties index 10b43f9b225..c3cb510a706 100644 --- a/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages.properties +++ b/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages.properties @@ -54,8 +54,7 @@ user_password_changed='%s' password was updated. user_password_notchanged=A problem occurred trying to change '%s' password. Contact the helpdesk. user_password_invalid_changekey='%s' is an invalid change key for '%s'. Change keys are only valid for one day. user_registered=User '%s' registered. -user_with_that_email_found=A user with this email or username already exists. -user_with_that_username_found=A user with this email or username already exists. +user_with_that_email_username_found=A user with this email or username already exists. register_email_admin_subject=%s / New account for %s as %s register_email_admin_message=Dear Admin,\n\ Newly registered user %s has requested %s access for %s.\n\ @@ -218,8 +217,10 @@ exception.doi.serverErrorDelete=Error deleting DOI exception.doi.serverErrorDelete.description=Error deleting DOI: {0} exception.doi.serverErrorUnregister=Error unregistering DOI exception.doi.serverErrorUnregister.description=Error unregistering DOI: {0} -exception.doi.configurationMissing=DOI configuration is not complete -exception.doi.configurationMissing.description=DOI configuration is not complete. Check System Configuration and set the DOI configuration. +exception.doi.serverCanNotHandleRecord=DOI server can not handle the metadata +exception.doi.serverCanNotHandleRecord.description=DOI server ''{0}'' can not handle the metadata with UUID ''{1}'' +exception.doi.configurationMissing=DOI server configuration is not complete +exception.doi.configurationMissing.description=DOI server configuration is not complete. Check the DOI server configuration to complete it exception.doi.notSupportedOperationError=Operation not supported exception.doi.notSupportedOperationError.description={0} api.metadata.import.importedWithId=Metadata imported with ID '%s' diff --git a/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages_fre.properties b/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages_fre.properties index d78c5cb26ec..5650e16f1ca 100644 --- a/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages_fre.properties +++ b/web/src/main/webapp/WEB-INF/classes/org/fao/geonet/api/Messages_fre.properties @@ -53,8 +53,7 @@ user_password_sent=Si l''utilisateur existe, vous recevrez un courriel contenant user_password_changed=Le mot de passe de %s a \u00E9t\u00E9 mis \u00E0 jour. user_password_notchanged=\u00C9chec lors du changement de mot de passe de %s. Contactez le support. user_password_invalid_changekey=%s est une cl\u00E9 invalide pour %s. Les cl\u00E9s ne sont valides que pendant une journ\u00E9e. -user_with_that_email_found=Un utilisateur avec cette adresse email ou ce nom d''utilisateur existe d\u00E9j\u00E0. -user_with_that_username_found=Un utilisateur avec cette adresse email ou ce nom d''utilisateur existe d\u00E9j\u00E0. +user_with_that_email_username_found=Un utilisateur avec cette adresse email ou ce nom d''utilisateur existe d\u00E9j\u00E0. register_email_admin_subject=%s / Cr\u00E9ation de compte pour %s en tant que %s register_email_admin_message=Cher administrateur,\n\ L'utilisateur %s vient de demander une cr\u00E9ation de compte pour %s.\n\ @@ -200,17 +199,21 @@ exception.doi.recordNotConformantMissingInfo=La fiche n''est pas conforme au for exception.doi.recordNotConformantMissingInfo.description=La fiche ''{0}'' n''est pas conforme au format DataCite. {1} champ(s) obligatoire(s) manquant(s). {2} exception.doi.recordNotConformantMissingMandatory=La fiche n''est pas conforme aux r\u00E8gles de validation DataCite pour les champs obligatoires exception.doi.recordNotConformantMissingMandatory.description=La fiche ''{0}'' n''est pas conforme aux r\u00E8gles de validation DataCite pour les champs obligatoires. L''erreur est: {1}. Les champs obligatoires dans DataCite sont : identifiant, cr\u00E9ateurs, titres, \u00E9diteur, publicationYear, resourceType. <a href=''{2}api/records/{3}/formatters/datacite?output=xml''>V\u00E9rifiez la sortie au format DataCite</a> et adaptez le contenu de la fiche pour ajouter les informations manquantes. -exception.doi.recordInvalid=Le fiche converti n''est pas conforme au format DataCite -exception.doi.recordInvalid.description=Le fiche ''{0}'' converti n''est pas conforme au format DataCite. L''erreur est: {1}. Les champs obligatoires dans DataCite sont : identifiant, cr\u00E9ateurs, titres, \u00E9diteur, ann\u00E9e de publication, type de ressource. <a href=''{2}api/records/{3}/formatters/datacite?output=xml''>V\u00E9rifier la sortie au format DataCite</a> et adapter le contenu de la fiche pour ajouter les informations manquantes. -exception.doi.serverErrorCreate=Error creating DOI -exception.doi.serverErrorCreate.description=Error creating DOI: {0} -exception.doi.serverErrorRetrieve=Error retrieving DOI -exception.doi.serverErrorRetrieve.description=Error retrieving DOI: {0} -exception.doi.serverErrorDelete=Error deleting DOI -exception.doi.serverErrorDelete.description=Error deleting DOI: {0} -exception.doi.serverErrorUnregister=Error unregistering DOI -exception.doi.serverErrorUnregister.description=Error unregistering DOI: {0} -exception.doi.notSupportedOperationError=Operation not supported +exception.doi.recordInvalid=La fiche n''est pas conforme au format DataCite +exception.doi.recordInvalid.description=La fiche ''{0}'' n''est pas conforme au format DataCite. L''erreur est: {1}. Les champs obligatoires dans DataCite sont : identifiant, cr\u00E9ateurs, titres, \u00E9diteur, ann\u00E9e de publication, type de ressource. <a href=''{2}api/records/{3}/formatters/datacite?output=xml''>V\u00E9rifier la sortie au format DataCite</a> et adapter le contenu de la fiche pour ajouter les informations manquantes.\ +exception.doi.serverErrorCreate=Erreur lors de la cr\u00E9ation du DOI +exception.doi.serverErrorCreate.description=Erreur lors de la cr\u00E9ation du DOI : {0} +exception.doi.serverErrorRetrieve=Erreur lors de la r\u00E9cup\u00E9ration du DOI +exception.doi.serverErrorRetrieve.description=Erreur lors de la r\u00E9cup\u00E9ration du DOI : {0} +exception.doi.serverErrorDelete=Erreur lors de la suppression du DOI +exception.doi.serverErrorDelete.description=Erreur lors de la suppression du DOI : {0} +exception.doi.serverErrorUnregister=Erreur lors de la d\u00E9sinscription du DOI +exception.doi.serverErrorUnregister.description=Erreur lors de la d\u00E9sinscription du DOI {0} +exception.doi.serverCanNotHandleRecord=DOI server can not handle the metadata +exception.doi.serverCanNotHandleRecord.description=DOI server ''{0}'' can not handle the metadata with UUID ''{1}'' +exception.doi.configurationMissing=DOI server configuration is not complete +exception.doi.configurationMissing.description=DOI server configuration is not complete. Check the DOI server configuration to complete it +exception.doi.notSupportedOperationError=Op\u00E9ration non prise en charge exception.doi.notSupportedOperationError.description={0} api.metadata.import.importedWithId=Fiche import\u00E9e avec l'ID '%s' api.metadata.import.importedWithUuid=Fiche import\u00E9e avec l'UUID '%s' diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql b/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql index 1545d0e57e4..487e6a8e384 100644 --- a/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql @@ -735,13 +735,6 @@ INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/userSelfRegistration/domainsAllowed', '', 0, 1911, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doienabled', 'false', 2, 100191, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doiurl', '', 0, 100192, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doiusername', '', 0, 100193, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal, encrypted) VALUES ('system/publication/doi/doipassword', '', 0, 100194, 'y', 'y'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doikey', '', 0, 110095, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doilandingpagetemplate', 'http://localhost:8080/geonetwork/srv/resources/records/{{uuid}}', 0, 100195, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doipublicurl', '', 0, 100196, 'n'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/publication/doi/doipattern', '{{uuid}}', 0, 100197, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/security/passwordEnforcement/minLength', '6', 1, 12000, 'n'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/security/passwordEnforcement/maxLength', '20', 1, 12001, 'n'); diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v445/DoiServerDatabaseMigration.java b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v445/DoiServerDatabaseMigration.java new file mode 100644 index 00000000000..b2a80efedc4 --- /dev/null +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v445/DoiServerDatabaseMigration.java @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2001-2024 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 + */ + +package v445; + +import org.fao.geonet.DatabaseMigrationTask; +import org.fao.geonet.constants.Geonet; +import org.fao.geonet.migration.DatabaseMigrationException; +import org.fao.geonet.utils.Log; +import org.springframework.util.StringUtils; + + +import java.sql.*; + +public class DoiServerDatabaseMigration extends DatabaseMigrationTask { + @Override + public void update(Connection connection) throws SQLException, DatabaseMigrationException { + Log.debug(Geonet.DB, "DoiServerDatabaseMigration"); + + boolean doiEnabled = false; + String doiUrl = ""; + String doiUsername = ""; + String doiPassword = ""; + String doiKey = ""; + String doiLandingPageTemplate = ""; + String doiPublicUrl = ""; + String doiPattern = ""; + + try (Statement statement = connection.createStatement()) { + final String selectDoiSerttingsSQL = "SELECT name, value FROM Settings WHERE name LIKE 'system/publication/doi%'"; + + String columnForName = "name"; + String columnForValue = "value"; + + final ResultSet resultSet = statement.executeQuery(selectDoiSerttingsSQL); + while (resultSet.next()) { + if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doienabled")) { + doiEnabled = resultSet.getString(columnForValue).equalsIgnoreCase("true"); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doiurl")) { + doiUrl = resultSet.getString(columnForValue); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doiusername")) { + doiUsername = resultSet.getString(columnForValue); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doipassword")) { + doiPassword = resultSet.getString(columnForValue); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doikey")) { + doiKey = resultSet.getString(columnForValue); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doilandingpagetemplate")) { + doiLandingPageTemplate = resultSet.getString(columnForValue); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doipublicurl")) { + doiPublicUrl = resultSet.getString(columnForValue); + } else if (resultSet.getString(columnForName).equalsIgnoreCase("system/publication/doi/doipattern")) { + doiPattern = resultSet.getString(columnForValue); + } + + } + } + + if (doiEnabled) { + + // Check the information is filled + boolean createDoiServer = StringUtils.hasLength(doiUrl) && + StringUtils.hasLength(doiUsername) && + StringUtils.hasLength(doiPassword) && + StringUtils.hasLength(doiKey) && + StringUtils.hasLength(doiPattern); + + if (createDoiServer) { + try (PreparedStatement update = connection.prepareStatement( + "INSERT INTO doiservers " + + "(id, isdefault, landingpagetemplate, name, url, username, password, pattern, prefix, publicurl) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") + ) { + + update.setInt(1, 1); + update.setString(2, "y"); + update.setString(3, doiLandingPageTemplate); + update.setString(4, "Default DOI server"); + update.setString(5, doiUrl); + update.setString(6, doiUsername); + update.setString(7, doiPassword); + update.setString(8, doiPattern); + update.setString(9, doiKey); + update.setString(10, doiPublicUrl); + + update.execute(); + + } catch (java.sql.BatchUpdateException e) { + connection.rollback(); + Log.error(Geonet.GEONETWORK, "Error occurred while creating the DOI server:" + e.getMessage(), e); + SQLException next = e.getNextException(); + while (next != null) { + Log.error(Geonet.GEONETWORK, "Next error: " + next.getMessage(), next); + next = e.getNextException(); + } + + throw new RuntimeException(e); + } catch (Exception e) { + connection.rollback(); + + throw new Error(e); + } + + + try (PreparedStatement delete = connection.prepareStatement( + "DELETE FROM Settings WHERE name LIKE 'system/publication/doi%' and name != 'system/publication/doi/doienabled'") + ) { + delete.execute(); + } catch (java.sql.BatchUpdateException e) { + connection.rollback(); + Log.error(Geonet.GEONETWORK, "Error occurred while creating the DOI server:" + e.getMessage(), e); + SQLException next = e.getNextException(); + while (next != null) { + Log.error(Geonet.GEONETWORK, "Next error: " + next.getMessage(), next); + next = e.getNextException(); + } + + throw new RuntimeException(e); + } catch (Exception e) { + connection.rollback(); + + throw new Error(e); + } + + connection.commit(); + + Log.info(Geonet.DB, "Migration: migrated DOI server"); + } + } + } +} diff --git a/web/src/main/webapp/WEB-INF/config-security/config-security-core.xml b/web/src/main/webapp/WEB-INF/config-security/config-security-core.xml index f83fa3e0bc9..c769833cefa 100644 --- a/web/src/main/webapp/WEB-INF/config-security/config-security-core.xml +++ b/web/src/main/webapp/WEB-INF/config-security/config-security-core.xml @@ -65,8 +65,14 @@ <ref bean="coreFilterChain"/> </list> </constructor-arg> + + <property name="firewall" ref="httpFirewall"/> </bean> + <!-- HttpFirewall that parses UTF8 header values --> + <bean id="httpFirewall" + class="org.fao.geonet.web.GeoNetworkStrictHttpFirewall"> + </bean> <bean id="coreFilterChain" class="org.springframework.security.web.DefaultSecurityFilterChain"> diff --git a/web/src/main/webapp/xsl/xml/harvesting/webdav.xsl b/web/src/main/webapp/xsl/xml/harvesting/webdav.xsl index bc04b113524..2f6c3b9d201 100644 --- a/web/src/main/webapp/xsl/xml/harvesting/webdav.xsl +++ b/web/src/main/webapp/xsl/xml/harvesting/webdav.xsl @@ -17,6 +17,9 @@ <icon> <xsl:value-of select="icon/value"/> </icon> + <xslfilter> + <xsl:value-of select="xslfilter"/> + </xslfilter> </xsl:template> <!-- ============================================================================================= --> diff --git a/web/src/main/webapp/xslt/base-layout-cssjs-loader.xsl b/web/src/main/webapp/xslt/base-layout-cssjs-loader.xsl index a06f9d6948d..627d639e8f2 100644 --- a/web/src/main/webapp/xslt/base-layout-cssjs-loader.xsl +++ b/web/src/main/webapp/xslt/base-layout-cssjs-loader.xsl @@ -187,6 +187,48 @@ src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.fr.min.js?v={$buildNumber}"></script> <script src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.nl.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.az.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.ca.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.cs.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.cy.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.da.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.de.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.es.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.fi.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.hy.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.is.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.it.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.ka.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.ko.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.pt.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.ro.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.ru.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.sk.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.sv.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.uk.min.js?v={$buildNumber}"></script> + <script + src="{$uiResourcesPath}lib/bootstrap.ext/datepicker/bootstrap-datepicker.zh.min.js?v={$buildNumber}"></script> + + <script src="{$uiResourcesPath}lib/bootstrap-table/dist/bootstrap-table.js?v={$buildNumber}"></script> <script src="{$uiResourcesPath}lib/bootstrap-table-angular.js?v={$buildNumber}"></script> <script src="{$uiResourcesPath}lib/bootstrap-table/src/extensions/export/bootstrap-table-export.js?v={$buildNumber}"></script> @@ -200,7 +242,6 @@ <script src="{$uiResourcesPath}lib/geohash.js?v={$buildNumber}"></script> <script src="{$uiResourcesPath}lib/xml2json/xml2json.min.js?v={$buildNumber}"></script> - <script src="{$uiResourcesPath}lib/dom-to-image/dom-to-image.min.js?v={$buildNumber}"></script> </xsl:when> <xsl:otherwise> </xsl:otherwise> diff --git a/web/src/main/webapp/xslt/common/index-utils.xsl b/web/src/main/webapp/xslt/common/index-utils.xsl index 41f73c406f7..100389f8936 100644 --- a/web/src/main/webapp/xslt/common/index-utils.xsl +++ b/web/src/main/webapp/xslt/common/index-utils.xsl @@ -244,24 +244,30 @@ <!--<xsl:message>gn-fn-index:add-field <xsl:value-of select="$fieldName"/></xsl:message> <xsl:message>gn-fn-index:add-field elements <xsl:copy-of select="$elements"/></xsl:message> - <xsl:message>gn-fn-index:add-field languages <xsl:copy-of select="$languages"/></xsl:message>--> + <xsl:message>gn-fn-index:add-field languages <xsl:copy-of select="$languages"/></xsl:message> + <xsl:message>gn-fn-index:add-field mainLanguage <xsl:copy-of select="$mainLanguage"/></xsl:message>--> <xsl:variable name="isArray" select="count($elements[not(@xml:lang)]) > 1"/> - <xsl:for-each select="$elements"> + + + <!-- Select the items to be processed depending on whether they are ISO multilingual or not ISO, but multilingual eg. DC or DCAT --> + <xsl:for-each select="if($languages and count($elements//(*:CharacterString|*:Anchor|*:LocalisedCharacterString)) = 0 ) then $elements[1] else $elements"> <xsl:variable name="element" select="."/> <xsl:variable name="textObject" as="node()*"> <xsl:choose> <!-- Not ISO but multilingual eg. DC or DCAT --> <xsl:when test="$languages and count($element//(*:CharacterString|*:Anchor|*:LocalisedCharacterString)) = 0"> - <xsl:if test="position() = 1"> <value><xsl:value-of select="concat($doubleQuote, 'default', $doubleQuote, ':', $doubleQuote, util:escapeForJson(.), $doubleQuote)"/></value> <xsl:for-each select="$elements"> - <value><xsl:value-of select="concat($doubleQuote, 'lang', @xml:lang, $doubleQuote, ':', + <xsl:variable name="elementLangAttribute" + select="@xml:lang"/> + <xsl:variable name="elementLangCode" + select="$languages/lang[@value = $elementLangAttribute]/@code"/> + <value><xsl:value-of select="concat($doubleQuote, 'lang', $elementLangCode, $doubleQuote, ':', $doubleQuote, util:escapeForJson(.), $doubleQuote)"/></value> </xsl:for-each> - </xsl:if> </xsl:when> <xsl:when test="$languages"> <!-- The default language --> @@ -707,10 +713,10 @@ <xsl:function name="gn-fn-index:json-escape" as="xs:string?"> <!-- This function is deprecated. Please update your code to define the following namespace: xmlns:util="java:org.fao.geonet.util.XslUtil" - - and use util:escapeForJson function + + and use util:escapeForJson function --> - + <xsl:param name="v" as="xs:string?" /> <xsl:choose> <xsl:when test="normalize-space($v) = ''"></xsl:when> diff --git a/web/src/main/webapp/xslt/services/thesaurus/ldregistry-to-skos.xsl b/web/src/main/webapp/xslt/services/thesaurus/ldregistry-to-skos.xsl index 1cec16ae730..02cdb7aa395 100644 --- a/web/src/main/webapp/xslt/services/thesaurus/ldregistry-to-skos.xsl +++ b/web/src/main/webapp/xslt/services/thesaurus/ldregistry-to-skos.xsl @@ -71,7 +71,6 @@ <dcterms:issued><xsl:value-of select="if ($thesaurusDate != '') then $thesaurusDate else $now"/></dcterms:issued> - <dcterms:modified><xsl:value-of select="if ($thesaurusDate != '') then $thesaurusDate else $now"/></dcterms:modified> <xsl:for-each select="distinct-values($concepts/*[skos:narrower and not(skos:broader)]/@rdf:about)"> <skos:hasTopConcept rdf:resource="{.}"/> diff --git a/web/src/main/webapp/xslt/services/thesaurus/owl-to-skos.xsl b/web/src/main/webapp/xslt/services/thesaurus/owl-to-skos.xsl index 449ee6d70d5..b7a71380331 100644 --- a/web/src/main/webapp/xslt/services/thesaurus/owl-to-skos.xsl +++ b/web/src/main/webapp/xslt/services/thesaurus/owl-to-skos.xsl @@ -24,9 +24,9 @@ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:dcterms="http://purl.org/dc/terms/" + xmlns:terms="http://purl.org/dc/terms/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" version="2.0"> @@ -40,12 +40,38 @@ <xsl:template mode="owl-to-skos" match="owl:Ontology"> - <rdf:RDF xmlns:skos="http://www.w3.org/2004/02/skos/core#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:dcterms="http://purl.org/dc/terms/"> + <rdf:RDF> + <xsl:namespace name="skos" select="'http://www.w3.org/2004/02/skos/core#'"/> + <xsl:namespace name="rdf" select="'http://www.w3.org/1999/02/22-rdf-syntax-ns#'"/> + <xsl:namespace name="dc" select="'http://purl.org/dc/elements/1.1/'"/> + <xsl:namespace name="terms" select="'http://purl.org/dc/terms/'"/> <skos:ConceptScheme rdf:about="{@rdf:about}"> - <xsl:copy-of select="dcterms:*|skos:*"/> + <xsl:copy-of select="terms:*|skos:*[local-name() != 'hasTopConcept']" copy-namespaces="no"/> + + <!-- + Custom case for Mobility DCAT theme vocabulary top concepts. + https://mobilitydcat-ap.github.io/controlled-vocabularies/mobility-theme/latest/index.html#/ + + The vocabulary contains 2 top concepts: + <skos:hasTopConcept rdf:resource="https://w3id.org/mobilitydcat-ap/mobility-theme/data-content-category"/> + <skos:hasTopConcept rdf:resource="https://w3id.org/mobilitydcat-ap/mobility-theme/data-content-sub-category"/> + which are not really needed for browsing the main categories and sub categories. + + Use the narrower terms of the "content category" top concept as the top concepts of the scheme + to facilitate keyword selection in editor and generate proper facet hierarchy in search. + --> + <xsl:variable name="mobilityThemeTopConcept" + select="../owl:NamedIndividual[@rdf:about = 'https://w3id.org/mobilitydcat-ap/mobility-theme/data-content-category']"/> + <xsl:choose> + <xsl:when test="$mobilityThemeTopConcept"> + <xsl:for-each select="$mobilityThemeTopConcept/skos:narrower"> + <skos:hasTopConcept rdf:resource="{@rdf:resource}"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="skos:hasTopConcept" copy-namespaces="no"/> + </xsl:otherwise> + </xsl:choose> </skos:ConceptScheme> <xsl:apply-templates mode="owl-to-skos" @@ -53,10 +79,29 @@ </rdf:RDF> </xsl:template> + <xsl:variable name="excludedConcepts" + select="( + 'https://w3id.org/mobilitydcat-ap/mobility-theme/data-content-category', + 'https://w3id.org/mobilitydcat-ap/mobility-theme/data-content-sub-category' + )" + as="xs:string*"/> + + <xsl:template mode="owl-to-skos" + match="owl:NamedIndividual[@rdf:about = $excludedConcepts] + |skos:broader[@rdf:resource = $excludedConcepts]"/> + <xsl:template mode="owl-to-skos" match="owl:NamedIndividual"> <skos:Concept rdf:about="{@rdf:about}"> - <xsl:copy-of select="skos:*"/> + <xsl:apply-templates mode="owl-to-skos" select="skos:*"/> </skos:Concept> </xsl:template> + + <xsl:template mode="owl-to-skos" + match="@*|node()"> + <xsl:copy copy-namespaces="no"> + <xsl:apply-templates select="@*|node()" mode="owl-to-skos"/> + </xsl:copy> + </xsl:template> + </xsl:stylesheet> diff --git a/web/src/main/webapp/xslt/services/thesaurus/registry-to-skos.xsl b/web/src/main/webapp/xslt/services/thesaurus/registry-to-skos.xsl index 10ee275efd3..8f12f4bedbc 100644 --- a/web/src/main/webapp/xslt/services/thesaurus/registry-to-skos.xsl +++ b/web/src/main/webapp/xslt/services/thesaurus/registry-to-skos.xsl @@ -126,7 +126,6 @@ <dcterms:issued><xsl:value-of select="if ($thesaurusDate != '') then $thesaurusDate else $now"/></dcterms:issued> - <dcterms:modified><xsl:value-of select="if ($thesaurusDate != '') then $thesaurusDate else $now"/></dcterms:modified> <!-- Add top concepts for all items with no parent --> <xsl:if test="$hasBroaderNarrowerLinks"> diff --git a/web/src/main/webapp/xslt/ui-metadata/form-builder.xsl b/web/src/main/webapp/xslt/ui-metadata/form-builder.xsl index c37260a275d..6426cb3de27 100644 --- a/web/src/main/webapp/xslt/ui-metadata/form-builder.xsl +++ b/web/src/main/webapp/xslt/ui-metadata/form-builder.xsl @@ -1770,6 +1770,14 @@ <xsl:choose> <xsl:when test="@use != ''"> <xsl:copy-of select="@use|directiveAttributes"/> + + <xsl:if test="@xpath != ''"> + <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:if> </xsl:when> <xsl:when test="@del != ''"> <xsl:attribute name="remove" select="'true'"/> diff --git a/web/src/main/webapp/xslt/ui-metadata/form-configurator.xsl b/web/src/main/webapp/xslt/ui-metadata/form-configurator.xsl index ce17645dc19..2e423b7ea75 100644 --- a/web/src/main/webapp/xslt/ui-metadata/form-configurator.xsl +++ b/web/src/main/webapp/xslt/ui-metadata/form-configurator.xsl @@ -151,7 +151,7 @@ <xsl:variable name="originalNode" select="gn-fn-metadata:getOriginalNode($metadata, .)"/> - <xsl:variable name="refToDelete"> + <xsl:variable name="refToDelete" as="node()?"> <xsl:call-template name="get-ref-element-to-delete"> <xsl:with-param name="node" select="$originalNode"/> <xsl:with-param name="delXpath" select="$del"/> @@ -159,7 +159,7 @@ </xsl:variable> <xsl:call-template name="render-form-field-control-remove"> - <xsl:with-param name="editInfo" select="gn:element"/> + <xsl:with-param name="editInfo" select="$refToDelete"/> </xsl:call-template> </xsl:if> </legend> @@ -329,7 +329,7 @@ select="gn-fn-metadata:check-elementandsession-visibility( $schema, $base, $serviceInfo, @if, @displayIfServiceInfo)"/> - <!-- + <!-- <xsl:message> Field: <xsl:value-of select="@name"/></xsl:message> <xsl:message>Xpath: <xsl:copy-of select="@xpath"/></xsl:message> <xsl:message>TemplateModeOnly: <xsl:value-of select="@templateModeOnly"/></xsl:message>