Requirements for Datasets

Living Standard,

This version:
https://docs.nde.nl/requirements-datasets/
Issue Tracking:
GitHub
Inline In Spec
Editors:
David de Boer (Netwerk Digitaal Erfgoed)
Bob Coret (Netwerk Digitaal Erfgoed)
Version:
1.15.1

Abstract

This document describes requirements for publishing dataset descriptions. By following these requirements, publishers enable users to find and use their datasets.

1. Introduction

This section is non-normative.

To enable datasets to be found and used, they must be described according to a well-documented, shared and machine-readable publication model.

This document describes such a model and its rules. When publishers make their dataset descriptions adhere to these rules, they enable consumers – both humans and machines – to use the datasets in new and better ways.

These requirements prescribe the metadata that publishers must provide for their dataset. This metadata tells consumers:

1.1. Audience

This document is mainly geared towards two groups of readers.

Digital heritage collection managers can follow the requirements in this document to make their published datasets findable and usable, for instance through Google Dataset Search and the NDE Dataset Register.

Suppliers of collection management systems can implement these requirements in their software to help collection managers using it to publish datasets in the correct format. These requirements are scoped to the online publication output of collection management systems; they do not prescribe how those systems should store data internally.

1.2. Context

While focused on digital heritage institutions in The Netherlands, this document is based on broader, international best practices for publishing datasets, including [DWBP-UCR], [DWBP] and [LD-BP].

These requirements incorporate a previous publication model, which provides more background on choices made here.

1.3. Code examples

Publishers can describe their datasets in either of two vocabularies: Schema.org [SCHEMA-ORG] or DCAT-AP-NL 3.0 [DCAT-AP-NL], the Dutch application profile of [VOCAB-DCAT-3]. The NDE Dataset Register accepts both and converts every dataset description to DCAT-AP-NL 3.0. Search engines such as Google Dataset Search read Schema.org; DCAT-AP-NL 3.0 is the standard for Dutch government data catalogs.

Every RDF code example is given in both vocabularies, serialized as [JSON-LD]. Use the tabs above an example to switch between them; all examples and attribute tables switch together.

2. Version 2.0

Version 2.0 takes effect on Monday 3 May 2027. Until that date, the NDE Dataset Register accepts dataset descriptions that break a version 2.0 rule and reports each broken rule as a warning. From that date, it rejects new and updated dataset descriptions that break one. A dataset without a creator (schema:creator or dct:creator), for example, is registered with a warning before that date and refused from it.

A dataset that is already registered is not removed on that date. If its description breaks a version 2.0 rule, the Register marks it as invalid the next time it reads the description.

The changes follow DCAT-AP-NL 3.0, the format into which the Register converts every dataset description. The attribute tables in § 5.6 Overview of attributes mark each affected attribute with a label such as ‘v2.0: becomes required’. Run your datasets through the validator: the warnings it gives are the changes that apply to you. The announcement gives the reasons.

3. Definitions

Dataset

A collection of metadata records. These are made available through the dataset’s distributions.

Dataset description

Metadata about the dataset, including the dataset’s name and publisher. This description must be distinguished from the metadata records themselves.

For example: imagine a dataset of Van Gogh paintings called ‘Sunflowers’, which is published by the Van Gogh Museum under a specific license. The name, license and publisher are all part of the dataset description. The dataset description also tells us the URLs of distributions where we can download or query the data. Using these distributions, we can access the metadata records themselves, which may include descriptions of paintings, persons, places etc. These are not part of the dataset description.

Data catalog

A collection of dataset descriptions.

Distribution

A channel through which a dataset is made available, either for downloading (such as a CSV file download or RDF dump), or for querying (such as a SPARQL endpoint).

Web API

An API that is available over HTTP, for example an OAI-PMH, OpenAPI or SPARQL endpoint.

Machine-readability

TODO

Publisher

An individual or organization that provides one or more datasets.

is this a good translation for ‘bronhouder’? And add examples. This would probably be 'heritage institution' in DERA.

Consumer

On organization, individual or service platform that uses one or more datasets that are provided by a publisher.

4. Conceptual model

The model consists of four resource types: organizations or persons publish datasets, which are available in distributions. Optionally, the datasets are grouped in data catalogs.

distribution
distribution
license
license
IRI
IRI
Organization/
Person
Organization/ Person
publisher
publisher
DataCatalog
DataCatalog
dataset
dataset
DataDownload
DataDownload
Dataset
Dataset
DataDownload
DataDownload
DataDownload
DataDownload
DataDownload
DataDownload

5. Requirements

5.1. Available in RDF

For machine-readable access to data, it needs to be published in an RDF format. RDF formats include [JSON-LD], [Turtle] and [TriG].

Publishers MUST make their dataset description available in RDF.

Publishers MAY use either the Schema.org [SCHEMA-ORG] or the DCAT-AP-NL 3.0 [DCAT-AP-NL] vocabulary (see § 1.3 Code examples).

You can include the JSON-LD directly in the HTML source of web pages, as Google recommends for Schema.org. Google documents organization markup in Schema.org only, so use the Schema.org version to make the organization known to search engines.

So, on your organization’s web page, for instance www.kb.nl, include:

<html>
  <head>
    <title>Koninklijke Bibliotheek</title>
    <script type="application/ld+json">
      {
        "@context": "https://schema.org/",
        "@type": "Organization",
        "@id": "http://www.wikidata.org/entity/Q1526131",
        "name": {
          "@value": "Koninklijke Bibliotheek",
          "@language": "nl"
        }
      }
    </script>
  </head>
  <body>
    Here continues the web page of the organization...
  </body>
</html>
<html>
  <head>
    <title>Koninklijke Bibliotheek</title>
    <script type="application/ld+json">
      {
        "@context": {
          "foaf": "http://xmlns.com/foaf/0.1/"
        },
        "@type": "foaf:Organization",
        "@id": "http://www.wikidata.org/entity/Q1526131",
        "foaf:name": {
          "@value": "Koninklijke Bibliotheek",
          "@language": "nl"
        }
      }
    </script>
  </head>
  <body>
    Here continues the web page of the organization...
  </body>
</html>

See also Data on the Web Best Practices Use Cases & Requirements § R-FormatMachineRead.

5.1.1. Content-Type

Clients that retrieve dataset descriptions rely on the HTTP Content-Type header to determine how the response should be parsed.

Therefore, the URL at which a dataset description is published MUST be served with a Content-Type header whose media type matches the RDF serialization of the response body.

Recognized RDF media types include application/ld+json for [JSON-LD], text/turtle for [Turtle], application/n-triples for [N-TRIPLES] and application/rdf+xml for RDF/XML. When the dataset description is embedded in an HTML page (see § 5.1 Available in RDF), text/html is acceptable.

5.1.2. Durable identifiers

Consumers want to refer to datasets. They prefer to do so by linking to them.

Therefore, publishers MUST maintain a permanent and unique identifier for each dataset. Publishers MUST use HTTP IRIs as identifiers.

See also Data on the Web Best Practices Use Cases & Requirements § R-UniqueIdentifier and Data on the Web Best Practices Use Cases & Requirements § R-PersistentIdentification.

5.1.3. Resolvable dataset IRIs

Consumers want to look up a dataset by its IRI. When the dataset IRI resolves, consumers can retrieve both the machine-readable dataset description (via content negotiation) and a human-readable HTML page without needing a separate landing page URL.

Therefore, publishers SHOULD ensure that the dataset IRI resolves and serves both an RDF representation (the dataset description) and an HTML representation. The HTML representation MUST be consistent with and include at least all details (such as distributions) from the RDF representation.

When the dataset IRI resolves to an HTML page, a separate schema:mainEntityOfPage or dcat:landingPage is not needed (see § 5.2.5 More information).

5.1.4. Information remains available

Datasets will be used by all kinds of consumers and their systems. For stability, users must be able to trust that the datasets will remain available so they can be consulted in the future.

Therefore, publishers MUST ensure information remains available in the future.

5.2. Dataset information

