Schema.org Application Profile for NDE (SCHEMA-AP-NDE)

Living Standard,

This version:
https://docs.nde.nl/schema-profile/
Issue Tracking:
GitHub
Editors:
David de Boer (Netwerk Digitaal Erfgoed)
Version:
0.7.2

Abstract

This document specifies the generic data model to be used when publishing linked data in the heritage network. The model enables dataset consumers, including software developers building data-consuming applications, to use, understand and combine datasets from multiple sources, thus fulfilling the promise of linked data.

1. Introduction

1.1. Goal

This document prescribes the SCHEMA-AP-NDE generic data model to be used when publishing linked data in the Dutch heritage network (NDE). The model consists of a minimal set of classes and properties. It is based on:

By adhering to this model, dataset publishers ensure that their data can be:

  1. discovered, understood and combined with other datasets in the network;

  2. used in service platforms to build applications and visualisations.

1.2. Scope

The document is restricted in four ways:

  1. it applies to the Dutch heritage network (NDE), which implements the National Digital Heritage Strategy and Digital Reference Heritage Architecture;

  2. it applies to the way published data is expressed, not how it is stored or managed internally;

  3. it prescribes a generic data model and leaves the use of domain data models up to dataset publishers;

  4. it bears upon datasets, not their descriptions; for the latter see [NDE-DATASETS].

1.3. Examples

RDF examples in this document are in the RECOMMENDED JSON-LD § 3.5 Serialization format.

2. Definitions

Data model

Set of classes and their properties that defines how data is expressed.

Generic data model

A simple, shared data model; the scope of this document. Can be used alongside domain data models.

Domain data model

A domain-specific data model, such as CIDOC-CRM, Linked Art, RiC-O or RDA. Can be used alongside a generic data model. Adds precision at the cost of complexity. Out of this document’s scope.

Metadata record

An RDF resource that expresses an entity in the heritage network using one of the top-level classes in the § 4 Data model: CreativeWork (for heritage objects), Person, Organization and Place.

Heritage object

Physical or digital object that is described by a metadata record. Corresponds to [DERA]’s cultuurhistorisch object.

Term

A word, name, acronym, phrase or other symbol with a formal definition, preferably available in the Network of Terms. Corresponds to [DERA]’s term; expressed in this application profile as a DefinedTerm.

3. General considerations

3.1. Generic and domain data models

The purpose of generic data models is to integrate data in the heritage network and make it more visible. Domain models are usually more richly populated and provide consumers with more possibilities for further processing, for example in service platforms.

This document is limited to a set of classes and properties that together form the generic data model. For most datasets, the generic data model expresses only a subset of data properties that are available. This document’s purpose, therefore, is not a complete and correct expression of the source data, but an easily understandable and usable one.

If done well, the generic data invites consumers to explore the data in more depth using the domain data models. So to facilitate further exploration, publishers MAY use domain data models of their choosing alongside the generic data model. Examples are:

provides
provides
Data Platform
Data Platform
Data Platform
Data Platform
Data Platform
Data Platform
SCHEMA-AP-NDE
SCHEMA-AP-NDE
Domain data 
model(s)
Domain data...
Domain data 
model(s)
Domain data...
Domain data model
Domain data model
Service Platform
Service Platform
Service Platform
Service Platform
Service Platform
Service Platform
discovers
discovers
uses
uses

3.2. Vocabulary

The generic data model presented in this document is designed as a [SCHEMA-ORG] application profile. Schema.org is a widely adopted cross-domain metadata standard. It is, therefore, well-suited for the heritage network, which spans datasets from the library, archive, museum and other domains.

The Schema.org website considers “both ‘https://schema.org’ and 'http://schema.org' (…) fine”. However, JSON-LD’s "@context": "https://schema.org/" resolves all terms to http://schema.org/ IRIs, meaning tools that process JSON-LD produce http:// namespace URIs regardless of the scheme used in the context.

To avoid mixed namespaces and enable interoperability across serialization formats, publishers SHOULD use the http://schema.org/ namespace. Both http://schema.org/ and https://schema.org/ MUST be accepted by consumers.

3.3. Language

For all name and description values, their language MUST be specified. The language MUST be expressed as a well-formed language tag according to [BCP47], such as ‘nl’ (language only) or ‘nl-NL’ (including region).

Specifying the language of the name property:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/1",  "@type": "CreativeWork",  "name": [    {      "@language": "nl",      "@value": "De Sterrennacht"    },    {      "@language": "en",      "@value": "The Starry Night"    }  ]}

Even if only one language is available, the language MUST be specified.

Specify the language property even for a single value:
{  "@context": "http://schema.org",  "name": {    "@language": "nl",    "@value": "De Sterrennacht"  }}

Each language MUST occur only once, so only a single value per language is allowed.

