Dublin Core (Registered Trademark) Metadata Initiative logo and catchphrase: 
Making it easier to find information
Jump to main content: This Page
Jump to site map: New Page
Dublin Core (Registered Trademark) logo in banner
 
 

 

Expressing Dublin Core metadata using the Resource Description Framework (RDF)

Creator: Mikael Nilsson
KMR Group, NADA, KTH (Royal Institute of Technology), Sweden
Andy Powell
Eduserv Foundation, UK
Pete Johnston
Eduserv Foundation, UK
Ambjörn Naeve
KMR Group, NADA, KTH (Royal Institute of Technology), Sweden
Date Issued: 2008-01-14
Identifier: http://dublincore.org/documents/2008/01/14/dc-rdf/
Replaces: http://dublincore.org/documents/2007/06/04/dc-rdf/
Replaces: http://dublincore.org/documents/2002/07/31/dcmes-xml/
Replaces: http://dublincore.org/documents/2002/05/15/dcq-rdf-xml/
Latest Version: http://dublincore.org/documents/dc-rdf/
Status of Document: This is a DCMI Recommendation.
Description of Document: This document provides recommendations for expressing Dublin Core metadata using RDF, the Resource Description Framework.

Table of contents

  1. Introduction
  2. Summary of the RDF conceptual model
  3. Namespace abbreviations
  4. Representing DCAM constructs using the RDF Model
  5. Some notes on semantics
References
Acknowledgements
Appendix A: Examples

1. Introduction

This document provides recommendations for expressing DC metadata using RDF, the Resource Description Framework. It does this by describing how the features of the DCMI Abstract Model [ABSTRACT-MODEL] are represented using the RDF model (or abstract syntax), as defined by the RDF Concepts and Abstract Syntax specification [RDF-CONCEPTS]. It does not rely on any specific RDF syntax encoding, though examples using the RDF/XML Syntax Specification [RDF-SYNTAX-GRAMMAR] are provided in Appendix A. This allows Dublin Core metadata to be encoded using this specification in any RDF encoding syntax or other RDF representation system, such as RDF databases.

This Recommendation replaces the following DCMI document:

This Recommendation makes the following DCMI document obsolete (while not contradicting it):

The document "Notes on DCMI specifications for Dublin Core metadata in RDF" [DC-RDF-NOTES] describes in more detail how this draft relates to the earlier specifications.

Many of the examples in this document make use of DCMI metadata terms [DCMI-TERMS]. See also the DCMI RDF Schemas for the DCMI terms [DCMI-SCHEMAS].

2. Summary of the RDF conceptual model

The RDF conceptual model is specified in the RDF Concepts and Abstract Syntax specification [RDF-CONCEPTS]. It is a relatively simple model, consisting of the following fundamentals:
These RDF triples are connected into RDF graphs, so that a non-literal RDF object of one RDF triple may be the RDF subject of another triple.

We will use diagrams to illustrate RDF graphs (for namespace abbreviations, see Section 3). A simple triple may look like in the following figure:

RDF triple example
The structure of an RDF triple. In this figure, the RDF object is an RDF typed literal

While a graph consisting of three triples may look like the following:

An RDF graph
An RDF graph consisting of three triples, connected via a blank RDF node.

For further information on RDF, see the RDF Concepts and Abstract Syntax specification [RDF-CONCEPTS], the RDF Vocabulary Description Language [RDF-SCHEMA], and http://www.w3.org/RDF/.

3. Namespace abbreviations

The following namespace abbreviations will be used in this document:

Namespace abbreviation Full namespace URI
dc http://purl.org/dc/elements/1.1/
dcterms http://purl.org/dc/terms/
dcam http://purl.org/dc/dcam/
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
xsd
http://www.w3.org/2001/XMLSchema#
ex http://www.example.org/ns# (an example namespace)

See also the DCMI RDF Schemas for the DCMI terms [DCMI-SCHEMAS].

4. Representing DCAM constructs using the RDF Model

This section describes how each of the constructs in the DCAM are represented in RDF. The RDF notions used here are defined in the RDF Concepts and Abstract Syntax specification [RDF-CONCEPTS] and the RDF Vocabulary Description Language [RDF-SCHEMA].

4.1 Descriptions and resources

DCAM descriptions and resources are represented in the following way:

4.2 Statements, properties and values