Consumers want to consult information about the dataset to decide whether and how they want to use its data. This information answers user questions such as:

5.2.1. Basic information

Publishers MUST include basic information about the dataset, at the very minimum its HTTP [IRI] and name.

Basic dataset information:
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "@id": "http://data.bibliotheken.nl/doc/dataset/rise-alba",
  "name": [
    {
      "@value": "Alba amicorum van de Koninklijke Bibliotheek",
      "@language": "nl"
    },
    {
      "@value": "Alba amicorum of the Dutch Royal Library",
      "@language": "en"
    }
  ]
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/"
  },
  "@type": "dcat:Dataset",
  "@id": "http://data.bibliotheken.nl/doc/dataset/rise-alba",
  "dct:title": [
    {
      "@value": "Alba amicorum van de Koninklijke Bibliotheek",
      "@language": "nl"
    },
    {
      "@value": "Alba amicorum of the Dutch Royal Library",
      "@language": "en"
    }
  ]
}

5.2.2. License

License applicable to the dataset. This license is inherited by all distributions that do not specify their own license. Publishers MUST make known under which license the dataset may be used.

This license specifies the conditions under which the metadata records in the dataset may be accessed and reused. It does not cover the heritage objects (either physical or digital) that the metadata describes. Access conditions for these objects should be specified in their own descriptions within the dataset.

The DERA requires metadata to be published openly, so this value SHOULD be an open license that allows consumers to reuse the data, such as http://creativecommons.org/publicdomain/zero/1.0/ (CC0), http://creativecommons.org/licenses/by/4.0/ (CC BY 4.0), or http://creativecommons.org/licenses/by-sa/4.0/ (CC BY-SA 4.0). Adopting a non-open license will severely limit reuse and does not comply with the DERA principles.

The value MUST be the canonical URI of a license. For example, use http://creativecommons.org/publicdomain/zero/1.0/ instead of http://creativecommons.org/publicdomain/zero/1.0/deed.nl.

Specify a license for the dataset. In DCAT-AP-NL 3.0, the license belongs to each distribution rather than to the dataset:
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "license": "http://creativecommons.org/publicdomain/zero/1.0/"
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/"
  },
  "@type": "dcat:Dataset",
  "dcat:distribution": {
    "@type": "dcat:Distribution",
    "dct:license": {
      "@id": "http://creativecommons.org/publicdomain/zero/1.0/"
    }
  }
}

DCAT-AP-NL 3.0 [DCAT-AP-NL] requires the use of Creative Commons licences and defines a value list for licences. The default SHOULD be CC0 (http://creativecommons.org/publicdomain/zero/1.0/). The following table lists the recommended canonical license IRIs. Creative Commons IRIs MUST end with a trailing slash. They MAY use http:// or https://; the Register stores them as http://, the canonical form in Creative Commons’ own RDF.

Canonical IRI
http://creativecommons.org/publicdomain/zero/1.0/
http://creativecommons.org/publicdomain/mark/1.0/
http://creativecommons.org/licenses/by/4.0/
http://creativecommons.org/licenses/by-sa/4.0/
http://creativecommons.org/licenses/by-nc/4.0/
http://creativecommons.org/licenses/by-nc-sa/4.0/
http://creativecommons.org/licenses/by-nd/4.0/
http://creativecommons.org/licenses/by-nc-nd/4.0/
In v2.0 of this specification, the license MUST be one of the IRIs listed above, or its https:// form.

See also Data on the Web Best Practices Use Cases & Requirements § R-LicenseAvailable.

5.2.3. Creation, publication and modification dates

Publishers SHOULD make known when the dataset description was originally created, published and when it was last updated. The dates MUST be valid according to [ISO8601].

Specify dataset description dates:
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "dateCreated": "2019-04-14",
  "datePublished": "2019-05-21",
  "dateModified": "2019-08-15"
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "xsd": "http://www.w3.org/2001/XMLSchema#"
  },
  "@type": "dcat:Dataset",
  "dct:created": { "@value": "2019-04-14", "@type": "xsd:date" },
  "dct:issued": { "@value": "2019-05-21", "@type": "xsd:date" },
  "dct:modified": { "@value": "2019-08-15", "@type": "xsd:date" }
}

5.2.4. Versions

A dataset description may change over time. Consumers, such as researchers, may want to determine which information was valid at a certain moment.

Therefore, publishers SHOULD not only publish the current version of the dataset description, but keep historical versions accessible to users.

It is up to the publisher to determine when to publish new versions.

See also Data on the Web Best Practices § dataVersioning.

5.2.5. More information

If more information is available, publishers SHOULD add it.

More information about the dataset.
{  "@context": "https://schema.org/",  "@type": "Dataset",  "description": {    "@value": "Alba amicorum van de Koninklijke Bibliotheek, een dataset gedefinieerd voor het Europeana Rise of Literacy project.",    "@language": "nl"  },  "mainEntityOfPage": "https://www.kb.nl/bronnen-zoekwijzers/kb-collecties/moderne-handschriften-vanaf-ca-1550/alba-amicorum"}
{  "@context": {    "dcat": "http://www.w3.org/ns/dcat#",    "dct": "http://purl.org/dc/terms/"  },  "@type": "dcat:Dataset",  "dct:description": {    "@value": "Alba amicorum van de Koninklijke Bibliotheek, een dataset gedefinieerd voor het Europeana Rise of Literacy project.",    "@language": "nl"  },  "dcat:landingPage": {    "@id": "https://www.kb.nl/bronnen-zoekwijzers/kb-collecties/moderne-handschriften-vanaf-ca-1550/alba-amicorum"  }}

See § 5.6.1 Dataset attributes for an overview of attributes.

5.3. Creator/publisher information

Users want to know where the dataset came from (provenance). The dataset’s creator and/or publisher is either a person or an organization. Providing information about the person/organization behind the dataset answers user questions such as:

Therefore, publishers MUST publish basic information about the person/organization. At the least, the organization’s name and HTTP IRI must be provided. The organization’s name SHOULD be a language-tagged string.