❌ Do not specify the same language twice:
{  "@context": "http://schema.org",  "name": [    {      "@language": "en",      "@value": "The Starry Night"    },    {      "@language": "en",      "@value": "Repeated English name while only one is allowed"    }  ]}

3.4. Reference terms

When referencing terms, the node MUST be typed as DefinedTerm to indicate to consumers that a formal definition is being referenced.

A schema:name language-tagged string is REQUIRED to identify the term in a human-readable form.

The term URI MUST be provided via schema:sameAs. Term URIs MUST be dereferenceable, which means that consumers can retrieve the term’s definition either:

Reference a term using sameAs:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "genre": {    "@type": "DefinedTerm",    "name": {      "@language": "en",      "@value": "Post-Impressionist"    },    "sameAs": "http://vocab.getty.edu/aat/300021508"  }}

When no public term is known, sameAs MAY be omitted:

Reference a term without a known URI:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "genre": {    "@type": "DefinedTerm",    "name": {      "@language": "en",      "@value": "Post-Impressionist"    }  }}

3.5. Serialization

Servers MUST provide at least one RDF serialization format. Supporting multiple formats using content negotiation is RECOMMENDED.

The following formats are RECOMMENDED:

3.6. Publication method

3.6.1. Publication levels

In the heritage network, SCHEMA-AP-NDE data MUST be available on two levels:

  1. resolvable URIs for individual resources

  2. data dumps for datasets

It MAY additionally be available through a:

  1. SPARQL endpoint.

If the generic data model is used alongside domain data models, there are two methods for doing so:

Publishers MUST support at least one of these methods.

3.6.2. Combined

With RDF, it’s perfectly fine to express the same data in multiple ways. Therefore, the generic and domain data models MAY coexist in the same information resource.

Combine generic (Schema.org) with domain-specific (Linked Art) modelling.
 {
   "@context": {
     "schema": "http://schema.org/",
     "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
     "dcterms": "http://purl.org/dc/terms/"
   },
   "@id": "https://literatuurmuseum.nl/id/123456789",
   "@type": ["schema:CreativeWork", "schema:VisualArtwork"],
   "schema:name": "Het fluitketeltje en andere versjes",
   "rdfs:label": "Het fluitketeltje en andere versjes",
   "schema:creator": {
     "@type": "schema:Person",
     "@id": "http://data.rkd.nl/artists/8342"
   },
   "dcterms:creator": {
     "@type": "dcterms:Agent",
     "@id": "http://data.rkd.nl/artists/8342"
   }
}

3.6.3. Separate profiles

Alternatively, publishers MAY separate the generic data model by using profile-based content negotiation (see [DX-PROF-CONNEG]). To do so, publish a profile with URI https://docs.nde.nl/schema-profile/.

Note: While still a draft, [DX-PROF-CONNEG] has already been implemented, for example by the Rijksmuseum.

Note: This method does not apply to SPARQL endpoints, which use the SPARQL protocol and do not support profile-based content negotiation.

Expose the generic data model in its own content-negotiated profile.
# Get the list of profiles.
GET /resource/a?profile=alt HTTP/1.1

# Server responds with a list of profiles that includes the NDE generic data model.
HTTP/1.1 200 OK
Content-Type: application/json

{
    "resource": "http://example.org/resource/a",
    "profiles": [
        {
            "token": "nde",
            "uri": "https://docs.nde.nl/schema-profile/",
            "media_types": ["application/ld+json", "text/turtle"]
        },
        ...
    ]
}

It is then possible to request the metadata record in the generic data model using the Accept-Profile HTTP header:

Request the metadata record in SCHEMA-AP-NDE:
GET /resource/a HTTP/1.1
Accept: application/ld+json
Accept-Profile: <https://docs.nde.nl/schema-profile/>

# Server responds with a SCHEMA-AP-NDE representation of the metadata record.
HTTP/1.1 200 OK
Content-Type: application/ld+json

...

4. Data model

This section describes the classes and properties that MUST be used to publish metadata records in the heritage network.

Each record MUST be typed as one of the following classes:

For each of these classes, the sections below list the REQUIRED and OPTIONAL properties.

MediaObject is documented as a supporting class, used through the associatedMedia property on CreativeWork.

4.1. Class diagram

creator
additionalType
contentLocation
locationCreated
about
material
genre

contentLocation
locationCreated

creator

creator

associatedMedia

hasOccupation

birthPlace
deathPlace

birthPlace
deathPlace

geo

location

1..*

1..*

1..*

0..*

0..1

0..1

0..1

0..1

CreativeWork

URI 

name: rdf:langString [1..*]

creator: [1..*]

isPartOf: [1..*]

associatedMedia: [object Object] [1..*]

identifier: [0..*]

additionalType: IRI [0..*]