A DCAM statement is represented using an RDF triple comprising:

4.3 Non-literal value surrogates

When the DCAM value surrogate is a non-literal value surrogate, the value RDF node is an RDF URI refence or a blank RDF node, with the characteristics given below.

The following diagram illustrates the main features of the RDF representation of non-literal value surrogates.

DC-TEXT representation RDF graph
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex: <http://www.example.org/ns#> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:subject )
ValueURI ( <http://example.org/subject32> )
VocabularyEncodingSchemeURI ( ex:ExampleSubjects )
ValueString ( "Biology"
Language ( "en" )
)
ValueString ( "EA32"
syntaxEncodingSchemeURI ( ex:SubjectEncoding )
)
)
)
)
Example RDF graph
The representation of the DCAM constructs in the case of a non-literal value surrogate.
The notation "@en" represents an RDF language tag, while "^^ex:SubjectEncoding" represents an RDF Datatype.

4.4 Value URIs

A DCAM value URI is represented using the RDF URI Reference of the value RDF node. If no value URI is given, the value RDF node is a blank node.

4.5 Vocabulary Encoding Scheme URIs

A DCAM vocabulary encoding scheme URI is represented using an RDF triple comprising:

4.6 Value Strings, Value String Languages and Syntax Encoding Scheme URIs

A DCAM value string is represented using an RDF triple comprising:

A DCAM value string language is represented using a language tag associated with a RDF plain literal occurring as the RDF object of this RDF triple. The language tag is constructed as defined by RFC-3066, normalized to lowercase.

A DCAM syntax encoding scheme URI is represented using the RDF datatype URI associated with a RDF typed literal occurring as the RDF object of this RDF triple.

4.7 Literal value surrogates

When the DCAM value surrogate is a literal value surrogate, the value RDF node is an RDF literal node, with exactly the same chararacteristics as in the case of DCAM value strings above.

The following diagrams illustrate the main features of the RDF representation of literal value surrogates.

DC-TEXT representation RDF graph
@prefix dcterms: <http://purl.org/dc/terms/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:title )
LiteralValueString ( "Learning Biology"
Language ( "en" )
)
)
)
)
RDF Literal values
The representation of the DCAM constructs in the case of a literal value surrogate with a language tag.
The notation "@en" represents an RDF language tag.

The following diagram illustrates the second case, using RDF typed literals:

DC-TEXT representation RDF graph
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ex: <http://example.org/ns#> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/person123> )
Statement (
PropertyURI ( ex:age )
LiteralValueString ( "43"
SyntaxEncodingSchemeURI ( xsd:int )
)
)
)
)
Typed RDF Literal
The representation of the DCAM constructs in the case of a literal value surrogate with a Syntax Encoding Scheme URI.
The notation
"^^xsd:int" represents an RDF Datatype.

4.8 Description sets

A DCAM description set is represented as an RDF graph that includes one or more DCAM descriptions as described above.

4.9 Describing values

A DCAM value can be further described in a separate DCAM description within the same DCAM description set. This is represented in RDF by letting the value RDF node be the root of an RDF graph representing any DCAM statements in the DCAM description of the value. Thus, the value RDF node will be the RDF subject of a set of triples representing the DCAM description of the value.

5. Some notes on semantics

5.1 RDF semantics and the DCMI Abstract Model

The RDF expression of the DCMI Abstract Model has a special status among the DCMI encoding specifications. As the semantics of the notions DCMI Abstract Model is based on the semantics of the corresponding notions in RDF (as defined by [RDF-SEMANTICS]), it is of fundamental importance that the RDF expression preserves any semantics of the DCAM. Also, any valid inferences that can be made using RDF semantics need to be valid when interpreted in terms of the DCMI Abstract Model. These requirements have not yet been formalized, but are thought to be reasonable and relatively straightforward. Among other things, formulating them would require defining a reverse mapping from RDF to the DCMI Abstract Model.

5.2 Value Classes

The class or type of a value can be inferred in several ways:

It is recommended that RDF applications use explicit rdf:type triples, even if that means creating a separate DCAM description of the value.

The property dcterms:type has semantics very similar to rdf:type. At the time of writing, the precise relationship between those properties remains undecided.
It is recommended that RDF applications implementing this specification primarily use and understand rdf:type in place of dcterms:type when expressing Dublin Core metadata in RDF, as most RDF processors come with built-in knowledge of rdf:type.