An organization description:
{
  "@context": "https://schema.org/",
  "@type": "Organization",
  "@id": "http://www.wikidata.org/entity/Q1526131",
  "name": {
    "@value": "Koninklijke Bibliotheek",
    "@language": "nl"
  },
  "alternateName": {
    "@value": "KB",
    "@language": "nl"
  }
}
{
  "@context": {
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@type": "foaf:Organization",
  "@id": "http://www.wikidata.org/entity/Q1526131",
  "foaf:name": {
    "@value": "Koninklijke Bibliotheek",
    "@language": "nl"
  },
  "foaf:nick": {
    "@value": "KB",
    "@language": "nl"
  }
}

See § 5.6.2 Organization attributes for a full overview of organization attributes.

A person description:
{
  "@context": "https://schema.org/",
  "@type": "Person",
  "@id": "https://example.com",
  "name": {
    "@value": "Jan Jansen",
    "@language": "nl"
  }
}
{
  "@context": {
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@type": "foaf:Person",
  "@id": "https://example.com",
  "foaf:name": {
    "@value": "Jan Jansen",
    "@language": "nl"
  }
}

5.3.1. Organization IRI

Consumers use the organization’s IRI to tell which datasets come from the same organization. That only works if a publisher uses one IRI for itself across all its dataset descriptions, and if no two organizations share an IRI. A URL of a collection website, a software supplier’s server or a web page about the organization may resolve, but it identifies that website, server or page, not the organization.

Therefore, the organization’s HTTP IRI MUST identify the organization itself. Publishers SHOULD use the same IRI in all their dataset descriptions, keep it stable over time, and make sure it resolves.

Publishers SHOULD use one of:

The organization’s IRI MUST NOT be:

The validator warns about known software supplier addresses and Wikidata web pages. Publishers MAY link to other identifiers of the organization, such as its Wikidata entity, with schema:sameAs or owl:sameAs.

5.3.2. ISIL identifier

Publishers SHOULD include the organization’s ISIL code.

An organization with an ISIL code:
{
  "@context": "https://schema.org/",
  "@type": "Organization",
  "@id": "http://www.wikidata.org/entity/Q1526131",
  "identifier": "NL-HaKB"
}
{
  "@context": {
    "dct": "http://purl.org/dc/terms/",
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@type": "foaf:Organization",
  "@id": "http://www.wikidata.org/entity/Q1526131",
  "dct:identifier": "NL-HaKB"
}

5.3.3. Contact information

Publishers SHOULD include contact information so consumers can reach them with questions or feedback. If contact information is provided, it MUST include a name and e-mail address. The e-mail address SHOULD be an organizational or departmental address rather than a personal one for GDPR compliance.

In Schema.org, the contact point belongs to the publisher (schema:contactPoint). In DCAT-AP-NL 3.0, it belongs to the dataset or catalog (dcat:contactPoint), and the e-mail address is a mailto: IRI.

A dataset with contact information.
{  "@context": "https://schema.org/",  "@type": "Dataset",  "publisher": {    "@type": "Organization",    "@id": "http://www.wikidata.org/entity/Q1526131",    "name": "Koninklijke Bibliotheek",    "alternateName": "KB",    "contactPoint": {      "@type": "ContactPoint",      "name": {        "@value": "Datasets Department",        "@language": "en"      },      "email": "datasets@kb.nl",      "telephone": "+31 6 12345678"    }  }}
{  "@context": {    "dcat": "http://www.w3.org/ns/dcat#",    "vcard": "http://www.w3.org/2006/vcard/ns#"  },  "@type": "dcat:Dataset",  "dcat:contactPoint": {    "@type": "vcard:Kind",    "vcard:fn": {      "@value": "Datasets Department",      "@language": "en"    },    "vcard:hasEmail": {      "@id": "mailto:datasets@kb.nl"    }  }}

5.3.4. Dataset publisher

The person/organization data is then included as the dataset’s publisher:

A dataset with an organization as publisher.
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "publisher": {
    "@type": "Organization",
    "@id": "http://www.wikidata.org/entity/Q1526131",
    "identifier": "NL-HaKB",
    "name": {
      "@value": "Koninklijke Bibliotheek",
      "@language": "nl"
    },
    "alternateName": {
      "@value": "KB",
      "@language": "nl"
    },
    "contactPoint": {
      "@type": "ContactPoint",
      "name": {
        "@value": "Datasets Department",
        "@language": "en"
      },
      "email": "datasets@kb.nl",
      "telephone": "+31 6 12345678"
    }
  }
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "foaf": "http://xmlns.com/foaf/0.1/",
    "vcard": "http://www.w3.org/2006/vcard/ns#"
  },
  "@type": "dcat:Dataset",
  "dct:publisher": {
    "@type": "foaf:Organization",
    "@id": "http://www.wikidata.org/entity/Q1526131",
    "dct:identifier": "NL-HaKB",
    "foaf:name": {
      "@value": "Koninklijke Bibliotheek",
      "@language": "nl"
    },
    "foaf:nick": {
      "@value": "KB",
      "@language": "nl"
    }
  },
  "dcat:contactPoint": {
    "@type": "vcard:Kind",
    "vcard:fn": {
      "@value": "Datasets Department",
      "@language": "en"
    },
    "vcard:hasEmail": {
      "@id": "mailto:datasets@kb.nl"
    }
  }
}
A dataset with a person as publisher.
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "publisher": {
    "@type": "Person",
    "@id": "https://example.com",
    "name": {
      "@value": "Jan Jansen",
      "@language": "nl"
    }
  }
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@type": "dcat:Dataset",
  "dct:publisher": {
    "@type": "foaf:Person",
    "@id": "https://example.com",
    "foaf:name": {
      "@value": "Jan Jansen",
      "@language": "nl"
    }
  }
}

5.4. Distributions

Consumers that are interested in a dataset should be able to access the data in it. Distributions tell consumers where and how they can get the data.

Therefore, publishers SHOULD add at least one distribution. Each distribution MUST have at least a MIME format and the URL where the distribution can be directly accessed.

Examples of distributions are data dumps in one or more RDF serializations, such as JSON-LD and Turtle, CSV files, SPARQL endpoints, OAI-PMH endpoints or other web APIs. All distributions of a dataset MUST contain broadly the same data.

The URL of the distribution itself – the data file, or the endpoint of the web API – goes in schema:contentUrl (Schema.org) or dcat:accessURL (DCAT-AP-NL 3.0). For a download, DCAT-AP-NL 3.0 also puts the file URL in dcat:downloadURL. If a documentation page describes or provides access to the distribution alongside it – for example a SPARQL query editor for the endpoint, or a download landing page – add it on the distribution with schema:documentation or foaf:page.

The format of the distribution goes in schema:encodingFormat or dcat:mediaType. A web API identifies its protocol instead (see § 5.4.2 Usage information): in Schema.org with schema:usageInfo; in DCAT-AP-NL 3.0 with dct:conformsTo, next to a dct:format from the EU file type list.

A minimal definition of a SPARQL endpoint distribution. In the Schema.org vocabulary, each type of distribution is called a DataDownload, even if it is a query endpoint.
{
  "@context": "https://schema.org/",
  "@type": "DataDownload",
  "contentUrl": "http://vocab.getty.edu/sparql",
  "usageInfo": "https://www.w3.org/TR/sparql11-protocol/"
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/"
  },
  "@type": "dcat:Distribution",
  "dcat:accessURL": { "@id": "http://vocab.getty.edu/sparql" },
  "dct:conformsTo": { "@id": "https://www.w3.org/TR/sparql11-protocol/" },
  "dct:format": { "@id": "http://publications.europa.eu/resource/authority/file-type/SPARQLQ" },
  "dct:license": { "@id": "http://creativecommons.org/publicdomain/zero/1.0/" }
}

The distributions are then included under the schema:distribution or dcat:distribution attribute with the dataset.

A dataset with one SPARQL and two download distributions. The SPARQL endpoint separates the endpoint URL (schema:contentUrl or dcat:accessURL) from its query UI (schema:documentation or foaf:page).
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "distribution": [
    {
      "@type": "DataDownload",
      "contentUrl": "https://service.archief.nl/sparql",
      "documentation": "https://www.nationaalarchief.nl/onderzoeken/sparql",
      "usageInfo": "https://www.w3.org/TR/sparql11-protocol/"
    },
    {
      "@type": "DataDownload",
      "encodingFormat": "application/ld+json",
      "contentUrl": "http://data.bibliotheken.nl/id/dataset/rise-alba.json"
    },
    {
      "@type": "DataDownload",
      "encodingFormat": "text/csv+gzip",
      "contentUrl": "https://example.com/data.csv.gz"
    }
  ]
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@type": "dcat:Dataset",
  "dcat:distribution": [
    {
      "@type": "dcat:Distribution",
      "dcat:accessURL": { "@id": "https://service.archief.nl/sparql" },
      "foaf:page": { "@id": "https://www.nationaalarchief.nl/onderzoeken/sparql" },
      "dct:conformsTo": { "@id": "https://www.w3.org/TR/sparql11-protocol/" },
      "dct:format": { "@id": "http://publications.europa.eu/resource/authority/file-type/SPARQLQ" },
      "dct:license": { "@id": "http://creativecommons.org/publicdomain/zero/1.0/" }
    },
    {
      "@type": "dcat:Distribution",
      "dcat:mediaType": { "@id": "https://www.iana.org/assignments/media-types/application/ld+json" },
      "dcat:accessURL": { "@id": "http://data.bibliotheken.nl/id/dataset/rise-alba.json" },
      "dcat:downloadURL": { "@id": "http://data.bibliotheken.nl/id/dataset/rise-alba.json" },
      "dct:license": { "@id": "http://creativecommons.org/publicdomain/zero/1.0/" }
    },
    {
      "@type": "dcat:Distribution",
      "dcat:mediaType": { "@id": "https://www.iana.org/assignments/media-types/text/csv" },
      "dcat:compressFormat": { "@id": "https://www.iana.org/assignments/media-types/application/gzip" },
      "dcat:accessURL": { "@id": "https://example.com/data.csv.gz" },
      "dcat:downloadURL": { "@id": "https://example.com/data.csv.gz" },
      "dct:license": { "@id": "http://creativecommons.org/publicdomain/zero/1.0/" }
    }
  ]
}