description: rdf:langString [0..*]

abstract: rdf:langString [0..*]

text: rdf:langString [0..*]

size: xsd:string [0..*]

contentLocation: [0..*]

temporalCoverage: xsd:string [0..*]

locationCreated: [0..*]

dateCreated: schema:Date | xsd:date [0..*]

about: [0..*]

material: schema:DefinedTerm [0..*]

genre: schema:DefinedTerm [0..*]

sdDatePublished: [0..*]

MediaObject

license: IRI [1..*]

contentUrl: xsd:anyURI [1..*]

thumbnailUrl: xsd:anyURI [1..*]

copyrightNotice: rdf:langString [0..*]

isBasedOn: [object Object] [0..*]

Organization

URI 

name: rdf:langString [1..*]

location: [object Object] [0..1]

Person

name: rdf:langString [1..*]

birthDate: schema:Date | xsd:date [0..1]

birthPlace: [0..1]

deathDate: schema:Date | xsd:date [0..1]

deathPlace: [0..1]

hasOccupation: [0..*]

Place

name: rdf:langString [1..*]

address: [object Object] [0..*]

geo: [0..1]

PostalAddress

streetAddress: xsd:string [0..1]

postalCode: xsd:string [0..1]

addressLocality: xsd:string [0..1]

addressRegion: xsd:string [0..1]

addressCountry: xsd:string [0..1]

GeoCoordinates

latitude: xsd:double [1]

longitude: xsd:double [1]

DefinedTerm

URI 

name: rdf:langString [0..*]

SCHEMA-AP-NDE

4.2. CreativeWork

The type for heritage objects ([DERA]’s cultuurhistorisch object) in this application profile.

Some heritage objects fit CreativeWork well, such as paintings, books or musical compositions. Others are a less natural fit, such as fossils, buses or bridges, either because they are not ‘creative works’ in the everyday sense or because they fit somewhere else in Schema.org’s type hierarchy.

Nevertheless, CreativeWork serves as the catch-all type for all heritage objects in this application profile, to differentiate them from the other top-level classes (Person, Organization, Place).

For more fine-grained typing, § 4.2.8 additionalType SHOULD be used.

Note: CreativeWork does not reference the Dutch legal concept 'creatief werk' as used in the Auteurswet (Copyright Act of 1912) in any way.

4.2.1. Subclasses

Publishers SHOULD use more fine-grained classes alongside the top-level class CreativeWork. Examples include, but are not limited to:

A painting is typed as both top-level CreativeWork and the more specific Painting:
{
  "@context": "http://schema.org",
  "@id": "https://n2t.net/ark:/123456/1",
  "@type": ["CreativeWork", "Painting"]
}

Even though the superclass can be derived from its subclasses using RDF inferencing (in this example, CreativeWork from Painting), the superclass MUST be provided explicitly to help users understand the data.

4.2.2. URI (required)

Each CreativeWork MUST be identified by a persistent URI. Blank nodes MUST NOT be used.

Specify the URI in the JSON-LD @id property:
{  "@context": "http://schema.org",  "@id": "https://example.com/resource",  "@type": "CreativeWork"}

4.2.3. name (required)

The CreativeWork’s name or title, assigned either by its creator, collection managers or by others. The value MUST be a language-tagged string.
A language-tagged name
{  "@context": "http://schema.org",  "@id": "https://example.com/dataset1/resource1",  "@type": "CreativeWork",  "name": [    {      "@language": "nl",      "@value": "De Sterrennacht"    },    {      "@language": "en",      "@value": "The Starry Night"    }  ]}

4.2.4. creator (required)

A REQUIRED property that identifies the person(s) or organization(s) that had a role in the production of the CreativeWork.

If a term is available, that MUST be referenced. If not, a Person or Organization resource MUST be used instead.

The type MAY be omitted if the dataset publisher does not know whether the creator is a Person or Organization.

Even where more specific properties, applicable to CreativeWork’s subtypes, are available in Schema.org, such as artist, composer and director, the creator property MUST be used for consistency.

Van Gogh’s panting The Starry Night
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "creator": {    "@type": ["DefinedTerm", "Person"],    "name": {      "@language": "nl",      "@value": "Vincent van Gogh"    },    "sameAs": "https://data.rkd.nl/artists/32439"  }}
A creator with unknown type:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "creator": {    "name": {      "@language": "nl",      "@value": "Vincent van Gogh"    }  }}

4.2.5. isPartOf (required)

Points to the dataset(s) that the CreativeWork is part of, REQUIRED if the CreativeWork is part of one or more datasets.

This contextualizes the CreativeWork for consumers, with the dataset’s description providing information about properties that are shared between CreativeWorks in the same dataset, such as publisher and license.

Note that a CreativeWork may be part of multiple datasets.

The dataset MUST be typed as a Dataset.