References

ABSTRACT-MODEL
DCMI Abstract Model
<http://dublincore.org/documents/abstract-model/>
DC-RDF-NOTES
Notes on DCMI specifications for Dublin Core metadata in RDF
<http://dublincore.org/documents/2008/01/14/dc-rdf-notes/>
DCMES-XML
Expressing Simple Dublin Core in RDF/XML
<http://dublincore.org/documents/dcmes-xml/>
DCQ-RDF-XML
Expressing Qualified Dublin Core in RDF / XML
<http://dublincore.org/documents/dcq-rdf-xml/>
DCMI-TERMS
DCMI Metadata Terms
<http://dublincore.org/documents/dcmi-terms/>
DCMI-SCHEMAS
DCMI term declarations represented in RDF schema language
<http://dublincore.org/schemas/rdfs/>
DC-TEXT
DC-TEXT: A Text Syntax for Dublin Core Metadata
<http://dublincore.org/documents/dc-text/>
RDF-CONCEPTS
Resource Description Framework (RDF): Concepts and Abstract Syntax
<http://www.w3.org/TR/rdf-concepts/>
RDF-SCHEMA
RDF Vocabulary Description Language 1.0: RDF Schema
<http://www.w3.org/TR/rdf-schema/>
RDF-VALIDATOR
W3C RDF Validation Service
<http://www.w3.org/RDF/Validator/>
RDF-SYNTAX-GRAMMAR
RDF/XML Syntax Specification (Revised)
<http://www.w3.org/TR/rdf-syntax-grammar/>
RDF-SEMANTICS
RDF Semantics
<http://www.w3.org/TR/rdf-mt/>

Acknowledgements

Thanks to Tom Baker, the members of the DC Usage Board and the members of the DC Architecture Working Group for their comments on previous versions of this document.

Appendix A: Examples

The following examples use the DC-TEXT syntax [DC-TEXT] for describing examples of Dublin Core metadata. The corresponding RDF graph is then presented, using the RDF/XML syntax [RDF-SYNTAX-GRAMMAR]. Familiarity with the "striped" RDF/XML syntax is assumed. The W3C RDF Validator [RDF-VALIDATOR] service may be used to convert these RDF/XML samples to triples and graphs. 

Description DC-TEXT representation RDF/XML representation
A description with a single statement, which uses a value URI to identify the value.