See § 5.6.4 Distribution attributes for a full overview.

In v2.0 of this specification, schema:contentUrl MUST be an IRI. String and xsd:anyURI literals will no longer be accepted. Versions up to 1.15.1 of this specification said the reverse here – that contentUrl must become an xsd:anyURI literal – which was a mistake. A contentUrl written as a JSON string in JSON-LD with the Schema.org context, as in the example above, is read as an IRI and stays valid. In DCAT-AP-NL 3.0, write dcat:accessURL and dcat:downloadURL as IRIs, with @id in JSON-LD.

5.4.1. Creation and modification dates

Publishers SHOULD make known when the distribution was first published and when it was last updated, so consumers can efficiently stay up-to-date with the latest changes. Please note that this is different from the dataset description’s dates. Datetimes (2019-08-15T08:05:00Z) are preferred because they offer greater precision, but simple dates (2019-04-14) are also allowed.

Specify distribution dates:
{
  "@context": "https://schema.org/",
  "@type": "DataDownload",
  "datePublished": "2019-04-14",
  "dateModified": "2019-08-15T08:05:00"
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "xsd": "http://www.w3.org/2001/XMLSchema#"
  },
  "@type": "dcat:Distribution",
  "dct:issued": { "@value": "2019-04-14", "@type": "xsd:date" },
  "dct:modified": { "@value": "2019-08-15T08:05:00", "@type": "xsd:dateTime" }
}

5.4.2. Usage information

Each distribution SHOULD include one or more schema:usageInfo (Schema.org) or dct:conformsTo (DCAT-AP-NL 3.0) IRIs that describe what the distribution provides.

For web APIs, this MUST be the IRI of the protocol specification (such as SPARQL or OAI-PMH). The Dataset Register uses this IRI to identify the distribution as an API.

For downloads as well as APIs, this MUST be the IRI of the application profile(s) that the data conforms to.

Recommended IRIs for typing distributions
Item Type Applies to IRI
GraphQL Protocol API https://spec.graphql.org/
IIIF Change Discovery Protocol API https://iiif.io/api/discovery/1.0/
LDES Protocol API https://w3id.org/ldes/specification
Linked Art Application profile API, download https://linked.art/model/
Linked Art Search Protocol API https://linked.art/api/1.0/search/
OAI-PMH Protocol API http://www.openarchives.org/pmh/
OpenAPI REST Protocol API https://spec.openapis.org/oas/v3.2.0.html
[SCHEMA-AP-NDE] Application profile API, download https://docs.nde.nl/schema-profile/
SPARQL Protocol API https://www.w3.org/TR/sparql11-protocol/
TPF Protocol API https://linkeddatafragments.org/specification/triple-pattern-fragments/
WMS Protocol API https://www.ogc.org/standards/wms/
A download distribution that conforms to [SCHEMA-AP-NDE]:
{
  "@context": "https://schema.org/",
  "@type": "DataDownload",
  "encodingFormat": "application/ld+json",
  "contentUrl": "https://example.com/data.jsonld",
  "usageInfo": "https://docs.nde.nl/schema-profile/"
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/"
  },
  "@type": "dcat:Distribution",
  "dcat:mediaType": { "@id": "https://www.iana.org/assignments/media-types/application/ld+json" },
  "dcat:accessURL": { "@id": "https://example.com/data.jsonld" },
  "dcat:downloadURL": { "@id": "https://example.com/data.jsonld" },
  "dct:conformsTo": { "@id": "https://docs.nde.nl/schema-profile/" }
}
A SPARQL distribution that returns RDF conforming to [SCHEMA-AP-NDE]:
{
  "@context": "https://schema.org/",
  "@type": "DataDownload",
  "contentUrl": "https://example.com/sparql",
  "usageInfo": [ "https://www.w3.org/TR/sparql11-protocol/", "https://docs.nde.nl/schema-profile/" ]
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/"
  },
  "@type": "dcat:Distribution",
  "dcat:accessURL": { "@id": "https://example.com/sparql" },
  "dct:format": { "@id": "http://publications.europa.eu/resource/authority/file-type/SPARQLQ" },
  "dct:conformsTo": [
    { "@id": "https://www.w3.org/TR/sparql11-protocol/" },
    { "@id": "https://docs.nde.nl/schema-profile/" }
  ]
}

See also Data on the Web Best Practices Use Cases & Requirements § R-APIDocumented.

5.5. Data catalog

A data catalog provides consumers with a complete overview of available dataset descriptions, which improves discoverability.

Therefore, publishers SHOULD provide a catalog.

A catalog of available datasets:
{
  "@context": "https://schema.org/",
  "@type": "DataCatalog",
  "@id": "http://data.bibliotheken.nl/id/datacatalog",
  "name": {
    "@value": "Linked Data van de KB",
    "@language": "nl"
  },
  "description": {
    "@value": "Alle linked data zoals beschikbaar gesteld door de Koninklijke Bibliotheek.",
    "@language": "nl"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "http://www.wikidata.org/entity/Q1526131",
    "name": {
      "@value": "Koninklijke Bibliotheek",
      "@language": "nl"
    }
  },
  "dataset": [
    {
      "@type": "Dataset",
      "@id": "http://data.bibliotheken.nl/id/dataset/rise-alba",
      ...
    },
    {
      ...
    }
  ]
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "foaf": "http://xmlns.com/foaf/0.1/",
    "vcard": "http://www.w3.org/2006/vcard/ns#"
  },
  "@type": "dcat:Catalog",
  "@id": "http://data.bibliotheken.nl/id/datacatalog",
  "dct:title": {
    "@value": "Linked Data van de KB",
    "@language": "nl"
  },
  "dct:description": {
    "@value": "Alle linked data zoals beschikbaar gesteld door de Koninklijke Bibliotheek.",
    "@language": "nl"
  },
  "dct:publisher": {
    "@type": "foaf:Organization",
    "@id": "http://www.wikidata.org/entity/Q1526131",
    "foaf:name": {
      "@value": "Koninklijke Bibliotheek",
      "@language": "nl"
    }
  },
  "dcat:contactPoint": {
    "@type": "vcard:Kind",
    "vcard:fn": {
      "@value": "Datasets Department",
      "@language": "en"
    },
    "vcard:hasEmail": { "@id": "mailto:datasets@kb.nl" }
  },
  "dcat:dataset": [
    {
      "@type": "dcat:Dataset",
      "@id": "http://data.bibliotheken.nl/id/dataset/rise-alba",
      ...
    },
    {
      ...
    }
  ]
}

See § 5.6.5 DataCatalog attributes for a full overview of catalog attributes.

5.5.1. Pagination

Large data catalogs may be harder to process for clients.

Therefore, publishers SHOULD split large data catalogs in parts of at most a 1000 datasets, using the Hydra Core Vocabulary.

Each page MUST be a complete RDF document in itself. Related resources, such as the publishing organization, must be described on each page, even if that resource is the same on all pages.