The isPartOf property MAY also be used to indicate hierarchical relations between CreativeWorks within the dataset. In that case, the value’s type will be something other than Dataset. This usage is out of scope for this document.

Indicating the dataset that the CreativeWork is part of:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/1",  "@type": "CreativeWork",  "isPartOf": {    "@id": "https://organization.com/dataset1",    "@type": "Dataset"  }}

4.2.6. associatedMedia (required)

One or more media objects that represent the CreativeWork. This property is REQUIRED if at least one media object is available.

If an IIIF Presentation API manifest is available for the CreativeWork, it MUST be included as an additional associatedMedia entry of type MediaObject with:

See MediaObject for this property’s allowed values.

An image representation of the Starry Night:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "associatedMedia": {    "@type": "ImageObject"  }}
IIIF Image API and Presentation manifest as associatedMedia:
{  "@context": "http://schema.org",  "@type": "CreativeWork",  "associatedMedia": [    {      "@type": ["MediaObject", "ImageObject"],      "contentUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/max/0/default.jpg",      "thumbnailUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/%5E!256,256/0/default.jpg",      "isBasedOn": {        "@id": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif",        "encodingFormat": "application/ld+json;profile='http://iiif.io/api/image/3/context.json'"      }    },    {      "@type": "MediaObject",      "@id": "https://demo.limb-gallery.com/iiif/25290/manifest",      "encodingFormat": "application/ld+json;profile='http://iiif.io/api/presentation/3/context.json'"    }  ]}

4.2.7. identifier

An OPTIONAL property that provides a unique identifier for the CreativeWork, usually an assigned alphanumeric string. The identifier may be useful for referencing the CreativeWork in non-RDF contexts, such as exhibitions. Note that this is different from the CreativeWork’s URI. The value MUST be either a string or a schema:PropertyValue.
A string as identifier:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "identifier": "Q45585"}
A structured PropertyValue as identifier:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "identifier": {    "@type": "PropertyValue",    "propertyID": {      "@id": "https://registry.identifiers.org/registry/viaf"    },    "value": "176354386",    "url": "http://identifiers.org/viaf:176354386"  }}

4.2.8. additionalType

An OPTIONAL property that provides additional types for the CreativeWork. This is useful to add more specific types to your metadata record that may not be available as a Schema.org subclass.

The value MUST reference terms.

The Starry Night is both a Schema.org Painting and an AAT painting:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": ["CreativeWork", "Painting"],  "additionalType": {    "@type": ["DefinedTerm", "URL"],    "@id": "https://vocab.getty.edu/aat/300033618"  }}

4.2.9. description

An OPTIONAL property that gives a full description of the CreativeWork. The value MUST be a language-tagged string.
A description of the Starry Night:
{  "@context": "http://schema.org",  "@id": "https://example.com/dataset1/resource1",  "@type": "CreativeWork",  "description": [    {      "@language": "nl",      "@value": "Olieverfschilderij van het uitzicht uit Van Goghs ziekenhuiskamer in Saint-Rémy-de-Provence, vlak voor zonsopkomst."    },    {      "@language": "en",      "@value": "Oil-on-canvas painting depicting the view from his asylum room at Saint-Rémy-de-Provence, just before sunrise."    }  ]}

4.2.10. abstract

Summarizes the CreativeWork in one sentence. The abstract SHOULD be free of jargon and abbreviations so it can be understood by others. The value MUST be a language-tagged string.
A single-sentence abstract:
{  "@context": "http://schema.org",  "@id": "https://example.com/dataset1/resource1",  "@type": "CreativeWork",  "abstract": [    {      "@language": "nl",      "@value": "Het schilderij is een nachttafereel met gele sterren boven een kleine stad met heuvels. Het is een uitzicht vanuit een denkbeeldig punt over een dorp met kerktoren, met links een vlammende cipres en rechts olijfbomen tegen de heuvels op."    }  ]}

4.2.11. text

An OPTIONAL property containing the complete textual content of the CreativeWork, primarily used for search indexing and discovery.

This includes content such as:

Note that this property contains plain text only, without preserving structural elements like paragraphs, headings or the relationship between text and embedded media.

The value MUST be a language-tagged string.
A story:
{  "@context": "http://schema.org",  "@id": "https://example.com/dataset1/resource1",  "@type": ["CreativeWork", "Article"],  "text": [    {      "@language": "nl",      "@value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In a dignissim enim, in hendrerit ipsum. Sed accumsan purus id erat hendrerit rutrum. Nullam luctus, erat luctus fringilla semper, arcu erat gravida mi, vel molestie ex odio et orci. Phasellus vestibulum tristique pulvinar. Aliquam erat volutpat."    }  ]}

4.2.12. size

Indicates the physical size of the CreativeWork in its preferred display form.
The dimensions of Van Gogh’s Starry Night
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "size": "74 × 92 cm"}

4.2.13. contentLocation

Indicates the location(s) depicted or described in the CreativeWork. For example, the location in a photograph or painting.

If available, a term MUST be referenced. If not, a Place resource MUST be used instead.

Van Gogh’s painting The Starry Night:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "contentLocation": {    "@type": ["DefinedTerm", "Place"],    "name": {      "@language": "fr",      "@value": "Saint-Rémy-de-Provence"    },    "sameAs": "http://www.wikidata.org/entity/Q221507"  }}

