Skip to main content
JSON-LD (JSON for Linked Data) is a W3C standard that adds semantic meaning to JSON by associating each field with a globally recognised vocabulary term. Exporting your DMS records as JSON-LD makes them machine-readable by search engines, library catalogue systems, and linked open data portals — without changing how they look to a human reader.

Why it matters

A plain DMS JSON record uses field names like creator and title. A JSON-LD export maps those same fields to precise URIs from established vocabularies:
  • creatorhttp://purl.org/dc/elements/1.1/creator
  • titlehttp://purl.org/dc/elements/1.1/title
  • name (on a creator) → http://xmlns.com/foaf/0.1/name
This means any application that understands those vocabularies can consume your metadata without custom parsing.

Exporting a single record

dms export records/story_b3e7c8a1.json
By default the output file is placed next to the input with a .jsonld extension:
records/story_b3e7c8a1.jsonld
Use --output to choose a different path:
dms export records/story_b3e7c8a1.json --output exports/story.jsonld

Exporting an entire collection

Pass --dir to export every .json file in a directory as a single JSON-LD @graph document:
dms export --dir records/
This writes a collection.jsonld file into the directory. Each record becomes a node in the @graph array, sharing a single top-level @context block:
dms export --dir records/ --output exports/all-records.jsonld

Vocabulary mappings

DMS maps its fields to six linked data vocabularies defined in schema/dms.jsonld:
The core bibliographic vocabulary. Used for the fundamental descriptive fields:
DMS fieldMapped to
iddc:identifier
titledc:title
descriptiondc:description
typedc:type
languagedc:language
formatdc:format
subjectdc:subject
rightsdc:rights
sourcedc:source
date.createddcterms:created
date.event_datedcterms:date
rights.licensedcterms:license
rights.holderdcterms:rightsHolder
locationdcterms:spatial
Used to describe people involved in creating or contributing to a record:
DMS fieldMapped to
creator[].namefoaf:name
each creator node@type: foaf:Person
Role mappings to FOAF include authorfoaf:maker.
Provides document-type classifications and roles specific to bibliographic resources:
DMS typeBIBO mapping
story, document, poembibo:Document
audiobibo:AudioDocument
videobibo:AudioVisualDocument
eventbibo:Event
Creator roles include interviewerbibo:interviewer, editorbibo:editor, translatorbibo:translator.
DMS fieldMapped to
source.collectionbibo:Collection
Provides rich type mappings recognised by Google, Bing, and major catalogues:
DMS typeSchema.org @type
storyschema:Article
photoschema:Photograph
documentschema:DigitalDocument
audioschema:AudioObject
videoschema:VideoObject
eventschema:Event
mapschema:Map
artworkschema:VisualArtwork
siteschema:Place
poemschema:CreativeWork
Additional field mappings: creator[].affiliationschema:affiliation, coverage.start_dateschema:startDate, coverage.end_dateschema:endDate.
Used for geographic coordinates on the location object:
DMS fieldMapped to
location.latitudegeo:lat
location.longitudegeo:long
The SKOS namespace is included in the context for future use in classifying subject tags as concept scheme entries, enabling interoperability with controlled vocabulary systems and thesauri.

Example JSON-LD output

The following shows what the examples/story.json record looks like after export. The @context block is sourced directly from schema/dms.jsonld:
story_b3e7c8a1.jsonld
{
  "@context": {
    "dms": "https://github.com/Dzaleka-Connect/Dzaleka-Metadata-Standard/schema#",
    "dc": "http://purl.org/dc/elements/1.1/",
    "dcterms": "http://purl.org/dc/terms/",
    "schema": "https://schema.org/",
    "foaf": "http://xmlns.com/foaf/0.1/",
    "bibo": "http://purl.org/ontology/bibo/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "geo": "http://www.w3.org/2003/01/geo/wgs84_pos#",
    "skos": "http://www.w3.org/2004/02/skos/core#"
  },
  "@type": ["dms:HeritageRecord", "schema:Article"],
  "@id": "urn:dms:b3e7c8a1-4d5f-6e7a-8b9c-0d1e2f3a4b5c",
  "dc:identifier": "b3e7c8a1-4d5f-6e7a-8b9c-0d1e2f3a4b5c",
  "title": "Journey to Dzaleka: A Story of Hope",
  "type": "story",
  "description": "An oral history account of a Congolese family's journey from Bukavu to Dzaleka Refugee Camp in 2015.",
  "language": "en",
  "creator": [
    {
      "@type": "foaf:Person",
      "name": "Marie Consolée",
      "role": "narrator"
    },
    {
      "@type": "foaf:Person",
      "name": "Jean-Baptiste Mushimiyimana",
      "role": "interviewer",
      "affiliation": "Dzaleka Digital Heritage Project"
    }
  ],
  "date": {
    "created": "2024-03-15",
    "event_date": "2015-08-22"
  },
  "subject": ["oral history", "displacement", "Congo", "journey", "resilience", "community", "arrival"],
  "location": {
    "@type": "schema:Place",
    "name": "Dzaleka Refugee Camp",
    "area": "Community Center",
    "latitude": -13.7833,
    "longitude": 33.9833
  },
  "format": "text/plain",
  "rights": {
    "license": "CC-BY-NC-4.0",
    "access_level": "public",
    "holder": "Marie Consolée"
  },
  "schema_version": "1.0.0"
}
Key differences from the plain JSON record:
  • @context declares all vocabulary prefix bindings
  • @type is set to both dms:HeritageRecord and the appropriate Schema.org type (schema:Article for a story)
  • @id is a urn:dms: URI derived from the record’s UUID
  • id is preserved as dc:identifier
  • Each creator gets "@type": "foaf:Person"
  • The location object gets "@type": "schema:Place"

Use cases

Library catalogues

Dublin Core and BIBO mappings make DMS records directly importable into library management systems such as DSpace, Omeka, and Koha.

Linked open data portals

Publish a collection.jsonld graph document to a SPARQL endpoint or a static open data portal for query by the wider research community.

Search engine indexing

Schema.org @type values allow Google Knowledge Graph and Bing to index heritage records as structured data, improving discoverability.

Interoperability

Shared vocabulary URIs mean DMS records can be joined with datasets from other institutions that use Dublin Core or FOAF without custom data-mapping work.