A paginated catalog:
{  "@context": [    "https://schema.org/",    {"hydra": "http://www.w3.org/ns/hydra/core#"}  ],  "@type": ["DataCatalog", "hydra:Collection"],  "@id": "https://example.com/catalog",  "name": {    "@value": "Paginated catalog of datasets",    "@language": "en"  },  "description": {    "@value": "This catalog is paginated using the Hydra Core Vocabulary.",    "@language": "en"  },  "publisher": {    "@type": "Organization",    "@id": "/publisher",    "name": {      "@value": "Example Publisher",      "@language": "en"    }  },  "hydra:view": {    "@id": "/catalog?page=1",    "@type": "hydra:PartialCollectionView",    "hydra:first": {"@id": "/catalog?page=1"},    "hydra:next": {"@id": "/catalog?page=2"},    "hydra:last": {"@id": "/catalog?page=498"}  },  "dataset": [    {      "@type": "Dataset",      "@id": "https://example.com/dataset/1",      ...    },    {      "@type": "Dataset",      "@id": "https://example.com/dataset/2",      ...    },    ...  ]}
{  "@context": {    "dcat": "http://www.w3.org/ns/dcat#",    "dct": "http://purl.org/dc/terms/",    "foaf": "http://xmlns.com/foaf/0.1/",    "hydra": "http://www.w3.org/ns/hydra/core#"  },  "@type": ["dcat:Catalog", "hydra:Collection"],  "@id": "https://example.com/catalog",  "dct:title": {    "@value": "Paginated catalog of datasets",    "@language": "en"  },  "dct:description": {    "@value": "This catalog is paginated using the Hydra Core Vocabulary.",    "@language": "en"  },  "dct:publisher": {    "@type": "foaf:Organization",    "@id": "https://example.com/publisher",    "foaf:name": {      "@value": "Example Publisher",      "@language": "en"    }  },  "hydra:view": {    "@id": "/catalog?page=1",    "@type": "hydra:PartialCollectionView",    "hydra:first": {"@id": "/catalog?page=1"},    "hydra:next": {"@id": "/catalog?page=2"},    "hydra:last": {"@id": "/catalog?page=498"}  },  "dcat:dataset": [    {      "@type": "dcat:Dataset",      "@id": "https://example.com/dataset/1",      ...    },    {      "@type": "dcat:Dataset",      "@id": "https://example.com/dataset/2",      ...    },    ...  ]}

5.6. Overview of attributes

This is an overview of required and recommended attributes.

5.6.1. Dataset attributes

schema:Dataset properties
Property Description Cardinality Usage
@id The HTTP [IRI] of the Dataset. 1 Required
schema:name A name given to the dataset. See § 5.2.1 Basic information. 1..n Required
v2.0: must be rdf:langString
schema:description A description of the contents of the dataset. Preferably at least three sentences and at most one paragraph (2,000 characters). The discoverability of the dataset depends in part on the quality of the description. Consider different audiences – both domain experts and others – for whom the text should be understandable. See § 5.2.1 Basic information. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required; must be rdf:langString
schema:publisher An entity (organisation or person) responsible for making the Dataset available. See § 5.3 Creator/publisher information. 1 Required
schema:license License applicable to the dataset. This license is inherited by all distributions that do not specify their own license. Publishers MUST make known under which license the dataset may be used.

This license specifies the conditions under which the metadata records in the dataset may be accessed and reused. It does not cover the heritage objects (either physical or digital) that the metadata describes. Access conditions for these objects should be specified in their own descriptions within the dataset.

The [DERA] requires metadata to be published openly, so this value SHOULD be an open license that allows consumers to reuse the data, such as http://creativecommons.org/publicdomain/zero/1.0/ (CC0), http://creativecommons.org/licenses/by/4.0/ (CC BY 4.0), or http://creativecommons.org/licenses/by-sa/4.0/ (CC BY-SA 4.0). Adopting a non-open license will severely limit reuse and does not comply with the [DERA] principles.

The value MUST be the canonical URI of a license. For example, use http://creativecommons.org/publicdomain/zero/1.0/ instead of http://creativecommons.org/publicdomain/zero/1.0/deed.nl. See § 5.2.2 License.

1 Required
v2.0: must be IRI
schema:distribution Distributions through which the dataset can be retrieved, such as as a download or via an API. See § 5.4 Distributions. 0..n Recommended
schema:creator An entity (organisation or person) responsible for producing the dataset. See § 5.3 Creator/publisher information. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required
schema:datePublished The date of formal issuance (such as publication) of the dataset. See § 5.2.3 Creation, publication and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
schema:dateCreated The date on which the dataset was created. See § 5.2.3 Creation, publication and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
schema:dateModified The most recent date on which the dataset was changed or modified. See § 5.2.3 Creation, publication and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
schema:version Version identifier of the dataset, such as a semantic version number or a date. See § 5.2.4 Versions. 0..1 Recommended
schema:inLanguage The natural language of the textual values within the dataset – that is, of the metadata records themselves (titles, descriptions, and so on). Use a [BCP47] language code, such as nl or en. 0..n Recommended
v2.0: must match ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]+)*$
schema:mainEntityOfPage A web page that provides access to the Dataset, its Distributions and/or additional information. Not needed when the dataset URI itself resolves to an HTML page. The human-readable description MUST be consistent with and include at least all details (such as distributions) from the RDF dataset description. See § 5.1.3 Resolvable dataset IRIs. 0..n Recommended
schema:isBasedOn The URI of a dataset this dataset is based on (previously schema:isBasedOnUrl). 0..n Recommended
schema:citation A citation or reference for the dataset. 0..n Recommended
schema:genre schema:genre is deprecated. Use schema:about with a URI (e.g. from AAT or GTAA via the Network of Terms) for both subject and material type. 0 Discouraged
v2.0: no longer allowed
schema:about The subject matter of the dataset, covering both topical themes (such as ‘post-war reconstruction’ or ‘colonial history’) and material types (such as ‘photographs’ or ‘architectural drawings’). Use a URI from a controlled vocabulary (e.g. AAT, GTAA, or Brinkman via the Network of Terms). 0..n Recommended
schema:spatialCoverage The geographical area to which the data in the dataset pertains. Use a URI from a controlled vocabulary such as GeoNames via the Network of Terms. Provide only the most specific (lowest) level, for example the URI for Roermond and not the one for Limburg or the Netherlands. Broader areas can be derived from the term’s hierarchical relations. 0..n Recommended
v2.0: must be IRI
schema:temporalCoverage The time period to which the dataset pertains. The value must be an ISO 8601 date or time interval (such as ‘2011’, ‘2011/2012’, ‘1889-06/07’ for shortened notation, ‘-0431/-0404’ or ‘-13000/-10000’ for BCE dates, or ‘1440/..’ for an open-ended range), or an HTTP(S) URI. 0..n Recommended
v2.0: becomes required
schema:hasPart Indicates a dataset that is part of this dataset and also available as a separate dataset. 0..n Recommended
schema:includedInDataCatalog The HTTP [IRI](s) of the data catalog(s) that the dataset belongs to. 0..n Recommended
v2.0: must be IRI
dct:accrualPeriodicity How often the dataset is updated. Use a value from the EU frequency list, for example http://publications.europa.eu/resource/authority/frequency/WEEKLY . 0..1 Recommended
dct:accessRights Information about who can access the dataset. Use a value from the EU Access Rights vocabulary. Defaults to PUBLIC if not provided. 0..1 Recommended
dcat:Dataset properties
Property Description Cardinality Usage
@id The HTTP [IRI] of the Dataset. 1 Required
dct:title A name given to the dataset. See § 5.2.1 Basic information. 1..n Required
v2.0: must be rdf:langString
dct:description A description of the contents of the dataset. Preferably at least three sentences and at most one paragraph (2,000 characters). The discoverability of the dataset depends in part on the quality of the description. Consider different audiences – both domain experts and others – for whom the text should be understandable. See § 5.2.1 Basic information. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required; must be rdf:langString
dct:created The date on which the dataset was created. See § 5.2.3 Creation, publication and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
dct:issued The date of formal issuance (such as publication) of the dataset. See § 5.2.3 Creation, publication and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
dct:modified The most recent date on which the dataset was changed or modified. See § 5.2.3 Creation, publication and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
dct:spatial The geographical area to which the data in the dataset pertains. Use a URI from a controlled vocabulary such as GeoNames. Find place URIs via the Network of Terms. 0..n Recommended
v2.0: must be IRI
dct:temporal The time period to which the dataset pertains. The value must be an ISO 8601 date or time interval (such as ‘2011’, ‘2011/2012’, ‘1889-06/07’ for shortened notation, ‘-0431/-0404’ for BCE dates, or ‘1440/..’ for an open-ended range), or an HTTP(S) URI. 0..n Recommended
v2.0: must be valid ISO 8601 or IRI
dct:language The natural language of the textual values in the dataset. Use a value from the EU Vocabularies Languages Named Authority List. 0..n Recommended
v2.0: must match ^http://publications\.europa\.eu/resource/authority/language/
dct:publisher An entity (organisation or person) responsible for making the Dataset available. See § 5.3 Creator/publisher information. 0..1
v2.0: 1
Recommended
v2.0: becomes required
dct:creator An entity (organisation or person) responsible for producing the dataset. See § 5.3 Creator/publisher information. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required
dcat:contactPoint Contact information where end users can get in touch with questions about the dataset. This contains the e-mail address or a link (URL) to the contact form of the responsible organization. The e-mail address should be a functional e-mail address of the organization or department. See § 5.3.3 Contact information. 0..1
v2.0: 1
Recommended
v2.0: becomes required
dcat:theme The category of the dataset. Use at least one value from the European Dataset Theme Vocabulary. It is recommended to also include values from domain-specific vocabularies. The default theme ‘Education, culture and sport’ (data-theme/EDUC) is auto-assigned. 0..n Recommended
dcat:distribution An available representation of the dataset. See § 5.4 Distributions. 0..n Recommended
dct:accrualPeriodicity How often the dataset is updated. Use a value from the EU frequency list, for example http://publications.europa.eu/resource/authority/frequency/WEEKLY . 0..1 Recommended
dct:accessRights Information about who can access the dataset. Use a value from the EU Access Rights vocabulary. Defaults to PUBLIC if not provided. 0..1 Recommended
dcat:landingPage A web page that provides access to the Dataset, its Distributions and/or additional information. Not needed when the dataset URI itself resolves to an HTML page. The human-readable description MUST be consistent with and include at least all details (such as distributions) from the RDF dataset description. See § 5.1.3 Resolvable dataset IRIs. 0..n Recommended
dct:source The URI of a dataset this dataset is based on. 0..n Recommended