4.2.14. temporalCoverage

Indicates the period that the content applies to, i.e. that the time period(s) that the CreativeWork describes or depicts.

The value MUST be either a DateTime or a time period in [ISO8601] time interval format.

Van Gogh’s painting The Starry Night:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "temporalCoverage": "1889-06/07"}

4.2.15. locationCreated

Indicates the location(s) where the CreativeWork was created (which may be different from its contentLocation).

If available, a term MUST be referenced. If not, a Place resource MUST be used instead.

Van Gogh’s painting The Starry Night:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "locationCreated": {    "@type": ["DefinedTerm", "Place"],    "name": {      "@language": "fr",      "@value": "Saint-Rémy-de-Provence"    },    "sameAs": "http://www.wikidata.org/entity/Q221507"  }}

4.2.16. dateCreated

Indicates the date the CreativeWork was created.

The value MUST be in [ISO8601] format: YYYY, YYYY-MM, or YYYY-MM-DD. Partial dates MAY be used if the exact date is unknown.

Van Gogh painted The Starry Night in June 1889:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "dateCreated": "1889-06"}

4.2.17. about

Indicates the subject-matter of the CreativeWork. For example, which subjects are depicted in a painting or photograph? Or which subjects is a story about? And/or which CreativeWork (e.g. collection object) is this CreativeWork (story) about?

The value MUST either reference terms or other CreativeWork(s).

If the subject is a location, it MUST be listed under contentLocation instead.

The Starry Night depicts ‘starry sky’ and ‘Moon’.
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "about": [    {      "@type": "DefinedTerm",      "name": {        "@language": "en",        "@value": "starry sky"      },      "sameAs": "http://www.wikidata.org/entity/Q149908"    },    {      "@type": "DefinedTerm",      "name": {        "@language": "en",        "@value": "Moon"      },      "sameAs": "http://www.wikidata.org/entity/Q405"    }  ]}

4.2.18. material

Indicates the material(s) that the CreativeWork is made from, e.g. leather, wool, cotton, paper. The value MUST reference terms.
The Starry Night is made from ‘oil paint’ and ‘canvas’:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "material": [    {      "@type": ["DefinedTerm", "URL"],      "name": {        "@language": "en",        "@value": "oil paint (paint)"      },      "sameAs": "http://vocab.getty.edu/aat/300015050"    },    {      "@type": ["DefinedTerm", "URL"],      "name": {        "@language": "en",        "@value": "canvas (textile material)"      },      "sameAs": "http://vocab.getty.edu/aat/300014078"    }  ]}

4.2.19. genre

Indicates the genre(s) of the CreativeWork, for example art movements or periods.

The value MUST reference a term.

The Starry Night belongs to the Post-Impressionist art movement:
{  "@context": "http://schema.org",  "@id": "http://www.wikidata.org/entity/Q45585",  "@type": "CreativeWork",  "genre": {    "@type": "DefinedTerm",    "name": {      "@language": "en",      "@value": "Post-Impressionist"    },    "sameAs": "http://vocab.getty.edu/aat/300021508"  }}

4.2.20. sdDatePublished

Indicates the date when the metadata record was last changed.

The value MUST be in [ISO8601] format: YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ.

4.3. Organization

Each Organization MUST be identified by a persistent URI. Blank nodes MUST NOT be used for identifying Organizations.

4.3.1. URI (required)

Each Organization MUST be identified by a persistent URI. Blank nodes MUST NOT be used.

Specify the URI in the JSON-LD @id property:
{  "@context": "http://schema.org",  "@id": "https://example.com/resource",  "@type": "Organization"}

4.3.2. name (required)

A REQUIRED property that indicates the Organization’s full name in its preferred display form. The value MUST be a language-tagged string.
Organization name:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/3",  "@type": "Organization",  "name": {    "@language": "en",    "@value": "Example Museum"  }}

4.3.3. location

An OPTIONAL property that indicates the Organization’s location, useful for distinguishing the organization from others with similar names.

See Place for this property’s allowed values.

Organization with a location:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/3",  "@type": "Organization",  "location": {    "@type": "Place",    "name": {      "@language": "en",      "@value": "Office"    },    "address": {      "@type": "PostalAddress",      "streetAddress": "Street 123",      "postalCode": "1234 AB",      "addressLocality": "City",      "addressRegion": "Noord-Holland",      "addressCountry": "NL"    }  }}