"The resource http://example.org/123 has the subject identified by the URI http://example.org/taxonomy/D003.53."
@prefix dcterms: <http://purl.org/dc/terms/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:subject )
ValueURI ( <http://example.org/taxonomy/D003.53> )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/">

<rdf:Description rdf:about="http://example.org/123">
<dcterms:subject rdf:resource="http://example.org/taxonomy/D003.53"/>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a single value string and a vocabulary encoding scheme to describe the value.

"The resource http://example.org/123 has the subject named 'Ornitology' from the Vocabulary Encoding Scheme http://example.org/taxonomy/MyVocab"
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex: <http://example.org/taxonomy/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:subject )
VocabularyEncodingSchemeURI ( ex:MyVocab )
ValueString ( "Ornitology" )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:ex="http://example.org/taxonomy/"
xmlns:dcam="http://purl.org/dc/dcam/">

<rdf:Description rdf:about="http://example.org/123">
<dcterms:subject>
<rdf:Description>
<dcam:memberOf rdf:resource="http://example.org/taxonomy/MyVocab"/>
<rdf:value>Ornitology</rdf:value>
</rdf:Description>
</dcterms:subject>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a language-tagged literal value.

"The resource http://example.org/123 has the title 'Learning Biology' in english"
@prefix dcterms: <http://purl.org/dc/terms/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:title )
LiteralValueString ( "Learning Biology"
Language ( "en" )
)
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/">

<rdf:Description rdf:about="http://example.org/123">
<dcterms:title xml:lang="en">Learning Biology</dcterms:title>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a literal value with a Syntax encoding scheme.

"The resource http://example.org/person123 has the an age of 43"
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex: <http://example.org/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/person123> )
Statement (
PropertyURI ( ex:age )
LiteralValueString ( "43"
SyntaxEncodingSchemeURI ( xsd:int )
)
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:ex="http://example.org/ns#">

<rdf:Description rdf:about="http://example.org/person123">
<ex:age rdf:datatype="http://www.w3.org/2001/XMLSchema#int">
43</ex:age>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses two value strings, one language tagged and one using a syntax encoding scheme, a vocabulary encoding scheme for the value and a value URI identifying the value.

"The resource http://example.org/123 has the subject from the Vocabulary Encoding Scheme http://example.org/taxonomy/MyVocab named 'Biology' in English and 'Biologi' in Swedish, which can be represented using the string "EA32" according to the Syntax Encoding Scheme http://example.org/taxonomy/SubjectEncoding, and which is idenfified by the URI http://example.org/subject32"
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex: <http://example.org/taxonomy/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:subject )
ValueURI ( <http://example.org/subject32> )
VocabularyEncodingSchemeURI ( ex:ExampleSubjects )
ValueString ( "Biology"
Language ( "en" )
)
ValueString ( "Biologi"
Language ( "sv" )
)
ValueString ( "EA32"
SyntaxEncodingSchemeURI ( ex:SubjectEncoding )
)
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:ex="http://example.org/taxonomy/"
xmlns:dcam="http://purl.org/dc/dcam/">

<rdf:Description rdf:about="http://example.org/123">
<dcterms:subject>
<rdf:Description rdf:about="http://example.org/subject32">
<dcam:memberOf
rdf:resource="http://example.org/taxonomy/ExampleSubjects"/>
<rdf:value xml:lang="en">Biology</rdf:value>
<rdf:value xml:lang="sv">Biologi</rdf:value>
<rdf:value
rdf:datatype="http://example.org/taxonomy/SubjectEncoding">
EA32</rdf:value>
</rdf:Description>
</dcterms:subject>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a single value string and a value URI, together with a description of the value. The description of the value has two statements, each of which only has a value URI.

"The resource http://example.org/123 has the creator identified by http://example.org/person45, represented by the string "John Smith". The resource http://example.org/person45 is a person who has the phone number identified by tel:+358-555-1234567 (see RFC 3966)."
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dcterms:creator )
ValueURI ( <http://example.org/person45> )
ValueString ( "John Smith" )
)
)

Description (
ResourceURI ( <http://example.org/person45> )
Statement (
PropertyURI ( foaf:phone )
ValueURI ( <tel:+358-555-1234567> )
)
Statement (
PropertyURI ( dcterms:type )
ValueURI ( foaf:Person )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/">

<rdf:Description rdf:about="http://example.org/123">
<dcterms:creator>
<foaf:Person rdf:about="http://example.org/person45">
<rdf:value>John Smith</rdf:value>
<foaf:phone rdf:resource="tel:+358-555-1234567"/>
</foaf:Person>
</dcterms:creator>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a value URI but no described resource URI.

"The described resource has the subject identified by the URI http://example.org/taxonomy/D003.53."
@prefix dcterms: <http://purl.org/dc/terms/> .

DescriptionSet (
Description (
Statement (
PropertyURI ( dcterms:subject )
ValueURI ( <http://example.org/taxonomy/D003.53> )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/">

<rdf:Description>
<dcterms:subject rdf:resource="http://example.org/taxonomy/D003.53"/>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a value string, but no value URI. The description of the value has no described resource URI, but has two statements, both of which use a value URI.

"The resource http://example.org/123 has a creator represented by the string "John Smith". The creator is a person who has the phone number identified by tel:+358-555-1234567 (see RFC 3966)."
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

DescriptionSet (
Description (
Statement (
PropertyURI ( dcterms:creator )
ValueId ( "john" )
ValueString ( "John Smith" )
)
)

Description (
ResourceId ( "john" )
Statement (
PropertyURI ( foaf:phone )
ValueURI ( <tel:+358-555-1234567> )
)
Statement (
PropertyURI ( dcterms:type )
ValueURI ( foaf:Person )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"

<rdf:Description>
<dcterms:creator>
<foaf:Person>
<rdf:value>John Smith</rdf:value>
<foaf:phone rdf:resource="tel:+358-555-1234567"/>
</foaf:Person>
</dcterms:creator>
</rdf:Description>

</rdf:RDF>
Errata
2010-06-21. In Appendix A, fifth example, added missing dot after @prefix ex: declaration in DC-TEXT example. In sixth example, added closing bracket to rdf:RDF element.

Copyright © 1995-2014 DCMI. All Rights Reserved.