5.6.2. Organization attributes

schema:Organization properties
Property Description Cardinality Usage
@id The HTTP [IRI] of the Organization. 1 Required
schema:name The full name of the publisher or creator. 1..n Required
v2.0: must be rdf:langString
schema:alternateName Alternative names such as an abbreviation that the organization is known under. 0..n Recommended
v2.0: must be rdf:langString
schema:identifier Identifier(s) of the organization, at least its ISIL code. 0..n Recommended
schema:sameAs Links to the organization in other databases. 0..n Recommended
schema:contactPoint Contact information where end users can get in touch with questions about the dataset. Preferably use the details of the department that manages the dataset or catalogue, rather than an individual employee. See § 5.3.3 Contact information. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required
foaf:Organization properties
Property Description Cardinality Usage
@id The HTTP [IRI] of the Organization. 1 Required
foaf:name The name of the publisher or creator. 1..n Required
v2.0: must be rdf:langString
foaf:nick Alternative names such as an abbreviation that the organization is known under. 0..n Recommended
dct:identifier Identifier(s) of the organization, at least its ISIL code. 0..n Recommended
owl:sameAs Links to the organization in other databases. 0..n Recommended

5.6.3. Contact point attributes

schema:ContactPoint properties
Property Description Cardinality Usage
schema:name Name of the contact point, preferably a department (“Datasets department”) rather than an individual employee. Tag the value with a language so that a multilingual department name or a non-Latin personal name can be shown in the appropriate language. 1..n Required
v2.0: must be rdf:langString
schema:email The email address of the contact point, preferably a functional address of the organization or department. 1..n Required
vcard:Kind properties
Property Description Cardinality Usage
vcard:fn Name of the contact point, preferably a department (“Datasets department”) rather than an individual employee. 1..n Required
vcard:hasEmail The email address of the contact point as a mailto: URL, preferably a functional address of the organization or department. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required; must be IRI

5.6.4. Distribution attributes

schema:DataDownload properties
Property Description Cardinality Usage
schema:contentUrl The URL that provides direct access to the distribution itself: the data file or the web API endpoint. Use schema:documentation if there is also a documentation page that describes or provides access to the distribution (such as a SPARQL UI or a download landing page). 1 Required
v2.0: must be IRI
schema:encodingFormat The media type of the downloadable file. Use a value from the [IANA-MEDIA-TYPES] list. The value should indicate the media type of the response of schema:contentUrl when no Accept header is included in the request. When the distribution is compressed, the compression format (such as zip, gzip) must be included (such as text/turtle+gzip). 0..1 Required: schema:encodingFormat or schema:usageInfo
v2.0: max 1
schema:description Distribution description 0..n Recommended
schema:datePublished The date of formal issuance (such as publication) of the distribution. See § 5.4.1 Creation and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
schema:dateModified The most recent date on which the distribution was changed or modified. See § 5.4.1 Creation and modification dates. 0..1 Recommended
v2.0: must be valid ISO 8601
schema:inLanguage Language or languages in which the distribution is available. Use a [BCP47] language code, such as nl. 0..n Recommended
v2.0: must match ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]+)*$
schema:license License applicable to this distribution, overriding the parent dataset’s license. Optional; only set this when the distribution carries a different license from the dataset. See § 5.2.2 License. 0..1 Recommended
v2.0: must be IRI
schema:contentSize Distribution file size in bytes. 0..1 Recommended
schema:usageInfo A link to the documentation: for downloads, the application profile, vocabulary or ontology; for web APIs (such as SPARQL or OAI-PMH), the protocol specification. It lets consumers tell a full data dump from an API that exposes only part of the data. See § 5.4.2 Usage information. 0..n Required: schema:encodingFormat or schema:usageInfo
v2.0: must be IRI
schema:documentation A documentation page that describes or provides access to this distribution, such as a SPARQL UI or a download landing page. schema:contentUrl points to the distribution itself (the data file or the API endpoint). 0..n Recommended
dcat:Distribution properties
Property Description Cardinality Usage
dcat:mediaType The media type of the distribution according to the IANA classification. 0..1 Required: dcat:mediaType or dct:format
dcat:accessURL The URL that provides access to a distribution of the dataset. 0..1 Required: dcat:accessURL or dcat:downloadURL
dcat:downloadURL The URL of the downloadable file in a specific format. 0..1 Required: dcat:accessURL or dcat:downloadURL
dcat:compressFormat The compression format of the distribution, as a media type from the [IANA-MEDIA-TYPES] list (such as application/gzip). This is the usual way to declare compression in DCAT; a suffix on dcat:mediaType (such as text/turtle+gzip) is accepted as well. If both are given, dcat:compressFormat takes precedence. A value that is not a media type (such as gzip rather than application/gzip) is not recorded. 0..n Recommended
dct:conformsTo Standards or specifications the distribution conforms to. For SPARQL endpoints, this must include the SPARQL protocol URI. See § 5.4.2 Usage information. 0..n Recommended
dct:title The name of the distribution. 0..n Recommended
dct:description Distribution description 0..n Recommended
dct:issued The date of formal issuance (such as publication) of the distribution. See § 5.4.1 Creation and modification dates. 0..n Recommended
dct:modified The most recent date on which the distribution was changed or modified. See § 5.4.1 Creation and modification dates. 0..n Recommended
dcat:byteSize Distribution file size in bytes. 0..n Recommended
foaf:page A documentation page that describes or provides access to this distribution, such as a SPARQL UI or a download landing page. dcat:accessURL and dcat:downloadURL point to the distribution itself (the API endpoint or the data file). 0..n Recommended
dct:license The license under which the distribution is made available. See § 5.2.2 License. 0..1
v2.0: 1
Recommended
v2.0: becomes required; must be IRI
dct:language The natural language of the textual values in the distribution. Use a value from the EU Vocabularies Languages Named Authority List. 0..n Recommended
v2.0: must match ^http://publications\.europa\.eu/resource/authority/language/
dct:format The format of the distribution. 0..n Required: dcat:mediaType or dct:format

5.6.5. DataCatalog attributes