4.4. Person

If a metadata record is a person, it MUST be typed as Person. If a term is available for the person, that MUST be referenced. If not, the person MUST be defined by the required properties listed below.

The objective for the Person model is not to fully describe all aspects of a person, but to easily identify and distinguish between similar persons.

4.4.1. name (required)

A REQUIRED property that indicates the Person’s full name in its preferred display form.

The name MUST NOT contain information that belongs to other properties, such as birthDate or deathDate.

The value MUST be a language-tagged string.
Person with a language-tagged name:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/2",  "@type": "Person",  "name": {    "@language": "nl",    "@value": "Pluk van de Petteflat"  }}

4.4.2. birthDate

An OPTIONAL property that indicates the person’s date of birth in [ISO8601] format: YYYY-MM-DD. Partial dates MAY be used if the exact date is unknown: YYYY or YYYY-MM.

4.4.3. birthPlace

An OPTIONAL property that references the person’s place of birth. The value MUST reference a term. If no term is available, a custom Place resource MUST be used.
Person with birthPlace:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/2",  "@type": "Person",  "birthPlace": {    "@type": ["DefinedTerm", "Place"],    "name": {      "@language": "nl",      "@value": "Utrecht"    },    "sameAs": "https://sws.geonames.org/2745912/"  }}

4.4.4. deathDate

An OPTIONAL property that indicates the person’s date of death in [ISO8601] format: YYYY-MM-DD. Partial dates MAY be used if the exact date is unknown: YYYY or YYYY-MM.

4.4.5. deathPlace

An OPTIONAL property that references the person’s place of death. The value MUST reference a term, or, if no term is available, a custom Place resource MUST be used.
Person with deathPlace:
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/2",  "@type": "Person",  "deathPlace": {    "@type": ["DefinedTerm", "Place"],    "name": {      "@language": "nl",      "@value": "Auvers-sur-Oise"    },    "sameAs": "http://www.wikidata.org/entity/Q131153786"  }}

4.4.6. hasOccupation

An OPTIONAL property that indicates the person’s occupation(s). If available, a term reference MUST be included in sameAs.
A carpenter (as a term):
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/2",  "@type": "Person",  "hasOccupation": {    "@type": ["DefinedTerm", "Occupation"],    "name": {      "@language": "en",      "@value": "carpenter"    },    "sameAs": "http://vocab.getty.edu/aat/300025008"  }}
A sekreetruimer (for which no term is known):
{  "@context": "http://schema.org",  "@id": "https://n2t.net/ark:/123456/2",  "@type": "Person",  "hasOccupation": {    "@type": "Occupation",    "name": {      "@language": "nl",      "@value": "sekreetruimer"    }  }}

4.5. Place

For properties that reference locations, if no term is available, a custom Place resource MUST be used instead.

4.5.1. name (required)

A REQUIRED property that indicates the name of the place. The value MUST be a language-tagged string.

4.5.2. address

A property that indicates the Place’s address, REQUIRED if known.

See PostalAddress for this property’s allowed values.

A place with an address:
{  "@context": "http://schema.org",  "@id": "https://example.com/dataset/place",  "@type": "Place",  "address": {    "@type": "PostalAddress",    "streetAddress": "Street 123",    "postalCode": "1234 AB",    "addressLocality": "City",    "addressRegion": "Noord-Holland",    "addressCountry": "NL"  }}

4.5.3. geo

A property that indicates the Place’s [WGS84] geo coordinates, REQUIRED if known.
A place with coordinates:
{  "@context": "http://schema.org",  "@type": "Place",  "@id": "https://example.com/dataset/place",  "geo": {    "@type": "GeoCoordinates",    "latitude": 37.42242,    "longitude": 122.08585  }}

4.6. MediaObject

In case of image, video, audio or 3d model objects, in addition to the MediaObject class, the relevant subclass MUST be used:

For other types of media, the generic class MediaObject MUST be used by itself.

4.6.1. license (required)

A REQUIRED property that points to the URI for a license under which the digital reproduction may be used. This concerns the use of the reproduction, not of the heritage object itself. The value MUST be the canonical URI of a license. For example, use https://creativecommons.org/licenses/by/4.0/ instead of http://creativecommons.org/licenses/by/4.0/deed.nl.

The value SHOULD be an open license that allows the media to consumed, for example one of the Creative Commons licenses.

CC0 “No Rights Reserved” license on an ImageObject:
{  "@context": "http://schema.org",  "@type": "MediaObject",  "license": "https://creativecommons.org/public-domain/cc0/"}

4.6.2. contentUrl (required)

