diff --git a/docs/adoc/conventions.adoc b/docs/adoc/conventions.adoc index c96c384..79a5bed 100644 --- a/docs/adoc/conventions.adoc +++ b/docs/adoc/conventions.adoc @@ -1007,6 +1007,7 @@ Los prefijos listados son los más comúnmente utilizados, aunque técnicamente | `geo` | `http://www.opengis.net/ont/geosparql#` | GeoSPARQL Ontology | Lenguaje de consulta geográfica de datos RDF | `locn` | `http://www.w3.org/ns/locn#` | Location Core | Vocabulario para ubicaciones y direcciones | `odrl` | `http://www.w3.org/ns/odrl/2/` | Open Digital Rights Language | Expresión de derechos digitales +| `odrs` | `http://schema.theodi.org/odrs#` | Open Data Rights Statement Vocabulary | Publicación de declaraciones de derechos para datos abiertos | `prov` | `http://www.w3.org/ns/prov#` | Provenance Ontology | Trazabilidad y procedencia de datos | `rdf` | `http://www.w3.org/1999/02/22-rdf-syntax-ns#` | RDF Schema | Vocabulario básico para definir recursos RDF | `rdfs` | `http://www.w3.org/2000/01/rdf-schema#` | RDF Schema | Extensión de RDF para definir clases y propiedades diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css index 32bddd5..45cdc8e 100644 --- a/docs/assets/css/style.css +++ b/docs/assets/css/style.css @@ -15,10 +15,11 @@ --blue-aporta: #154481; /* Table colors */ - --table-header-bg: #17305F; - --table-first-column-bg: #DCE0E7; - --table-row-odd-bg: #E8EAEF; - --table-row-even-bg: #F3F5F7; + --table-header-bg: #deeafc; + --table-header-text: #154481; + --table-first-column-bg: #dce0e7bd; + --table-row-odd-bg: #f7faff; + --table-row-even-bg: #fff; /* Admonition Icons */ --md-admonition-icon--must: url('data:image/svg+xml;charset=utf-8,'); @@ -76,10 +77,10 @@ td { text-align: left; } -/* Table header - color #17305F */ +/* Table header - color #deeafc con texto #154481 */ th { background-color: var(--table-header-bg) !important; - color: var(--header-text-color); + color: var(--table-header-text); text-align: center !important; border: none !important; } @@ -91,12 +92,12 @@ td:first-child:not(.code):not(.linenos) { /* Filas alternadas - solo para celdas que NO son primera columna */ td:not(:first-child):not(.code):not(.linenos) { - /* Las filas pares (2, 4, 6...) tienen color #E8EAEF */ + /* Las filas impares (1, 3, 5...) tienen color #f7faff */ background-color: var(--table-row-odd-bg); } tr:nth-child(even) td:not(:first-child):not(.code):not(.linenos) { - /* Las filas impares (3, 5, 7...) tienen color #F3F5F7 */ + /* Las filas pares (2, 4, 6...) tienen color #fff */ background-color: var(--table-row-even-bg); } diff --git a/docs/examples.en.md b/docs/examples.en.md index 4deedc1..776a000 100644 --- a/docs/examples.en.md +++ b/docs/examples.en.md @@ -1,6 +1,102 @@ -# Example 1 - Mandatory properties of the Catalog +!!! tip "Practical implementation examples" -Data catalog declaration using only mandatory properties: `dct:title`, `dct:description`, `dct:Publisher`, `foaf:homepage`, `dcat:themeTaxonomy`, `dct:issued`, `dct:modified`, `dct:language`, `dct:license`. + Here you will find ready-to-use prototypes that demonstrate how to implement the [DCAT-AP-ES metadata model](index.md#dcat-ap-es-model) in different formats: [`RDF/XML`](https://www.w3.org/TR/rdf-syntax-grammar/) and [Turtle `(TTL)`](https://www.w3.org/TR/turtle/). + + These examples will guide you in using [mandatory, recommended and optional properties](index.md#dcat-ap-es-model-relations) to describe the main entities of the model. + +!!! Success "Migrate your catalog" + ^^Specific examples are included if you already have an RDF catalog compliant with NTI-RISP (2013)^^ and want to update it: + + - [**Migrate to DCAT-AP-ES**](#catalogo_-_nti_dcatapes) :material-arrow-up-right: + - [**Migrate to DCAT-AP-ES HVD**](#catalogo_-_nti_dcatapes_hvd) :material-arrow-up-right: + +!!! example "Conventions for example specification" + + The following naming conventions are established for use in all defined examples: + + * URI base: `http://dcat-ap-es.ejemplo.org ` + * Catalog URI: `http://dcat-ap-es.ejemplo.org/catalogo` + * Dataservice URI: `http://dcat-ap-es.ejemplo.org/dataservice/dataservice-ejemplo-1 ` + * Dataset URI: `http://dcat-ap-es.ejemplo.org/dataset/dataset-ejemplo-1` + * Distribution URI: `http://dcat-ap-es.ejemplo.org/resource/distribucion-ejemplo-1` + * Organization URI: `http://datos.gob.es/recurso/sector-publico/org/Organismo/Identificador-Organismo` + +# Templates + +## DCAT-AP-ES minimum metadata core {#dcatapes_minimal} + +This template provides an implementation of **[the minimum mandatory metadata core](index.md#dcat-ap-es-detailed-model)** according to the DCAT-AP-ES profile, aligned with the Technical Interoperability Standard for Reuse of Public Sector Information Resources (NTI-RISP) and the technical conventions of datos.gob.es. + +It includes only the **mandatory entities and properties** to describe an open data catalog according to the current formal specification. It is the basic reference for publication and federation of interoperable metadata in the national catalog, and can be used as an example or starting point for automatic generation of DCAT-AP-ES compliant catalogs. + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/1.0.0/E_DCAT-AP-ES_minimal.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/1.0.0/E_DCAT-AP-ES_minimal.ttl" + ``` + +## Complete DCAT-AP-ES template {#dcatapes_full_optional} + +This template provides a comprehensive implementation of the DCAT-AP-ES profile, showing **all available properties** at all applicability levels: mandatory, recommended and optional. + +Through this complete serialization, you can explore how to enrich the description of catalogs, datasets, distributions and data services with advanced metadata. It constitutes a comprehensive reference template to maximize the interoperability and quality of metadata, facilitating its integration into national and international open data ecosystems according to current technical specifications. + +=== "RDF/XML" + [`RDF/XML`](https://github.com/datosgobes/DCAT-AP-ES/tree/main/examples/rdf/1.0.0/E_DCAT-AP-ES_full_optional.rdf) :material-arrow-up-right: + +=== "TTL" + [`Turtle (TTL)`](https://github.com/datosgobes/DCAT-AP-ES/tree/main/examples/ttl/1.0.0/E_DCAT-AP-ES_full_optional.ttl) :material-arrow-up-right: + +## Migration from NTI-RISP to DCAT-AP-ES {#catalogo_-_nti_dcatapes} + +This example shows how to migrate a catalog originally modeled according to NTI-RISP (2013) to the DCAT-AP-ES profile. Facilitating interoperability and enriching the catalog metadata, allowing its integration into national and European portals. The process consists of mapping the key properties of NTI-RISP to DCAT-AP-ES, adding vocabularies and elements recommended by the new profile. + +The catalog `http://dcat-ap-es.ejemplo.org/catalogo` includes essential information such as title, description, publisher, key dates, web page, themes, languages, terms of use and reference to datasets. In addition, it incorporates elements recommended by DCAT-AP-ES, such as themes, contact point and applicable legislation. As a general rule, European vocabularies are aligned, and the description of the new Data Services (`dcat:DataService`) is included. + +!!! tip "Original NTI 2013 example" + + The original NTI-RISP (2013) catalog example is available at: + [NTI-RISP Catalog to DCAT-AP-ES](https://datosgobes.github.io/NTI-RISP/examples/#catalogo_-_nti_dcatapes) + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/1.0.0/E_DCAT-AP-ES_Catalog.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/1.0.0/E_DCAT-AP-ES_Catalog.ttl" + ``` + +## Migration from NTI-RISP to DCAT-AP-ES HVD {#catalogo_-_nti_dcatapes_hvd} + +This example illustrates how to adapt an NTI-RISP catalog to meet HVD requirements. The motivation is to ensure that high-value data is available through APIs and complies with European regulations, adding specific properties such as HVD category, applicable legislation and more details about data services. + +The catalog `http://dcat-ap-es.ejemplo.org/catalogo` is enriched with information about data services (APIs), HVD datasets, contact, legislation and availability, following the HVD regulation. Thus, the transition and regulatory compliance for the publication of high-value data is facilitated. + +!!! tip "Original NTI 2013 example" + + The original NTI-RISP (2013) catalog example is available at: + [NTI-RISP Catalog to DCAT-AP-ES](https://datosgobes.github.io/NTI-RISP/examples/#catalogo_-_nti_dcatapes) + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/1.0.0/E_DCAT-AP-ES_Catalog_HVD.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/1.0.0/E_DCAT-AP-ES_Catalog_HVD.ttl" + ``` + +# Catalog - Class: [`dcat:Catalog`](index.md#Catalog) +## Catalog - Mandatory properties + +This example shows how to declare a data catalog using **only mandatory properties** according to the DCAT-AP-ES profile. It includes essential metadata such as: Title, Description, Web page, Publisher, License, Theme taxonomy, Creation date, Modification date and Language. === "RDF/XML" ```xml linenums="1" @@ -12,7 +108,9 @@ Data catalog declaration using only mandatory properties: `dct:title`, `dct:desc --8<-- "examples/ttl/E1_Catalogo_solo_obligatorias.ttl" ``` -# Example 2 - Use of mandatory and recommended properties +## Catalog - Mandatory and recommended properties + +This example extends the previous one, including both **mandatory and recommended properties** for the description of a DCAT-AP-ES catalog. In addition to essential metadata, properties such as geographic coverage (`dct:spatial`) are added, including the basic description of a dataset (`dcat:dataset`) and data services (`dcat:service`). === "RDF/XML" ```xml linenums="1" @@ -22,4 +120,127 @@ Data catalog declaration using only mandatory properties: `dct:title`, `dct:desc === "TTL" ```turtle linenums="1" --8<-- "examples/ttl/E2_Catalogo_obligatorias_recomendadas.ttl" - ``` \ No newline at end of file + ``` + +## Catalog - Mandatory, recommended and optional properties + +This example presents a complete description of a DCAT-AP-ES catalog, using **mandatory, recommended and optional properties**. Additional metadata is included such as the catalog creator as an organization (`dct:creator`) and the declaration of access rights linked to the use of catalog data (`dct:rights`). It is also detailed that the catalog has a linked sub-catalog (`dct:hasPart`). + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/E3_Catalogo_obligatorias_recomendadas_opcionales.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/E3_Catalogo_obligatorias_recomendadas_opcionales.ttl" + ``` + +## Catalog - Publisher specification + +This example shows how to **detail the information of a catalog publisher, using properties** to specify: + +* Persistent identifier (`dct:identifier`) +* Name (`foaf:name`) +* Email (`foaf:mbox`) +* Type of organization within the State structure (`dct:type`) + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/E4_Catalogo_publisher_organizacion.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/E4_Catalogo_publisher_organizacion.ttl" + ``` + + +# Data Service - Class: [`dcat:DataService`](index.md#DataService) +## Data Service - Specification of data access services + +The example describes **a catalog that contains the record of a single data service that provides access to a CSW service** without specifying which datasets it serves. The CSW data service complies with the IR HVD and INSPIRE, is described as a discovery service, is available under public access rights, is compatible with the OGC CSW standard, has a CC-BY 4.0 reuse license, the territorial scope covered by the dataset is delimited by a rectangle for which its coordinates are specified and details a contact point to transfer questions regarding the service through a web form or email. + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/E10_Data_Service_CSW_HVD.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/E10_Data_Service_CSW_HVD.ttl" + ``` + +## Data Service - HVD *DataService* + +This example illustrates how to specify *datasets* accessible through **data services (APIs), complying with the [HVD Regulation (High-Value Datasets)](https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32023R0138)**. + +According to the regulation, HVDs must be available through APIs. For this, the publisher must have an API implemented on a platform, through which reusers will have access to data in real time. This API platform serves several datasets (`dataset-HVD-ejemplo-1` and `dataset-ejemplo-1`). + +Since the API serves at least one HVD, implementation requirements apply according to the HVD regulation. Therefore, the API publisher must ensure that the declared `dcat:endpointURL` is persistent, that is, stable over time (for example, the implementation of a new API platform or the publisher's name change should not affect the endpoint URL). + +In addition, information about API usage is provided through: + +* Technical documentation based on the [OpenAPI standard](https://swagger.io/specification/) +* An SLA (*Service Level Agreement*) to document service quality + +Finally, the mandatory property that informs about the contact channels enabled by the publisher is added. + +To simplify the presentation of the example, the specification of catalog properties is omitted. + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/E9_Data_Service_HVD.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/E9_Data_Service_HVD.ttl" + ``` + +# Dataset - Class: [`dcat:Dataset`](index.md#Dataset) +## Dataset - HVD and non-HVD *Datasets* + +This example describes **a catalog containing two HVD and non-HVD datasets:**: + +* **`dataset-HVD-ejemplo-1`**: A dataset that **is** within the scope of the [HVD Regulation (High-Value Datasets)](https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32023R0138). +* **`dataset-ejemplo-1`**: A dataset that **is not** within the scope of the HVD Regulation. + +Both datasets are within the scope of the [INSPIRE Directive](http://data.europa.eu/eli/dir/2007/2/oj). + +The catalog specifies details about: + +* The publisher (`dct:publisher`) +* The creator (`dct:creator`) +* Access rights (`dct:rights`) +* The reference to another linked catalog (`dct:hasPart`) + +The dataset `dataset-HVD-ejemplo-1` is also tagged with the appropriate HVD category, using the most granular concept [`Nature and biodiversity preservation`](http://data.europa.eu/bna/c_b7f6a4f3). + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/E6_Dataset_HVD.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/E6_Dataset_HVD.ttl" + ``` + +## Dataset - HVD *dataset* distributions + +The HVD implementation regulation requires that HVD datasets be downloadable (*bulk download*) whenever relevant. Datasets can be downloaded in different formats and levels of detail. In this example, **distributions are available in two formats: RDF and ESRI shapefile (SHP) format**. According to the HVD regulation, these example datasets are available at least in bulk download with a granularity of 5 meters and with a monthly update frequency. Based on these requirements, the dataset publisher decides to indicate that the SHP distribution is an HVD bulk download. + +In addition, the data model associated with the distribution is described by providing detailed documentation of the data schema through the dct:conformsTo metadata. + +The reuse conditions are also specified through a standard license (`CC-BY 4.0`) and it is indicated that the availability status of both distributions is stable, thus describing that the data will remain available in the long term. + +=== "RDF/XML" + ```xml linenums="1" + --8<-- "examples/rdf/E7_Distribuciones_HVD.rdf" + ``` + +=== "TTL" + ```turtle linenums="1" + --8<-- "examples/ttl/E7_Distribuciones_HVD.ttl" + ``` diff --git a/docs/examples.md b/docs/examples.md index 5e8c835..007a23e 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -2,7 +2,7 @@ Aquí encontrarás prototipos listos para usar que demuestran cómo implementar el [modelo de metadatos DCAT-AP-ES](index.md#dcat-ap-es-model) en diferentes formatos: [`RDF/XML`](https://www.w3.org/TR/rdf-syntax-grammar/) y [Turtle `(TTL)`](https://www.w3.org/TR/turtle/). - Estos ejemplos te guiarán en el uso de [propiedades obligatorias, recomendadas y opcionales](index.md#relacion_de_metadatos_del_modelo_dcat-ap-es) para describir las entidades principales del modelo. + Estos ejemplos te guiarán en el uso de [propiedades obligatorias, recomendadas y opcionales](index.md#dcat-ap-es-model-relations) para describir las entidades principales del modelo. !!! Success "Migrar tu catálogo" Se incluyen ^^ejemplos específicos si ya dispones de un catálogo RDF conforme a NTI-RISP (2013)^^ y quieres actualizarlo: @@ -39,6 +39,18 @@ Incluye únicamente las **entidades y propiedades obligatorias** para describir --8<-- "examples/ttl/1.0.0/E_DCAT-AP-ES_minimal.ttl" ``` +## Plantilla completa de DCAT-AP-ES {#dcatapes_full_optional} + +Esta plantilla proporciona una implementación exhaustiva del perfil DCAT-AP-ES, mostrando la **totalidad de propiedades disponibles** en todos sus niveles de aplicabilidad: obligatorias, recomendadas y opcionales. + +Mediante esta serialización completa, podrás explorar cómo enriquecer la descripción de catálogos, datasets, distribuciones y servicios de datos con metadatos avanzados. Constituye una plantilla de referencia integral para maximizar la interoperabilidad y calidad de los metadatos, facilitando su integración en ecosistemas de datos abiertos nacionales e internacionales según las especificaciones técnicas vigentes. + +=== "RDF/XML" + [`RDF/XML`](https://github.com/datosgobes/DCAT-AP-ES/tree/main/examples/rdf/1.0.0/E_DCAT-AP-ES_full_optional.rdf) :material-arrow-up-right: + +=== "TTL" + [`Turtle (TTL)`](https://github.com/datosgobes/DCAT-AP-ES/tree/main/examples/ttl/1.0.0/E_DCAT-AP-ES_full_optional.ttl) :material-arrow-up-right: + ## Migración desde NTI-RISP a DCAT-AP-ES {#catalogo_-_nti_dcatapes} Este ejemplo muestra cómo migrar un catálogo modelado originalmente según NTI-RISP (2013) al perfil DCAT-AP-ES. Facilitando la interoperabilidad y enriqueciendo los metadatos del catálogo, permitiendo su integración en portales nacionales y europeos. El proceso consiste en mapear las propiedades clave de NTI-RISP a DCAT-AP-ES, añadiendo vocabularios y elementos recomendados por el nuevo perfil. @@ -81,7 +93,7 @@ El catálogo `http://dcat-ap-es.ejemplo.org/catalogo` se enriquece con informaci --8<-- "examples/ttl/1.0.0/E_DCAT-AP-ES_Catalog_HVD.ttl" ``` -# Catálogo - Clase: [`dcat:Catalog`](index.md#catalogo_-_clase_dcatcatalog_-_obligatorio) +# Catálogo - Clase: [`dcat:Catalog`](index.md#Catalog) ## Catálogo - Propiedades obligatorias Este ejemplo muestra cómo declarar un catálogo de datos utilizando **únicamente las propiedades obligatorias** según el perfil DCAT-AP-ES. Incluye metadatos esenciales como: Título, Descripción, Página web, Publicador, Licencia, Taxonomía de temas, Fecha de creación, Fecha de actualización e Idioma. @@ -144,7 +156,7 @@ Este ejemplo muestra cómo **detallar la información del publicador de un catá ``` -# Servicio de datos - Clase: [`dcat:DataService`](index.md#servicio_de_datos_-_clase_dcatdataservice_-_opcional) +# Servicio de datos - Clase: [`dcat:DataService`](index.md#DataService) ## Servicio de datos - Especificación de servicios de acceso a datos El ejemplo describe **un catálogo que contiene el registro de un único servicio de datos que proporciona el acceso a un servicio CSW** sin especificar qué datasets sirve. El servicio de datos CSW cumple con el IR HVD e INSPIRE, está descrito como un servicio de descubrimiento, está disponible bajo derechos de acceso público, es compatible con el estándar CSW de OGC, cuenta con una licencia de reutilización CC-BY 4.0, el ámbito territorial cubierto por el dataset está delimitado por un rectangular para la que se especifican sus coordenadas y detalla un punto de contacto para trasladar cuestiones relativas al servicio mediante un formulario web o un correo electrónico. @@ -186,7 +198,7 @@ Para simplificar la presentación del ejemplo, se obvia la especificación de la --8<-- "examples/ttl/E9_Data_Service_HVD.ttl" ``` -# Conjunto de datos - Clase: [`dcat:Dataset`](index.md#conjunto_de_datos_-_clase_dcatdataset_-_obligatorio) +# Conjunto de datos - Clase: [`dcat:Dataset`](index.md#Dataset) ## Conjunto de datos - *Datasets* HVD y no HVD Este ejemplo describe **un catálogo que contiene dos conjuntos de datos HVD y no HVD:**: diff --git a/docs/faq.md b/docs/faq.md index 470dae5..9528310 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -27,6 +27,21 @@ Secciones: [:octicons-arrow-right-24: Ver más](index.md) +- :material-clipboard-text:{ .lg .middle .grid-emoji } **Convenciones datos.gob.es**{ .grid-title #conventions-dcat-ap-es } + + --- + + Complemento de DCAT-AP-ES que define reglas adicionales para abordar necesidades prácticas para federar con el catálogo nacional de [datos.gob.es](https://datos.gob.es/). + + [:octicons-arrow-right-24: Ver más](conventions.md) + +- :material-link-variant:{ .lg .middle .grid-emoji } **¿Relación entre convenciones y DCAT-AP-ES?**{ .grid-title #relacion-convenciones } + + --- + + Mientras que DCAT-AP-ES define el modelo base, las convenciones establecen directrices para resolver casos prácticos concretos sin modificarlo. + + [:octicons-arrow-right-24: Tipos](conventions.md#lista_de_convenciones) - :fontawesome-solid-plus:{ .lg .middle .grid-emoji } **¿Principales novedades de DCAT-AP-ES?**{ .grid-title #novedades } @@ -48,7 +63,7 @@ Secciones: --- - DCAT-AP-ES está previsto que entre en vigor en 2025, tras la aprobación de la nueva NTI-RISP, el día siguiente a su publicación en el BOE. + DCAT-AP-ES está previsto que entre en vigor en los próximos meses, tras la aprobación de la nueva NTI-RISP, el día siguiente a su publicación en el BOE. [:octicons-arrow-right-24: NTI-RISP](https://www.boe.es/eli/es/res/2013/02/19/(4)) @@ -115,7 +130,7 @@ Secciones: 2. **Adaptar vocabularios controlados**: Utilizar los [vocabularios actualizados del modelo](index.md#dcat-ap-es-vocabularies) en vez de literales. - 3. **Añadir soporte a servicios**: Incorporar la clase [`dcat:DataService`](index.md#servicio_de_datos_-_clase_dcatdataservice_-_opcional) si ofreces APIs o servicios. + 3. **Añadir soporte a servicios**: Incorporar la clase [`dcat:DataService`](index.md#DataService) si ofreces APIs o servicios. 4. **Validar el catálogo**: Comprobar la conformidad utilizando las [herramientas de validación](validation.md) diff --git a/docs/index.md b/docs/index.md index 27be5ef..cbf4368 100644 --- a/docs/index.md +++ b/docs/index.md @@ -72,6 +72,7 @@ Se enumerarán a continuación vocabularios genéricos que configuran el espacio | Location Core Vocabulary | [`locn:`](http://www.w3.org/ns/locn#) | `http://www.w3.org/ns/locn#` | | Web Ontology Document | [`owl:`](http://www.w3.org/2002/07/owl#) | `http://www.w3.org/2002/07/owl#` | | Open Digital Rights Language | [`odrl:`](http://www.w3.org/ns/odrl/2/) | `http://www.w3.org/ns/odrl/2/` | +| Open Data Rights Statement Vocabulary | [`odrs:`](http://schema.theodi.org/odrs#) | `http://schema.theodi.org/odrs#` | | Prov Family of Documents | [`prov:`](http://www.w3.org/ns/prov#) | `http://www.w3.org/ns/prov#` | | Resource Description Framework | [`rdf:`](http://www.w3.org/1999/02/22-rdf-syntax-ns#) | `http://www.w3.org/1999/02/22-rdf-syntax-ns#` | | Resource Description Framework Schema | [`rdfs:`](http://www.w3.org/2000/01/rdf-schema#) | `http://www.w3.org/2000/01/rdf-schema#` | diff --git a/examples/rdf/1.0.0/E_DCAT-AP-ES_full_optional.rdf b/examples/rdf/1.0.0/E_DCAT-AP-ES_full_optional.rdf new file mode 100644 index 0000000..07d15c3 --- /dev/null +++ b/examples/rdf/1.0.0/E_DCAT-AP-ES_full_optional.rdf @@ -0,0 +1,428 @@ + + + + + Catálogo de Datos Abiertos + Catálogo de Datos Abiertos que sirve de ejemplo en DCAT-AP-ES. + + 2020-01-01T12:00:00+01:00 + 2025-01-02T12:00:00+01:00 + + + + + + + + + + 2021-01-02T12:00:00+01:00 + + 2022-01-01T12:00:00+01:00 + + Registro del Catálogo de Datos Abiertos + Registro de metadatos del Catálogo de Datos Abiertos de ejemplo + + + + + + Nombre del departamento del organismo + E0DAT0001 + + + + + + + + + + Derechos relativos a la reutilización del Catálogo de Datos Abiertos + + Atribución de autoría al Organismo + + + + + + + 2021-01-03T12:00:00+01:00 + 2025-01-03T12:00:00+01:00 + + + + + + + + + + + Catálogo vinculado + Catálogo asociado que sirve de ejemplo en DCAT-AP-ES. + + 2025-01-01T09:00:00+01:00 + 2025-01-02T12:00:00+01:00 + + + + + + + + Dataset ejemplo en catálogo vinculado + Dataset de ejemplo en el catálogo vinculado + + + ejemplo + + + + Organismo + Oficina del dato + + + + + + + + + + 2024-01-01T00:00:00Z + 2024-12-31T23:59:59Z + + + + + + + + Descripción de una distribución distribuida de ejemplo + + + + + + + + + + + + + Dataset de ejemplo 1 + Descripción de un dataset de ejemplo 1 + + + estadísticas + + + + 2021-02-01T12:00:00+01:00 + 2025-02-01T12:00:00+01:00 + + + + + IDD1 + + + + + + 2024-01-01T12:00:00+01:00 + 2024-02-01T12:00:00+01:00 + + + + 1 + Version 1 + + + + + + + + + 5.0 + PT24M + + + + + + + + + + + + + + + + + + + Organismo + Oficina del dato + + + + + + + + Proceso de generación del dataset + 2024-01-10T12:00:00+01:00 + 2024-01-20T12:00:00+01:00 + + + + + + Descripción de un distribución de ejemplo 1 + + + + + + Distribución de ejemplo 1 + Example distribution 1 + + + + 2024-01-05T12:00:00+01:00 + 2024-01-06T12:00:00+01:00 + + + + + 1000 + 199.0 + PT99M + + + 4304CF2E751E6053C90B1804C89C0EBB758F395A + + + + + + + + + + Dataset de ejemplo 2 + Descripción de un dataset de ejemplo 2 + + + estadísticas + + + + 2021-02-01T12:00:00+01:00 + 2025-02-01T12:00:00+01:00 + + + + + IDD2 + + + + + + 2024-01-01T12:00:00+01:00 + 2024-02-01T12:00:00+01:00 + + + + 2 + Version 2 + + + + + + + + + 5.0 + PT24M + + + + + + + + + + + + + + + + + Descripción de un distribución de ejemplo 2 + + + + + Distribución de ejemplo 2 + + + + 2024-01-05T12:00:00+01:00 + 2024-01-06T12:00:00+01:00 + + + + + 2000 + 299.0 + PT99M + + + 4304CF2E751E6053C90B1804C89C0EBB758F395A + + + + + + + + + + + + + Dataset de ejemplo 3 + Descripción de un dataset de ejemplo 3 + + + estadísticas + + + + 2021-02-01T12:00:00+01:00 + 2025-02-01T12:00:00+01:00 + + + + + IDD3 + + + + + + 2024-01-01T12:00:00+01:00 + 2024-02-01T12:00:00+01:00 + + + + 3 + Version 3 + + + + + + + + + 5.0 + PT24M + + + + + + + + + + + + + + + + + Descripción de un distribución de ejemplo 3 + + + + + Distribución de ejemplo 3 + + + + 2024-01-05T12:00:00+01:00 + 2024-01-06T12:00:00+01:00 + + + + + 3000 + 399.0 + PT99M + + + 4304CF2E751E6053C90B1804C89C0EBB758F395A + + + + + + + + + + + + + Data Service de ejemplo + + + + + + Organismo + Oficina del dato + + + + + + + + + + + + + Descripción de un dataservice de ejemplo. + + + estadísticas + + + diff --git a/examples/ttl/1.0.0/DEMO_E_DCAT-AP-ES_Catalog_NSIP.ttl b/examples/ttl/1.0.0/DEMO_E_DCAT-AP-ES_Catalog_NSIP.ttl new file mode 100644 index 0000000..8029527 --- /dev/null +++ b/examples/ttl/1.0.0/DEMO_E_DCAT-AP-ES_Catalog_NSIP.ttl @@ -0,0 +1,141 @@ +@prefix rdf: . +@prefix dcat: . +@prefix dcatap: . +@prefix dct: . +@prefix foaf: . +@prefix vcard: . +@prefix adms: . +@prefix skos: . +@prefix xsd: . + + + a dcat:Catalog ; + dct:description "Catálogo nacional de datos abiertos que contiene conjuntos de datos de todas las administraciones públicas españolas (NSIP/ERPD)."@es, "National open data catalog containing datasets from all Spanish public administrations (NSIP/ERPD)."@en ; + dct:identifier "http://dcat-ap-es.ejemplo.nsip.org/catalogo" ; + dct:issued "2025-01-01"^^xsd:date ; + dct:language , ; + dct:license ; + dct:modified "2025-01-15"^^xsd:date ; + dct:publisher ; + dct:rights ; + dct:spatial ; + dct:title "Catálogo de Datos Abiertos del Gobierno (NSIP/ERPD)"@es, "Government Open Data Catalog (NSIP/ERPD)"@en ; + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Punto de Contacto del Catálogo"@es ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "datos.gob.es"@es + ] ; + dcat:dataset ; + dcat:service ; + dcat:themeTaxonomy ; + foaf:homepage . + + + a dcat:Dataset ; + # NSIP/ERPD Convencion 25-26-27 + dct:accessRights ; + dcatap:applicableLegislation , + ; + + # DCAT-AP-ES + dct:accrualPeriodicity ; + dct:conformsTo ; + dct:description "Hourly air quality measurements from Madrid monitoring stations, including NO2, PM10, PM2.5, O3, SO2 and CO."@en, "Mediciones horarias de la calidad del aire en las estaciones de monitoreo de Madrid, incluyendo NO2, PM10, PM2.5, O3, SO2 y CO."@es ; + dct:identifier "calidad-aire-madrid-2024-001" ; + dct:issued "2024-01-01"^^xsd:date ; + dct:modified "2025-01-15"^^xsd:date ; + dct:publisher ; + dct:spatial ; + dct:temporal [ + a dct:PeriodOfTime ; + dcat:endDate "2024-12-31"^^xsd:date ; + dcat:startDate "2020-01-01"^^xsd:date + ] ; + dct:title "Air Quality in Madrid - Hourly Data (NSIP/ERPD)"@en, "Calidad del Aire en Madrid - Datos Horarios (NSIP/ERPD)"@es ; + adms:identifier [ + a adms:Identifier ; + skos:notation "CAM-AIR-2024-001" + ] ; + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Departamento de Medio Ambiente"@es ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "datos.gob.es"@es + ] ; + dcat:distribution , ; + dcat:keyword "air quality"@en, "calidad del aire"@es, "contaminación"@es, "environment"@en, "medio ambiente"@es, "pollution"@en ; + dcat:landingPage ; + dcat:theme . + +# Nota: dcat:hasVersion y dcat:isVersionOf se omiten en este ejemplo +# porque referencian datasets externos que no están incluidos aquí + + + a dcat:Distribution ; + dcatap:availability ; + dcatap:applicableLegislation , + ; + dct:description "Archivo CSV con mediciones horarias de calidad del aire."@es, "CSV file with hourly air quality measurements."@en ; + dct:format ; + dct:issued "2024-01-01"^^xsd:date ; + dct:license ; + dct:modified "2025-01-15"^^xsd:date ; + dct:rights ; + dct:title "Distribución CSV - Calidad del Aire Madrid (NSIP/ERPD)"@es, "CSV Distribution - Madrid Air Quality (NSIP/ERPD)"@en ; + adms:status ; + dcat:accessURL ; + dcat:byteSize 2456789 ; + dcat:downloadURL ; + dcat:mediaType . + + + a dcat:Distribution ; + dcatap:availability ; + dcatap:applicableLegislation , + ; + dcat:accessService ; + dct:description "API REST que devuelve datos en formato JSON."@es, "REST API returning data in JSON format."@en ; + dct:format ; + dct:issued "2024-01-01"^^xsd:date ; + dct:license ; + dct:modified "2025-01-15"^^xsd:date ; + dct:rights ; + dcat:byteSize 3500000 ; + dct:title "Distribución JSON - Calidad del Aire Madrid (NSIP/ERPD)"@es, "JSON Distribution - Madrid Air Quality (NSIP/ERPD)"@en ; + adms:status ; + dcat:accessURL ; + dcat:mediaType . + + + a dcat:DataService ; + dct:title "Data Service de ejemplo (NSIP/ERPD)"@es ; + dcat:endpointURL ; + dcat:theme ; + dct:publisher ; + dcat:contactPoint ; + foaf:page ; + dcat:endpointDescription ; + dcat:servesDataset ; + dcatap:hvdCategory ; + dct:description "Descripción de un dataservice de ejemplo."@es ; + dct:accessRights ; + dcatap:applicableLegislation , + ; + dct:license ; + dcat:keyword "estadísticas"@es . + + + a vcard:Organization ; + vcard:organization-name "Organismo"@es ; + vcard:fn "Oficina del dato"@es ; + vcard:hasURL ; + vcard:hasUID ; + vcard:hasEmail ; + vcard:hasTelephone . \ No newline at end of file diff --git a/examples/ttl/1.0.0/E_DCAT-AP-ES_Catalog_NSIP.ttl b/examples/ttl/1.0.0/E_DCAT-AP-ES_Catalog_NSIP.ttl new file mode 100644 index 0000000..e6fee34 --- /dev/null +++ b/examples/ttl/1.0.0/E_DCAT-AP-ES_Catalog_NSIP.ttl @@ -0,0 +1,533 @@ +@prefix rdf: . +@prefix dcat: . +@prefix dcatap: . +@prefix dct: . +@prefix foaf: . +@prefix vcard: . +@prefix adms: . +@prefix skos: . +@prefix xsd: . +@prefix prov: . +@prefix rdfs: . +@prefix spdx: . + +# ============================================================================ +# CATÁLOGO DE EJEMPLO: DATOS PROTEGIDOS (NSIP/ERPD) +# ============================================================================ + + + a dcat:Catalog ; + + # Propiedades obligatorias del catálogo + dct:title "Catálogo de Ejemplo - Datos Protegidos"@es, + "Example Catalog - Protected Data"@en ; + + dct:description "Catálogo de ejemplo que demuestra cómo representar conjuntos de datos con acceso restringido disponibles a través de NSIP/ERPD conforme al Reglamento de Gobernanza de Datos (DGA). Este catálogo contiene únicamente datos ficticios para propósitos de demostración."@es, + "Example catalog demonstrating how to represent datasets with restricted access available through NSIP/ERPD in compliance with the Data Governance Act (DGA). This catalog contains only fictitious data for demonstration purposes."@en ; + + dct:publisher ; + + dct:issued "2025-01-01"^^xsd:date ; + dct:modified "2025-12-18"^^xsd:date ; + + dct:language , + ; + + # Legislación aplicable + dcatap:applicableLegislation , + ; + + dct:rights ; + + dct:license ; + + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2025-01-01"^^xsd:date + ] ; + + dct:spatial ; + + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Oficina de Ejemplo NSIP"@es, + "Example NSIP Office"@en ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "Organización de Ejemplo"@es + ] ; + + foaf:homepage ; + + dcat:themeTaxonomy , + ; + + dcat:dataset , + , + ; + + dcat:service . + + +# ============================================================================ +# DATASET 1: DATOS ECONÓMICOS DE EJEMPLO (RESTRICTED) +# ============================================================================ + + + a dcat:Dataset ; + + # === CONVENCIÓN 25: PROPIEDADES OBLIGATORIAS NSIP/ERPD === + + # 1. dct:title + dct:title "Datos Económicos Agregados de Ejemplo"@es, + "Example Aggregated Economic Data"@en ; + + # 2. dct:description + dct:description "Conjunto de datos de ejemplo que contiene información económica ficticia agregada por sector y región. Los datos están anonimizados y son únicamente para propósitos de demostración del perfil DCAT-AP-ES para datos protegidos NSIP/ERPD."@es, + "Example dataset containing fictitious economic information aggregated by sector and region. Data is anonymized and for demonstration purposes of the DCAT-AP-ES profile for NSIP/ERPD protected data only."@en ; + + # 3. dct:publisher + dct:publisher ; + + # 4. dct:accessRights (RESTRICTED o NON_PUBLIC) + dct:accessRights ; + + # 5. dcat:distribution (al menos una) + dcat:distribution , + ; + + # === OTRAS PROPIEDADES OBLIGATORIAS DCAT-AP-ES === + + dcat:theme , + ; + + dcat:keyword "economía"@es, "ejemplo"@es, "ficticio"@es, "agregado"@es, + "economy"@en, "example"@en, "fictitious"@en, "aggregated"@en ; + + # === CONVENCIÓN 27: LEGISLACIÓN APLICABLE (RECOMENDADO) === + + dcatap:applicableLegislation , + ; + + # === PROPIEDADES ADICIONALES === + + dct:identifier "EJEMPLO-ECO-2024-001" ; + + adms:identifier [ + a adms:Identifier ; + skos:notation "ECO-EJEMPLO-001"^^xsd:string ; + dct:creator ; + adms:schemeAgency "Organización de Ejemplo"@es + ] ; + + dct:issued "2024-01-15"^^xsd:date ; + dct:modified "2025-12-01"^^xsd:date ; + + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2020-01-01"^^xsd:date ; + dcat:endDate "2024-12-31"^^xsd:date + ] ; + + dct:spatial ; + + dct:accrualPeriodicity ; + + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Punto de Contacto - Datos Económicos de Ejemplo"@es ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "Organización Económica de Ejemplo"@es + ] ; + + dcat:landingPage ; + + foaf:page ; + + dcat:temporalResolution "P1Y"^^xsd:duration ; + + dct:provenance [ + a dct:ProvenanceStatement ; + rdfs:label "Datos ficticios generados para demostración del perfil DCAT-AP-ES NSIP/ERPD."@es + ] ; + + dcat:accessService . + + +# ============================================================================ +# DISTRIBUCIÓN 1.1: CSV (CONVENCIÓN 26) +# ============================================================================ + + + a dcat:Distribution ; + + # === CONVENCIÓN 26: PROPIEDADES OBLIGATORIAS === + + # 1. dcat:accessURL + dcat:accessURL ; + + # 2. dcat:byteSize + dcat:byteSize 45678900 ; + + # 3. dct:format + dct:format ; + + # 4. dct:rights + dct:rights ; + + # === PROPIEDADES ADICIONALES === + + dct:title "Datos Económicos 2020-2024 - Formato CSV"@es, + "Economic Data 2020-2024 - CSV Format"@en ; + + dct:description "Archivo CSV de ejemplo con datos económicos ficticios agregados. Contiene aproximadamente 150000 registros con 40 variables. Este archivo es únicamente para demostración."@es, + "Example CSV file with fictitious aggregated economic data. Contains approximately 150000 records with 40 variables. This file is for demonstration purposes only."@en ; + + dct:license ; + + dcatap:applicableLegislation ; + + dcatap:availability ; + + adms:status ; + + dct:issued "2024-01-15"^^xsd:date ; + dct:modified "2025-12-01"^^xsd:date ; + + dcat:mediaType ; + + dcat:compressFormat ; + + dct:language ; + + spdx:checksum [ + a spdx:Checksum ; + spdx:algorithm ; + spdx:checksumValue "a1b2c3d4e5f6789012345678901234567890abcd"^^xsd:hexBinary + ] ; + + foaf:page . + + +# ============================================================================ +# DISTRIBUCIÓN 1.2: JSON (CONVENCIÓN 26) +# ============================================================================ + + + a dcat:Distribution ; + + # === CONVENCIÓN 26: PROPIEDADES OBLIGATORIAS === + + dcat:accessURL ; + dcat:byteSize 52345678 ; + dct:format ; + dct:rights ; + + # === PROPIEDADES ADICIONALES === + + dct:title "Datos Económicos 2020-2024 - Formato JSON"@es, + "Economic Data 2020-2024 - JSON Format"@en ; + + dct:description "Archivo JSON de ejemplo con la misma información que el CSV pero en formato JSON estructurado. Únicamente para demostración."@es, + "Example JSON file with the same information as CSV but in structured JSON format. For demonstration purposes only."@en ; + + dct:license ; + dcatap:applicableLegislation ; + dcatap:availability ; + adms:status ; + + dct:issued "2024-01-15"^^xsd:date ; + dct:modified "2025-12-01"^^xsd:date ; + + dcat:mediaType ; + dct:language ; + + foaf:page . + + +# ============================================================================ +# DATASET 2: DATOS ESTADÍSTICOS DE EJEMPLO (NON_PUBLIC) +# ============================================================================ + + + a dcat:Dataset ; + + # === CONVENCIÓN 25: PROPIEDADES OBLIGATORIAS === + + dct:title "Datos Estadísticos Detallados de Ejemplo"@es, + "Example Detailed Statistical Data"@en ; + + dct:description "Conjunto de datos de ejemplo con información estadística ficticia detallada y anonimizada. Los datos son completamente ficticios y sirven para demostrar el perfil DCAT-AP-ES para datos con acceso no público."@es, + "Example dataset with fictitious detailed and anonymized statistical information. Data is completely fictitious and serves to demonstrate the DCAT-AP-ES profile for non-public access data."@en ; + + dct:publisher ; + + dct:accessRights ; + + dcat:distribution ; + + # === PROPIEDADES OBLIGATORIAS DCAT-AP-ES === + + dcat:theme , + ; + + dcat:keyword "estadística"@es, "ejemplo"@es, "ficticio"@es, "detallado"@es, + "statistics"@en, "example"@en, "fictitious"@en, "detailed"@en ; + + # === CONVENCIÓN 27: LEGISLACIÓN === + + dcatap:applicableLegislation , + ; + + # === PROPIEDADES ADICIONALES === + + dct:identifier "EJEMPLO-EST-2024-002" ; + + adms:identifier [ + a adms:Identifier ; + skos:notation "EST-EJEMPLO-002"^^xsd:string + ] ; + + dct:issued "2024-03-01"^^xsd:date ; + dct:modified "2025-11-15"^^xsd:date ; + + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2015-01-01"^^xsd:date ; + dcat:endDate "2024-12-31"^^xsd:date + ] ; + + dct:spatial ; + dct:accrualPeriodicity ; + + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Punto de Contacto - Estadística de Ejemplo"@es ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "Organización Estadística de Ejemplo"@es + ] ; + + dcat:landingPage ; + foaf:page ; + + dcat:temporalResolution "P1M"^^xsd:duration ; + + dct:provenance [ + a dct:ProvenanceStatement ; + rdfs:label "Datos ficticios generados mediante simulación estadística para demostración."@es + ] ; + + prov:wasGeneratedBy [ + a prov:Activity ; + rdfs:label "Proceso de generación de datos de ejemplo"@es ; + prov:startedAtTime "2024-02-15T00:00:00"^^xsd:dateTime ; + prov:endedAtTime "2024-02-28T23:59:59"^^xsd:dateTime + ] ; + + dcat:accessService . + + +# ============================================================================ +# DISTRIBUCIÓN 2.1: API (CONVENCIÓN 26) +# ============================================================================ + + + a dcat:Distribution ; + + # === CONVENCIÓN 26: PROPIEDADES OBLIGATORIAS === + + dcat:accessURL ; + dcat:byteSize 987654321 ; + dct:format ; + dct:rights ; + + # === PROPIEDADES ADICIONALES === + + dct:title "Datos Estadísticos 2015-2024 - API REST de Ejemplo"@es, + "Statistical Data 2015-2024 - Example REST API"@en ; + + dct:description "Acceso mediante API REST de ejemplo con autenticación ficticia. Permite consultas filtradas simuladas. Este endpoint es únicamente para demostración y no contiene datos reales."@es, + "Access via example REST API with fictitious authentication. Allows simulated filtered queries. This endpoint is for demonstration only and does not contain real data."@en ; + + dct:license ; + dcatap:applicableLegislation ; + dcatap:availability ; + adms:status ; + + dct:issued "2024-03-01"^^xsd:date ; + dct:modified "2025-11-15"^^xsd:date ; + + dcat:mediaType ; + dct:language ; + + dct:conformsTo ; + + foaf:page ; + + dcat:accessService . + + +# ============================================================================ +# DATASET 3: DATOS AGREGADOS DE EJEMPLO (RESTRICTED) +# ============================================================================ + + + a dcat:Dataset ; + + # === CONVENCIÓN 25: PROPIEDADES OBLIGATORIAS === + + dct:title "Datos Agregados Sectoriales de Ejemplo"@es, + "Example Sector Aggregated Data"@en ; + + dct:description "Datos de ejemplo agregados por sector con información ficticia sobre indicadores económicos y sociales. Todos los datos son ficticios y generados para propósitos de demostración del modelo DCAT-AP-ES para NSIP/ERPD."@es, + "Example data aggregated by sector with fictitious information on economic and social indicators. All data is fictitious and generated for demonstration purposes of the DCAT-AP-ES model for NSIP/ERPD."@en ; + + dct:publisher ; + + dct:accessRights ; + + dcat:distribution ; + + # === PROPIEDADES OBLIGATORIAS DCAT-AP-ES === + + dcat:theme , + ; + + dcat:keyword "agregado"@es, "sectorial"@es, "ejemplo"@es, "indicadores"@es, + "aggregated"@en, "sectoral"@en, "example"@en, "indicators"@en ; + + # === CONVENCIÓN 27 === + + dcatap:applicableLegislation , + ; + + # === PROPIEDADES ADICIONALES === + + dct:identifier "EJEMPLO-AGR-2024-003" ; + + dct:issued "2024-06-01"^^xsd:date ; + dct:modified "2025-12-10"^^xsd:date ; + + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2018-01-01"^^xsd:date ; + dcat:endDate "2024-12-31"^^xsd:date + ] ; + + dct:spatial ; + dct:accrualPeriodicity ; + + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Punto de Contacto - Datos Sectoriales de Ejemplo"@es ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "Organización Sectorial de Ejemplo"@es + ] ; + + dcat:landingPage ; + + dcat:temporalResolution "P3M"^^xsd:duration . + + +# ============================================================================ +# DISTRIBUCIÓN 3.1: EXCEL (CONVENCIÓN 26) +# ============================================================================ + + + a dcat:Distribution ; + + # === CONVENCIÓN 26: PROPIEDADES OBLIGATORIAS === + + dcat:accessURL ; + dcat:byteSize 34567890 ; + dct:format ; + dct:rights ; + + # === PROPIEDADES ADICIONALES === + + dct:title "Datos Agregados 2018-2024 - Formato Excel de Ejemplo"@es, + "Aggregated Data 2018-2024 - Example Excel Format"@en ; + + dct:description "Archivo Excel de ejemplo con múltiples hojas organizadas por año y sector. Incluye tablas dinámicas ficticias pre-configuradas. Únicamente para demostración."@es, + "Example Excel file with multiple sheets organized by year and sector. Includes fictitious pre-configured pivot tables. For demonstration purposes only."@en ; + + dct:license ; + dcatap:applicableLegislation ; + dcatap:availability ; + adms:status ; + + dct:issued "2024-06-01"^^xsd:date ; + dct:modified "2025-12-10"^^xsd:date ; + + dcat:mediaType ; + dct:language ; + + foaf:page . + + +# ============================================================================ +# DATA SERVICE: API DE DATOS PROTEGIDOS DE EJEMPLO (CONVENCIÓN 27) +# ============================================================================ + + + a dcat:DataService ; + + dct:title "API de Ejemplo para Datos Protegidos"@es, + "Example API for Protected Data"@en ; + + dct:description "Servicio de API de ejemplo para acceso a conjuntos de datos protegidos ficticios. Demuestra cómo implementar un servicio conforme a DCAT-AP-ES para NSIP/ERPD. Este servicio es únicamente para demostración y no proporciona acceso a datos reales."@es, + "Example API service for access to fictitious protected datasets. Demonstrates how to implement a service compliant with DCAT-AP-ES for NSIP/ERPD. This service is for demonstration purposes only and does not provide access to real data."@en ; + + dct:publisher ; + + dcat:endpointURL ; + + dcat:endpointDescription ; + + dcat:servesDataset , + , + ; + + dcatap:applicableLegislation ; + + dct:accessRights ; + + dct:license ; + + dct:conformsTo , + ; + + dcatap:availability ; + + dct:format , + , + ; + + dcat:keyword "API"@en, "ejemplo"@es, "OAuth2"@en, "NSIP"@en, "datos protegidos"@es, "protected data"@en, "example"@en ; + + dct:issued "2024-01-01"^^xsd:date ; + dct:modified "2025-12-18"^^xsd:date ; + + dcat:contactPoint [ + a vcard:Organization ; + vcard:fn "Soporte Técnico API de Ejemplo"@es ; + vcard:hasEmail ; + vcard:hasTelephone ; + vcard:hasURL ; + vcard:hasUID ; + vcard:organization-name "Organización de Ejemplo"@es + ] ; + + dcat:landingPage ; + foaf:page . diff --git a/examples/ttl/1.0.0/E_DCAT-AP-ES_full_optional.ttl b/examples/ttl/1.0.0/E_DCAT-AP-ES_full_optional.ttl new file mode 100644 index 0000000..8516754 --- /dev/null +++ b/examples/ttl/1.0.0/E_DCAT-AP-ES_full_optional.ttl @@ -0,0 +1,381 @@ +@prefix dcat: . +@prefix dcatap: . +@prefix dct: . +@prefix foaf: . +@prefix vcard: . +@prefix adms: . +@prefix xsd: . +@prefix rdfs: . +@prefix odrs: . +@prefix prov: . +@prefix spdx: . +@prefix odrl: . + + + a dcat:Catalog ; + dct:title "Catálogo de Datos Abiertos"@es ; + dct:description "Catálogo de Datos Abiertos que sirve de ejemplo en DCAT-AP-ES."@es ; + dct:publisher ; + dct:issued "2020-01-01T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2025-01-02T12:00:00+01:00"^^xsd:dateTime ; + foaf:homepage ; + dcat:themeTaxonomy ; + dct:language ; + dct:license ; + dct:spatial ; + dcat:catalog ; + dcat:record [ + a dcat:CatalogRecord ; + foaf:primaryTopic ; + dct:modified "2021-01-02T12:00:00+01:00"^^xsd:dateTime ; + dct:conformsTo ; + dct:issued "2022-01-01T12:00:00+01:00"^^xsd:dateTime ; + adms:status ; + dct:title "Registro del Catálogo de Datos Abiertos"@es ; + dct:description "Registro de metadatos del Catálogo de Datos Abiertos de ejemplo"@es + ] ; + dct:creator [ + a foaf:Organization ; + foaf:name "Nombre del departamento del organismo" ; + dct:identifier "E0DAT0001" ; + dct:type + ] ; + dct:hasPart ; + dct:isPartOf ; + dct:rights ; + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2021-01-03T12:00:00+01:00"^^xsd:dateTime ; + dcat:endDate "2025-01-03T12:00:00+01:00"^^xsd:dateTime + ] ; + dcat:dataset , , ; + dcat:service . + + + a dcat:Catalog ; + dct:title "Catálogo vinculado"@es ; + dct:description "Catálogo asociado que sirve de ejemplo en DCAT-AP-ES."@es ; + dct:publisher ; + dct:issued "2025-01-01T09:00:00+01:00"^^xsd:dateTime ; + dct:modified "2025-01-02T12:00:00+01:00"^^xsd:dateTime ; + foaf:homepage ; + dcat:themeTaxonomy ; + dct:language ; + dct:license ; + dct:spatial ; + dcat:dataset . + + + a dcat:Dataset ; + dct:title "Dataset ejemplo en catálogo vinculado"@es ; + dct:description "Dataset de ejemplo en el catálogo vinculado"@es ; + dct:publisher ; + dcat:theme ; + dcat:keyword "ejemplo"@es ; + dct:spatial ; + dcat:contactPoint [ + a vcard:Organization ; + vcard:organization-name "Organismo"@es ; + vcard:fn "Oficina del dato"@es ; + vcard:hasURL ; + vcard:hasUID ; + vcard:hasEmail ; + vcard:hasTelephone + ] ; + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2024-01-01T00:00:00Z"^^xsd:dateTime ; + dcat:endDate "2024-12-31T23:59:59Z"^^xsd:dateTime + ] ; + dcat:distribution . + + + a dcat:Distribution ; + dcat:accessURL ; + dcatap:applicableLegislation ; + dct:description "Descripción de una distribución distribuida de ejemplo"@es ; + dcatap:availability ; + dct:format ; + dct:license . + + + a ; + rdfs:label "Derechos relativos a la reutilización del Catálogo de Datos Abiertos" ; + odrs:dataLicense ; + odrs:attributionText "Atribución de autoría al Organismo" ; + odrs:attributionURL . + + + a dcat:Dataset ; + dct:title "Dataset de ejemplo 1"@es ; + dct:description "Descripción de un dataset de ejemplo 1"@es ; + dct:publisher ; + dcat:theme ; + dcat:keyword "estadísticas"@es ; + dcat:contactPoint ; + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2021-02-01T12:00:00+01:00"^^xsd:dateTime ; + dcat:endDate "2025-02-01T12:00:00+01:00"^^xsd:dateTime + ] ; + dct:spatial ; + dct:identifier "IDD1" ; + dct:creator ; + foaf:page ; + dcat:landingPage ; + adms:sample ; + dct:conformsTo ; + dct:issued "2024-01-01T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2024-02-01T12:00:00+01:00"^^xsd:dateTime ; + dct:type ; + dct:language ; + dct:accrualPeriodicity ; + dcat:version "1" ; + adms:versionNotes "Version 1"@es ; + dcat:qualifiedRelation [ + a dcat:Relationship ; + dct:relation ; + dct:type dcat:isReferencedBy ; + dcat:hadRole dct:references + ] ; + dcat:spatialResolutionInMeters 5.0 ; + dcat:temporalResolution "PT24M"^^xsd:duration ; + dct:isReferencedBy ; + dct:provenance ; + prov:qualifiedAttribution [ + a prov:Attribution ; + dcat:hadRole dct:publisher ; + prov:agent + ] ; + prov:wasGeneratedBy ; + dcat:hasVersion ; + dct:isVersionOf ; + dct:source ; + dct:accessRights ; + dcat:distribution . + + + a vcard:Organization ; + vcard:organization-name "Organismo"@es ; + vcard:fn "Oficina del dato"@es ; + vcard:hasURL ; + vcard:hasUID ; + vcard:hasEmail ; + vcard:hasTelephone . + + + a prov:Activity ; + rdfs:label "Proceso de generación del dataset" ; + prov:startedAtTime "2024-01-10T12:00:00+01:00"^^xsd:dateTime ; + prov:endedAtTime "2024-01-20T12:00:00+01:00"^^xsd:dateTime . + + + a dcat:Distribution ; + dcat:accessURL ; + dcatap:applicableLegislation ; + dct:description "Descripción de un distribución de ejemplo 1"@es ; + dcatap:availability ; + dct:format ; + dct:license ; + dcat:mediaType ; + dcat:accessService ; + dct:title "Distribución de ejemplo 1"@es, "Example distribution 1"@en ; + foaf:page ; + dcat:downloadURL ; + dct:conformsTo ; + dct:issued "2024-01-05T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2024-01-06T12:00:00+01:00"^^xsd:dateTime ; + adms:status ; + dct:language ; + dcat:compressFormat ; + dcat:packageFormat ; + dcat:byteSize "1000"^^xsd:nonNegativeInteger ; + dcat:spatialResolutionInMeters 199.0 ; + dcat:temporalResolution "PT99M"^^xsd:duration ; + spdx:checksum [ + a spdx:Checksum ; + spdx:checksumValue "4304CF2E751E6053C90B1804C89C0EBB758F395A"^^xsd:hexBinary ; + spdx:algorithm spdx:checksumAlgorithm_sha1 + ] ; + odrl:hasPolicy ; + dct:rights . + + + a dcat:Dataset ; + dct:title "Dataset de ejemplo 2"@es ; + dct:description "Descripción de un dataset de ejemplo 2"@es ; + dct:publisher ; + dcat:theme ; + dcat:keyword "estadísticas"@es ; + dcat:contactPoint ; + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2021-02-01T12:00:00+01:00"^^xsd:dateTime ; + dcat:endDate "2025-02-01T12:00:00+01:00"^^xsd:dateTime + ] ; + dct:spatial ; + dct:identifier "IDD2" ; + dct:creator ; + foaf:page ; + dcat:landingPage ; + adms:sample ; + dct:conformsTo ; + dct:issued "2024-01-01T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2024-02-01T12:00:00+01:00"^^xsd:dateTime ; + dct:type ; + dct:language ; + dct:accrualPeriodicity ; + dcat:version "2" ; + adms:versionNotes "Version 2"@es ; + dcat:qualifiedRelation [ + a dcat:Relationship ; + dct:relation ; + dct:type dcat:isReferencedBy ; + dcat:hadRole dct:references + ] ; + dcat:spatialResolutionInMeters 5.0 ; + dcat:temporalResolution "PT24M"^^xsd:duration ; + dct:isReferencedBy ; + dct:provenance ; + prov:qualifiedAttribution [ + a prov:Attribution ; + dcat:hadRole dct:publisher ; + prov:agent + ] ; + prov:wasGeneratedBy ; + dct:source ; + dct:accessRights ; + dcat:distribution . + + + a dcat:Distribution ; + dcat:accessURL ; + dcatap:applicableLegislation ; + dct:description "Descripción de un distribución de ejemplo 2"@es ; + dcatap:availability ; + dct:format ; + dct:license ; + dcat:mediaType ; + dct:title "Distribución de ejemplo 2"@es ; + foaf:page ; + dcat:downloadURL ; + dct:conformsTo ; + dct:issued "2024-01-05T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2024-01-06T12:00:00+01:00"^^xsd:dateTime ; + adms:status ; + dct:language ; + dcat:compressFormat ; + dcat:packageFormat ; + dcat:byteSize "2000"^^xsd:nonNegativeInteger ; + dcat:spatialResolutionInMeters 299.0 ; + dcat:temporalResolution "PT99M"^^xsd:duration ; + spdx:checksum [ + a spdx:Checksum ; + spdx:checksumValue "4304CF2E751E6053C90B1804C89C0EBB758F395A"^^xsd:hexBinary ; + spdx:algorithm spdx:checksumAlgorithm_sha1 + ] ; + odrl:hasPolicy ; + dct:rights . + + + a dcat:Dataset ; + dct:title "Dataset de ejemplo 3"@es ; + dct:description "Descripción de un dataset de ejemplo 3"@es ; + dct:publisher ; + dcat:theme ; + dcat:keyword "estadísticas"@es ; + dcat:contactPoint ; + dct:temporal [ + a dct:PeriodOfTime ; + dcat:startDate "2021-02-01T12:00:00+01:00"^^xsd:dateTime ; + dcat:endDate "2025-02-01T12:00:00+01:00"^^xsd:dateTime + ] ; + dct:spatial ; + dct:identifier "IDD3" ; + dct:creator ; + foaf:page ; + dcat:landingPage ; + adms:sample ; + dct:conformsTo ; + dct:issued "2024-01-01T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2024-02-01T12:00:00+01:00"^^xsd:dateTime ; + dct:type ; + dct:language ; + dct:accrualPeriodicity ; + dcat:version "3" ; + adms:versionNotes "Version 3"@es ; + dcat:qualifiedRelation [ + a dcat:Relationship ; + dct:relation ; + dct:type dcat:isReferencedBy ; + dcat:hadRole dct:references + ] ; + dcat:spatialResolutionInMeters 5.0 ; + dcat:temporalResolution "PT24M"^^xsd:duration ; + dct:isReferencedBy ; + dct:provenance ; + prov:qualifiedAttribution [ + a prov:Attribution ; + dcat:hadRole dct:publisher ; + prov:agent + ] ; + prov:wasGeneratedBy ; + dct:source ; + dct:accessRights ; + dcat:distribution . + + + a dcat:Distribution ; + dcat:accessURL ; + dcatap:applicableLegislation ; + dct:description "Descripción de un distribución de ejemplo 3"@es ; + dcatap:availability ; + dct:format ; + dct:license ; + dcat:mediaType ; + dct:title "Distribución de ejemplo 3"@es ; + foaf:page ; + dcat:downloadURL ; + dct:conformsTo ; + dct:issued "2024-01-05T12:00:00+01:00"^^xsd:dateTime ; + dct:modified "2024-01-06T12:00:00+01:00"^^xsd:dateTime ; + adms:status ; + dct:language ; + dcat:compressFormat ; + dcat:packageFormat ; + dcat:byteSize "3000"^^xsd:nonNegativeInteger ; + dcat:spatialResolutionInMeters 399.0 ; + dcat:temporalResolution "PT99M"^^xsd:duration ; + spdx:checksum [ + a spdx:Checksum ; + spdx:checksumValue "4304CF2E751E6053C90B1804C89C0EBB758F395A"^^xsd:hexBinary ; + spdx:algorithm spdx:checksumAlgorithm_sha1 + ] ; + odrl:hasPolicy ; + dct:rights . + + + a dcat:DataService ; + dct:title "Data Service de ejemplo"@es ; + dcat:endpointURL ; + dcat:theme ; + dct:publisher ; + dcat:contactPoint ; + foaf:page ; + dcat:endpointDescription ; + dcat:servesDataset ; + dcatap:applicableLegislation ; + dcatap:hvdCategory ; + dct:description "Descripción de un dataservice de ejemplo."@es ; + dct:accessRights ; + dct:license ; + dcat:keyword "estadísticas"@es . + + + a vcard:Organization ; + vcard:organization-name "Organismo"@es ; + vcard:fn "Oficina del dato"@es ; + vcard:hasURL ; + vcard:hasUID ; + vcard:hasEmail ; + vcard:hasTelephone . diff --git a/examples/ttl/Conventions_dataset-metadata-relation.ttl b/examples/ttl/Conventions_dataset-metadata-relation.ttl index 344a3f3..78bb6ab 100644 --- a/examples/ttl/Conventions_dataset-metadata-relation.ttl +++ b/examples/ttl/Conventions_dataset-metadata-relation.ttl @@ -22,7 +22,8 @@ rdfs:comment "Identificador INSPIRE del mismo dataset"@es ; # Propiedades contextuales adicionales - dct:conformsTo ; # Reglamento de Metadatos INSPIRE - foaf:page ; # Página HTML de visualización + dct:conformsTo ; # Reglamento de Metadatos INSPIRE + foaf:page ; # Página HTML de visualización del metadato INSPIRE + foaf:homepage ; # Página principal del catálogo/iniciativa de datos dct:format ; dct:issued "2020-01-15"^^xsd:date . \ No newline at end of file diff --git a/overrides/dcatapes/jsonld/faq.json b/overrides/dcatapes/jsonld/faq.json index 303b878..2d0e90b 100644 --- a/overrides/dcatapes/jsonld/faq.json +++ b/overrides/dcatapes/jsonld/faq.json @@ -42,13 +42,53 @@ "inLanguage": "en" } }, + { + "@type": "Question", + "name": "¿Qué son las convenciones datos.gob.es?", + "inLanguage": "es", + "acceptedAnswer": { + "@type": "Answer", + "text": "Complemento de DCAT-AP-ES que define reglas adicionales para abordar necesidades prácticas para federar con el catálogo nacional de datos.gob.es", + "inLanguage": "es" + } + }, + { + "@type": "Question", + "name": "What are the datos.gob.es Conventions?", + "inLanguage": "en", + "acceptedAnswer": { + "@type": "Answer", + "text": "Complement to DCAT-AP-ES that defines additional rules to address practical needs to federate with the national catalog of datos.gob.es", + "inLanguage": "en" + } + }, + { + "@type": "Question", + "name": "¿Cuál es la relación entre las convenciones y DCAT-AP-ES?", + "inLanguage": "es", + "acceptedAnswer": { + "@type": "Answer", + "text": "Mientras que DCAT-AP-ES define el modelo base, las convenciones establecen directrices para resolver casos prácticos concretos sin modificar la especificación.", + "inLanguage": "es" + } + }, + { + "@type": "Question", + "name": "What is the relationship between conventions and DCAT-AP-ES?", + "inLanguage": "en", + "acceptedAnswer": { + "@type": "Answer", + "text": "While DCAT-AP-ES defines the base model, conventions establish guidelines to resolve concrete practical cases without modifying the specification.", + "inLanguage": "en" + } + }, { "@type": "Question", "name": "¿Cuándo entra en vigor DCAT-AP-ES?", "inLanguage": "es", "acceptedAnswer": { "@type": "Answer", - "text": "DCAT-AP-ES está previsto que entre en vigor en 2025, tras la aprobación de la nueva NTI-RISP, el día siguiente a su publicación en el BOE.", + "text": "DCAT-AP-ES está previsto que entre en vigor en los próximos meses, tras la aprobación de la nueva NTI-RISP, el día siguiente a su publicación en el BOE.", "inLanguage": "es" } }, @@ -58,7 +98,7 @@ "inLanguage": "en", "acceptedAnswer": { "@type": "Answer", - "text": "DCAT-AP-ES is expected to come into force in 2025, following the approval of the new NTI-RISP, the day after its publication in the Official State Gazette (BOE).", + "text": "DCAT-AP-EN is expected to come into effect in the coming months, following the approval of the new NTI-RISP, the day after its publication in the Official State Gazette (BOE).", "inLanguage": "en" } }, diff --git a/shacl/1.0.0/hvd/shacl_dataset_hvd_shape.ttl b/shacl/1.0.0/hvd/shacl_dataset_hvd_shape.ttl index 7d0230e..42f0347 100644 --- a/shacl/1.0.0/hvd/shacl_dataset_hvd_shape.ttl +++ b/shacl/1.0.0/hvd/shacl_dataset_hvd_shape.ttl @@ -113,3 +113,32 @@ dcatapes:Dataset_HVD_Shape sh:node dcatapes:HVDCategoryRestriction ; ]; sh:targetClass dcat:Dataset . + +# Convención 12 +dcatapes:Dataset_HVD_MustHaveServiceConvention + a sh:NodeShape ; + sh:targetClass dcat:Dataset ; + sh:name "Dataset HVD debe ser servido por al menos un DataService"@es , + "HVD Dataset must be served by at least one DataService"@en ; + rdfs:comment "Los datasets catalogados como HVD deben ser servidos por al menos un dcat:DataService que lo referencie mediante dcat:servesDataset (Convención 12)"@es , + "Datasets catalogued as HVD must be served by at least one dcat:DataService that references it via dcat:servesDataset (Convention 12)"@en ; + rdfs:label "Restricción de conjunto de datos: debe tener al menos un servicio de datos"@es , + "Dataset restriction: must have at least one data service"@en ; + foaf:page ; + sh:severity sh:Violation ; + sh:property [ + # Solo aplica a datasets HVD (con dcatap:hvdCategory) + sh:path dcatap:hvdCategory ; + sh:minCount 1 ; + ] ; + sh:property [ + # Detectar al menos un dcat:DataService mediante el inverso de dcat:servesDataset + sh:path [ + sh:inversePath + dcat:servesDataset + ] ; + sh:minCount 1 ; + sh:class dcat:DataService ; + sh:message "Un dataset HVD debe ser servido por al menos un dcat:DataService mediante dcat:servesDataset. Ver Convención 12: https://datosgobes.github.io/DCAT-AP-ES/convenciones/#convencion-12"@es ; + sh:message "An HVD dataset must be served by at least one dcat:DataService via dcat:servesDataset. See Convention 12: https://datosgobes.github.io/DCAT-AP-ES/convenciones/#convencion-12"@en ; + ] . diff --git a/shacl/1.0.0/shacl_distribution_shape.ttl b/shacl/1.0.0/shacl_distribution_shape.ttl index a37075a..0fadd31 100644 --- a/shacl/1.0.0/shacl_distribution_shape.ttl +++ b/shacl/1.0.0/shacl_distribution_shape.ttl @@ -190,7 +190,7 @@ dcatapes:Distribution_Shape #TODO: Review DCAT-AP-ES model #[ sh:class dct:MediaTypeOrExtent ;] [ - # Legacy NTI-RISP: https://datosgobes.github.io/NTI-RISP/#distribucion_-_clase_dcatdistribution_-_obligatorio + # Legacy NTI-RISP: https://datosgobes.github.io/NTI-RISP/#Distribution sh:class dct:IMT ; ]