schema:DataCatalog properties
Property Description Cardinality Usage
@id The HTTP [IRI] of the DataCatalog. 1 Recommended
v2.0: must be IRI
schema:name Name of the data catalog 1..n Required
v2.0: must be rdf:langString
schema:description A description of the contents of the data catalog. Preferably at least three sentences and at most one paragraph (2,000 characters). The discoverability of the data catalog depends in part on the quality of the description. Consider different audiences – both domain experts and others – for whom the text should be understandable. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required; must be rdf:langString
schema:publisher Publisher of the data catalog See § 5.3 Creator/publisher information. 0..1
v2.0: 1
Recommended
v2.0: becomes required
schema:dataset Dataset(s) in the data catalog 0..n Recommended
dcat:Catalog properties
Property Description Cardinality Usage
dct:title The name of the catalog. 1..n Required
v2.0: must be rdf:langString
dct:description A description of the catalog. 0..n
v2.0: 1..n
Recommended
v2.0: becomes required; must be rdf:langString
dct:publisher The organization responsible for publishing the catalog. See § 5.3 Creator/publisher information. 0..1
v2.0: 1
Recommended
v2.0: becomes required
dcat:contactPoint Contact information where end users can get in touch with questions about the catalog. This contains the e-mail address or a link (URL) to the contact form of the responsible organization. The e-mail address should be a functional e-mail address of the organization or department. See § 5.3.3 Contact information. 0..1
v2.0: 1
Recommended
v2.0: becomes required
dcat:dataset The datasets in the catalog. 1..n Required

5.6.6. Full example

A full dataset description that includes required and recommended attributes.
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Dataset",
      "@id": "http://data.bibliotheken.nl/id/dataset/rise-alba",
      "name": [
        {
          "@value": "Alba amicorum van de Koninklijke Bibliotheek",
          "@language": "nl"
        },
        {
          "@value": "Alba amicorum of the Dutch Royal Library",
          "@language": "en"
        }
      ],
      "description": {
        "@value": "Description only in English",
        "@language": "en"
      },
      "about": { "@id": "http://vocab.getty.edu/aat/300026680" },
      "url": "https://www.kb.nl/bronnen-zoekwijzers/kb-collecties/moderne-handschriften-vanaf-ca-1550/alba-amicorum",
      "identifier": "http://data.bibliotheken.nl/id/dataset/rise-alba",
      "license": "http://creativecommons.org/publicdomain/zero/1.0/",
      "inLanguage": [
        "nl-NL",
        "en-GB"
      ],
      "spatialCoverage": {
        "@id": "https://sws.geonames.org/2750405/"
      },
      "temporalCoverage": "1939/1945",
      "publisher": {
        "@id": "https://example.com"
      },
      "creator": [
        {
          "@type": "Person",
          "@id": "https://example.com/creator1",
          "name": {
            "@value": "Creator 1",
            "@language": "en"
          }
        },
        {
          "@type": "Person",
          "@id": "https://example.com/creator2",
          "name": {
            "@value": "Creator 2",
            "@language": "en"
          }
        },
        {
          "@id": "https://example.com"
        }
      ],
      "dateModified": "2021-05-27T09:56:21.370767",
      "datePublished": "2021-05-28",
      "dateCreated": {
        "@type": "http://www.w3.org/2001/XMLSchema#date",
        "@value": "2021-05-27"
      },
      "distribution": [
        {
          "@type": "DataDownload",
          "encodingFormat": "application/rdf+xml",
          "contentUrl": "https://data.bibliotheken.nl/id/dataset/rise-alba.rdf",
          "contentSize": 12582912,
          "description": "RDF/XML dump"
        },
        {
          "@type": "DataDownload",
          "encodingFormat": "application/ld+json",
          "contentUrl": "https://data.bibliotheken.nl/id/dataset/rise-alba.jsonld",
          "usageInfo": "https://docs.nde.nl/schema-profile/",
          "description": "JSON-LD dump"
        },
        {
          "@type": "DataDownload",
          "contentUrl": "https://data.bibliotheken.nl/id/dataset/sparql",
          "documentation": "https://data.bibliotheken.nl/KB/Production/sparql",
          "usageInfo": "https://www.w3.org/TR/sparql11-protocol/",
          "description": "SPARQL endpoint"
        }
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://example.com",
      "identifier": "NL-HaKB",
      "name": {
        "@value": "Koninklijke Bibliotheek",
        "@language": "nl"
      },
      "sameAs": "https://ror.org/02w4jbg70",
      "contactPoint": {
        "@type": "ContactPoint",
        "name": { "@value": "Datasets Manager", "@language": "en" },
        "email": "datasets@example.com"
      }
    }
  ]
}
{
  "@context": {
    "dcat": "http://www.w3.org/ns/dcat#",
    "dct": "http://purl.org/dc/terms/",
    "foaf": "http://xmlns.com/foaf/0.1/",
    "owl": "http://www.w3.org/2002/07/owl#",
    "vcard": "http://www.w3.org/2006/vcard/ns#",
    "xsd": "http://www.w3.org/2001/XMLSchema#"
  },
  "@graph": [
    {
      "@type": "dcat:Dataset",
      "@id": "http://data.bibliotheken.nl/id/dataset/rise-alba",
      "dct:title": [
        {
          "@value": "Alba amicorum van de Koninklijke Bibliotheek",
          "@language": "nl"
        },
        {
          "@value": "Alba amicorum of the Dutch Royal Library",
          "@language": "en"
        }
      ],
      "dct:description": {
        "@value": "Description only in English",
        "@language": "en"
      },
      "dcat:theme": { "@id": "http://vocab.getty.edu/aat/300026680" },
      "dcat:landingPage": {
        "@id": "https://www.kb.nl/bronnen-zoekwijzers/kb-collecties/moderne-handschriften-vanaf-ca-1550/alba-amicorum"
      },
      "dct:language": [
        { "@id": "http://publications.europa.eu/resource/authority/language/NLD" },
        { "@id": "http://publications.europa.eu/resource/authority/language/ENG" }
      ],
      "dct:spatial": { "@id": "https://sws.geonames.org/2750405/" },
      "dct:temporal": "1939/1945",
      "dct:publisher": { "@id": "https://example.com" },
      "dct:creator": [
        {
          "@type": "foaf:Person",
          "@id": "https://example.com/creator1",
          "foaf:name": { "@value": "Creator 1", "@language": "en" }
        },
        {
          "@type": "foaf:Person",
          "@id": "https://example.com/creator2",
          "foaf:name": { "@value": "Creator 2", "@language": "en" }
        },
        { "@id": "https://example.com" }
      ],
      "dcat:contactPoint": {
        "@type": "vcard:Kind",
        "vcard:fn": { "@value": "Datasets Manager", "@language": "en" },
        "vcard:hasEmail": { "@id": "mailto:datasets@example.com" }
      },
      "dct:created": { "@value": "2021-05-27", "@type": "xsd:date" },
      "dct:issued": { "@value": "2021-05-28", "@type": "xsd:date" },
      "dct:modified": {
        "@value": "2021-05-27T09:56:21.370767",
        "@type": "xsd:dateTime"
      },
      "dcat:distribution": [
        {
          "@type": "dcat:Distribution",
          "dcat:mediaType": {
            "@id": "https://www.iana.org/assignments/media-types/application/rdf+xml"
          },
          "dcat:accessURL": {
            "@id": "https://data.bibliotheken.nl/id/dataset/rise-alba.rdf"
          },
          "dcat:downloadURL": {
            "@id": "https://data.bibliotheken.nl/id/dataset/rise-alba.rdf"
          },
          "dcat:byteSize": { "@value": "12582912", "@type": "xsd:nonNegativeInteger" },
          "dct:description": "RDF/XML dump",
          "dct:license": {
            "@id": "http://creativecommons.org/publicdomain/zero/1.0/"
          }
        },
        {
          "@type": "dcat:Distribution",
          "dcat:mediaType": {
            "@id": "https://www.iana.org/assignments/media-types/application/ld+json"
          },
          "dcat:accessURL": {
            "@id": "https://data.bibliotheken.nl/id/dataset/rise-alba.jsonld"
          },
          "dcat:downloadURL": {
            "@id": "https://data.bibliotheken.nl/id/dataset/rise-alba.jsonld"
          },
          "dct:conformsTo": { "@id": "https://docs.nde.nl/schema-profile/" },
          "dct:description": "JSON-LD dump",
          "dct:license": {
            "@id": "http://creativecommons.org/publicdomain/zero/1.0/"
          }
        },
        {
          "@type": "dcat:Distribution",
          "dcat:accessURL": {
            "@id": "https://data.bibliotheken.nl/id/dataset/sparql"
          },
          "foaf:page": {
            "@id": "https://data.bibliotheken.nl/KB/Production/sparql"
          },
          "dct:conformsTo": {
            "@id": "https://www.w3.org/TR/sparql11-protocol/"
          },
          "dct:format": {
            "@id": "http://publications.europa.eu/resource/authority/file-type/SPARQLQ"
          },
          "dct:description": "SPARQL endpoint",
          "dct:license": {
            "@id": "http://creativecommons.org/publicdomain/zero/1.0/"
          }
        }
      ]
    },
    {
      "@type": "foaf:Organization",
      "@id": "https://example.com",
      "dct:identifier": "NL-HaKB",
      "foaf:name": {
        "@value": "Koninklijke Bibliotheek",
        "@language": "nl"
      },
      "owl:sameAs": { "@id": "https://ror.org/02w4jbg70" }
    }
  ]
}