Points to the URL of the media object, REQUIRED if the MediaObject is published under an open license.

For ImageObjects, this SHOULD be a high-resolution image to be used in full-screen viewers etc.

Full-sized image representation of the Starry Night.
{  "@context": "http://schema.org",  "@type": ["MediaObject", "ImageObject"],  "contentUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/max/0/default.jpg"}

4.6.3. thumbnailUrl (required)

Points to a smaller version of the MediaObject, REQUIRED if the MediaObject is published under an open license.

For ImageObjects, this SHOULD be a small image to be used in lists, search results etc.

Both full-sized image and thumbnail of the Starry Night.
{  "@context": "http://schema.org",  "@type": ["MediaObject", "ImageObject"],  "contentUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/max/0/default.jpg",  "thumbnailUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/%5E!256,256/0/default.jpg"}

4.6.4. copyrightNotice

An OPTIONAL property that indicates the copyright aspects of the MediaObject, particularly useful if the license requires attribution. The value MUST be a language-tagged string.
A MediaObject that may be used only with attribution.
{  "@context": "http://schema.org",  "@type": ["MediaObject", "ImageObject"],  "license": "https://creativecommons.org/licenses/by-sa/4.0/",  "copyrightNotice": {    "@language": "en",    "@value": "© 2025 Example Museum, with permission from Ph. Otographer"  }}

4.6.5. isBasedOn

If an IIIF Image API for the MediaObject is available, this MUST be specified through isBasedOn with:

Even though full-sized and thumbnail images can be derived by IIIF-compatible consumers, the contentUrl and thumbnailUrl properties MUST still be provided for non-IIIF consumers. A simple formula for building image URLs from an IIIF Image API URL:

IIIF Image API:
{  "@context": "http://schema.org",  "@type": ["MediaObject", "ImageObject"],  "contentUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/max/0/default.jpg",  "thumbnailUrl": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif/full/%5E!256,256/0/default.jpg",  "isBasedOn": {    "@id": "https://demo.limb-gallery.com/i/?IIIF=/7b/2e/bc/4c/7b2ebc4c-1a55-4d5d-a154-8b590764caa6/iiif/Van_Gogh_-_Starry_Night_-_Google_Art_Project.tif",    "encodingFormat": "application/ld+json;profile='http://iiif.io/api/image/3/context.json'"  }}

4.7. PostalAddress

A postal address for an Organization or Place. All properties are OPTIONAL.

4.7.1. streetAddress

An OPTIONAL property that indicates the street address, e.g. ‘Street 123’.

4.7.2. postalCode

An OPTIONAL property that indicates the postal code, e.g. ‘1234 AB’.

4.7.3. addressLocality

An OPTIONAL property that indicates the locality (city).

4.7.4. addressRegion

An OPTIONAL property that indicates the region (province or state).

4.7.5. addressCountry

An OPTIONAL property that indicates the country. For countries that have an ISO 3166-1 alpha-2 country code (e.g. ‘NL’), that MUST be used. For historical countries, their name MAY be used instead (e.g. ‘Prussia’).

4.8. GeoCoordinates

Geographic coordinates for a Place.

4.8.1. latitude (required)

The latitude of a location. For example 37.42242 (WGS 84).

4.8.2. longitude (required)

The longitude of a location. For example -122.08585 (WGS 84).

5. Full examples

Some full examples of metadata records.

5.1. Story

{
  "@context": "http://schema.org",
  "@id": "https://www.bhic.nl/ontdekken/verhalen/vincent-van-gogh-op-kostschool",
  "@type": ["CreativeWork", "Article"],
  "name": {
    "@language": "nl",
    "@value": "Vincent van Gogh op kostschool"
  },
  "creator": {
    "@type": "Person",
    "name": {
      "@language": "nl",
      "@value": "Cor Kerstens"
    }
  },
  "isPartOf": {
    "@id": "https://www.bhic.nl/ontdekken/verhalen",
    "@type": "Dataset"
  },
  "associatedMedia": {
    "@id": "https://www.bhic.nl/memorix/images/search/detail/31c4cc62-45fb-11e3-8624-e7bda1721fcf/media/26097b4e-deca-d99c-4c2d-2598d67b61a0",
    "@type": "ImageObject",
    "contentUrl": "https://webservices.memorix.nl/mediabank/media/31c4cc62-45fb-11e3-8624-e7bda1721fcf/downloadoriginal/26097b4e-deca-d99c-4c2d-2598d67b61a0?apiKey=24c66d08-da4a-4d60-917f-5942681dcaa1",
    "caption": {
      "@language": "nl",
      "@value": "De voormalige kostschool, Stationsstraat 16 in Zevenbergen"
    },
    "copyrightNotice": {
      "@language": "nl",
      "@value": "BHIC"
    }
  },
  "additionalType": {
    "@id": "http://vocab.getty.edu/aat/300404016"
  },
  "description": {
    "@language": "nl",
    "@value": "Van 1 oktober 1864 tot 31 augustus 1866 verbleef Vincent van Gogh op de kostschool van Jan Provily in Zevenbergen. Vincent zelf vertelt er in drie brieven kort iets over. Hieruit blijkt dat hij zich hier niet zo gelukkig heeft gevoeld."
  },
  "abstract": {
    "@language": "nl",
    "@value": "Van 1 oktober 1864 tot 31 augustus 1866 verbleef Vincent van Gogh op de kostschool van Jan Provily in Zevenbergen."
  },
  "text": {
    "@language": "nl",
    "@value": "Domineeszoon Vincent van Gogh werd op 30 maart 1853 in het Brabantse grensdorp Zundert geboren. Tot zijn 8ste jaar kreeg hij les van zijn vader (…)"
  },
  "contentLocation": {
    "@type": ["DefinedTerm", "Place"],
    "name": {
      "@language": "nl",
      "@value": "Stationsstraat in Zevenbergen"
    },
    "sameAs": "http://www.wikidata.org/entity/Q19547129"
  },
  "temporalCoverage": "1864/1866",
  "dateCreated": "2019-04-25",
  "about": [
    {
      "@type": "DefinedTerm",
      "name": {
        "@language": "nl",
        "@value": "Vincent van Gogh"
      },
      "sameAs": "https://data.rkd.nl/artists/32439"
    },
    {
      "@type": "DefinedTerm",
      "name": {
        "@language": "nl",
        "@value": "kostscholen"
      },
      "sameAs": "https://data.cultureelerfgoed.nl/term/id/cht/596dac9d-868f-461e-bbf9-6baae4fb5a12"
    }
  ],
  "genre": {
    "@type": "DefinedTerm",
    "name": {
      "@language": "nl",
      "@value": "biografieën"
    },
    "sameAs": "http://vocab.getty.edu/aat/300080102"
  }
}

6. Formal definition

SHACL shapes for validating against SCHEMA-AP-NDE are available at GitHub.

To guarantee consistency, this specification document is built from those SHACL shapes.

7. Changes

This section lists notable changes to this specification.

7.1. Version 0.7.2 (2026-03-16)

7.2. Version 0.7.1 (2026-03-10)

7.3. Version 0.7.0 (2026-03-04)

7.4. Version 0.6.0 (2026-03-04)

7.5. Version 0.5.0 (2026-03-02)

7.6. Version 0.4.1 (2026-03-02)

7.7. Version 0.4.0 (2026-02-23)

7.8. Version 0.3.0 (2026-02-20)

7.9. Version 0.2.0 (2026-02-20)

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]
A. Phillips, Ed.; M. Davis, Ed.. Tags for Identifying Languages. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[DX-PROF-CONNEG]
Lars G. Svensson; Rob Atkinson; Nicholas Car. Content Negotiation by Profile. URL: https://w3c.github.io/dx-connegp/connegp/
[ISO8601]
Representation of dates and times. ISO 8601:2004.. 2004. ISO 8601:2004. URL: http://www.iso.org/iso/catalogue_detail?csnumber=40874
[JSON-LD]
Manu Sporny; Gregg Kellogg; Markus Lanthaler. JSON-LD 1.0. 3 November 2020. REC. URL: https://www.w3.org/TR/json-ld/
[N-QUADS]
Gavin Carothers. RDF 1.1 N-Quads. URL: https://w3c.github.io/rdf-n-quads/spec/
[NDE-COLLECTION-MANAGEMENT-SYSTEMS]
Gertjan Filarski; Enno Meijers. Requirements for Collection Management Systems. URL: https://netwerk-digitaal-erfgoed.github.io/requirements-collection-management-systems/
[NDE-DATASETS]
David de Boer; Bob Coret. NDE Requirements for Datasets. Living Specification. URL: https://netwerk-digitaal-erfgoed.github.io/requirements-datasets/
[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
[RFC9110]
R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. HTTP Semantics. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[SCHEMA-ORG]
W3C Schema.org Community Group. Schema.org. 6.0. URL: https://schema.org/
[WGS84]
World Geodetic System 1984 (WGS 84). 2008. URL: https://earth-info.nga.mil/index.php?dir=wgs84&action=wgs84

Informative References

[DERA]
Digital Heritage Reference Architecture. URL: https://dera.netwerkdigitaalerfgoed.nl
[NDHS]
NDE; Ministerie van Onderwijs, Cultuur en Wetenschap. National Digital Heritage Strategy. URL: https://zenodo.org/records/14760720
[RDF-PRIMER]
Frank Manola; Eric Miller. RDF Primer. URL: https://w3c.github.io/rdf-primer/spec/