6. Tools

This section is non-normative.

Developers can use the NDE Register API to validate datasets and catalogs against the requirements described in this document. The [SHACL] shape graph used to validate datasets and catalogs is available at /shacl.

6.1. Running the shapes yourself

The Schema.org shapes target properties in the https://schema.org/ namespace. Schema.org’s own JSON-LD context maps its terms to http://schema.org/, so a Schema.org dataset description validated against that context matches no shape at all and the report comes back sh:conforms true without anything having been checked. Since Schema.org release 30.1 that context also no longer types mainEntityOfPage, license and the date properties, which turns values that should be IRIs and dates into plain strings.

To validate your own file – and only to validate it, not to publish it – point its @context at https://def.nde.nl/context.jsonld. That context declares the same prefixes as Schema.org’s and restores the typings the shapes rely on, so you get the report the Register API gives you.

{
  "@context": "https://def.nde.nl/context.jsonld",
  "@id": "https://example.org/dataset",
  "@type": "Dataset",
  "name": {"@value": "My dataset", "@language": "nl"},
  "mainEntityOfPage": "https://example.org/about-this-dataset"
}

Keep serving your dataset description itself with "@context": "https://schema.org/": the Register substitutes the context on its side when it reads your description, so there is nothing to change in what you publish.

DCAT-AP-NL 3.0 descriptions need no such step. Their JSON-LD declares the namespaces itself, as in the examples in this document, so you can validate them as they are.

Google’s Rich Results Test (previously Structured Data Testing Tool) can help with testing RDF metadata in general.

7. Changes

This section lists notable changes to this specification.

7.1. Version 1.15.1 (2026-10-13)

7.2. Version 1.15.0 (2026-10-13)

7.3. Version 1.14.0 (2026-07-16)

7.4. Version 1.13.0 (2026-07-10)

7.5. Version 1.12.0 (2026-06-24)

7.6. Version 1.11.3 (2026-05-21)

7.7. Version 1.11.2 (2026-05-20)

7.8. Version 1.11.1 (2026-05-15)

7.9. Version 1.11.0 (2026-04-23)

7.10. Version 1.10.0 (2026-04-23)

7.11. Version 1.9.0 (2026-04-22)

7.12. Version 1.8.0 (2026-04-20)

7.13. Version 1.7.0 (2026-04-20)

7.14. Version 1.6.0 (2026-04-16)

7.15. Version 1.5.3 (2026-04-15)

7.16. Version 1.5.2 (2026-04-13)

7.17. Version 1.5.1 (2026-04-10)

7.18. Version 1.5.0 (2026-04-02)

7.19. Version 1.4.0 (2026-04-01)

7.20. Version 1.3.0 (2026-04-01)

7.21. Version 1.2.0 (2026-03-25)

7.22. Version 1.1.0 (2026-03-25)

Conformance

Conformance requirements are expressed with a combination of descriptive assertions and RFC 2119 terminology. The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this document are to be interpreted as described in RFC 2119. However, for readability, these words do not appear in all uppercase letters in this specification.

All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. [RFC2119]

Examples in this specification are introduced with the words “for example” or are set apart from the normative text with class="example", like this:

This is an example of an informative example.

Informative notes begin with the word “Note” and are set apart from the normative text with class="note", like this:

Note, this is an informative note.

Index

Terms defined by this specification

References

Normative References

[BCP47]
Addison Phillips; Mark Davis. Tags for Identifying Languages. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/info/bcp47
[DCAT-AP-NL]
DCAT-AP-NL 3.0. URL: https://docs.geostandaarden.nl/dcat/dcat-ap-nl30/
[DERA]
Digital Heritage Reference Architecture. URL: https://dera.netwerkdigitaalerfgoed.nl
[DWBP]
Bernadette Farias Loscio; Caroline Burle; Newton Calegari. Data on the Web Best Practices. URL: https://w3c.github.io/dwbp/bp.html
[DWBP-UCR]
Deirdre Lee; Bernadette Farias Loscio; Phil Archer. Data on the Web Best Practices Use Cases & Requirements. URL: https://w3c.github.io/dwbp/usecasesv1.html
[IRI]
M. Duerst; M. Suignard. Internationalized Resource Identifiers (IRIs). January 2005. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc3987/
[ISO8601]
Representation of dates and times. ISO 8601:2004.. 2004. ISO 8601:2004. URL: http://www.iso.org/iso/catalogue_detail?csnumber=40874
[RDF11-PRIMER]
Guus Schreiber; Yves Raimond. RDF 1.1 Primer. 24 June 2014. NOTE. URL: https://www.w3.org/TR/rdf11-primer/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SCHEMA-ORG]
W3C Schema.org Community Group. Schema.org. 6.0. URL: https://schema.org/

Non-Normative References

[IANA-MEDIA-TYPES]
Media Types. URL: https://www.iana.org/assignments/media-types/
[JSON-LD]
Manu Sporny; Gregg Kellogg; Markus Lanthaler. JSON-LD 1.0. 3 November 2020. REC. URL: https://www.w3.org/TR/json-ld/
[LD-BP]
Bernadette Hyland; Ghislain Auguste Atemezing; Boris Villazón-Terrazas. Best Practices for Publishing Linked Data. 9 January 2014. NOTE. URL: https://www.w3.org/TR/ld-bp/
[N-TRIPLES]
Gavin Carothers; Andy Seaborne. RDF 1.1 N-Triples. URL: https://w3c.github.io/rdf-n-triples/spec/
[SCHEMA-AP-NDE]
David de Boer. Schema.org Application Profile for Datasets. Living Specification. URL: https://docs.nde.nl/schema-profile/
[SHACL]
Holger Knublauch; Dimitris Kontokostas. Shapes Constraint Language (SHACL). URL: https://w3c.github.io/data-shapes/shacl/
[SPARQL11-OVERVIEW]
The W3C SPARQL Working Group. SPARQL 1.1 Overview. 21 March 2013. REC. URL: https://www.w3.org/TR/sparql11-overview/
[TriG]
Gavin Carothers; Andy Seaborne. RDF 1.1 TriG. URL: https://w3c.github.io/rdf-trig/spec/
[Turtle]
Eric Prud'hommeaux; Gavin Carothers. RDF 1.1 Turtle. URL: https://w3c.github.io/rdf-turtle/spec/
[VOCAB-DCAT-3]
Simon Cox; et al. Data Catalog Vocabulary (DCAT) - Version 3. URL: https://w3c.github.io/dx-dcat/TR/

Issues Index

TODO ↵
is this a good translation for ‘bronhouder’? And add examples. This would probably be 'heritage institution' in DERA. ↵