innovation in metadata design, implementation & best practices

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: 2006-05-30
Identifier: http://dublincore.org/documents/2006/05/29/dc-rdf/
Replaces: Not applicable
Is Replaced By: Not applicable
Latest Version: http://dublincore.org/documents/dc-rdf/
Status of Document: This is a DCMI Working Draft.
Description of Document: This document provides draft recommendations for expressing Dublin Core metadata using RDF, the Resource Description Framework.

Table of contents

  1. Introduction
  2. Summary of the DCMI abstract model
  3. Summary of the RDF conceptual model
  4. Namespace abbreviations
  5. Representing DCAM constructs using the RDF Model
  6. Using domains and ranges > References> Acknowledgements> Appendix A: Examples * * *

1. Introduction

This document provides draft 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, 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 will allow Dublin Core metadata to be encoded using this specification in any RDF encoding syntax or other RDF representation system, such as RDF databases.

Subject to public review and discussion in the context of DCMI process, this Working Draft is intended eventually to replace two legacy DCMI documents:

  • Expressing Simple Dublin Core in RDF/XML [DCMES-XML], a DCMI Recommendation from July 2002;
  • Expressing Qualified Dublin Core in RDF / XML [DCQ-RDF-XML], a DCMI Proposed Recommendation from May 2002. 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. DCMI is seeking comments from affected communities, and the content of any new DCMI Recommendation will depend on feedback received from these communities.

    2. Summary of the DCMI abstract model

The abstract model of DCMI metadata is defined in the DCMI Abstract Model (DCAM) specification [ABSTRACT-MODEL], and its definition of Dublin Core metadata descriptions can be summarized as follows:

  • A description is made up of one or more statements (about one, and only one, resource) and zero or one resource URI (a URI that identifies the resource being described).

  • Each _statement_instantiates a property/value pair and is made up of a property URI(a URI that identifies a property), zero or one value URI (a URI that identifies a value of the property), zero or one vocabulary encoding scheme URI (a URI that identifies the _class_of the value) and zero or more value representations of the value.

  • The _value representation_may take the form of a value string or a rich representation.

  • Each _value string_is a simple, human-readable string that is a representation of the _resource_that is the value of the property.

  • Each _value string_may have an associated syntax encoding scheme URI that identifies a syntax encoding scheme.

  • Each _value string_may have an associated value string language that is an ISO language tag (e.g. en-GB).

  • Each _rich representation_is some marked-up text, an image, a video, some audio, etc. or some combination thereof that is a representation of the _resource_that is the value of the property.

  • Each value may be the subject of a separate related description.

  • A _description set_is a set of one or more descriptions about one or more resources.

  • A DCMI metadata _record_is a description set that is instantiated according to one of the DCMI expression specifications (XHTML meta tags, XML, RDF/XML, etc.)

3. 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:

  • An RDF graph is a set of RDF triples

  • An RDF triple has three components:

    • an RDF subject, which is an RDF URI reference or a blank RDF node

    • an RDF predicate, which is an RDF URI reference

    • an RDF object, which is an RDF URI reference, a blank RDF node or an RDF literal

  • An RDF literal can be of two kinds:

    • an RDF plain literal is a character string with an optional associated language tag describing the language of the character string

    • an RDF typed literal is a character string with an associated RDF datatype URI. An RDF datatype defines the syntax and semantics of a set of character strings that represent data such as booleans, integers, dates, etc. 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. 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 my 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/.

4. 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/
dcrdf http://purl.org/dc/rdf/
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs http://www.w3.org/2000/01/rdf-schema#

5. Representing DCAM constructs using the RDF Model

This section describes how each of the constructs in the DCAM should be 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].

Descriptions and resources

DCAM descriptions and resources are represented in the following way:

  • A DCAM description is represented using an RDF graph originating from a single RDF subject.
  • A DCAM resourceis represented by the RDF subject at the root of this RDF graph.
  • If a DCAM resource URI is available, it should be used as the RDF URI reference of the RDF subject at the root of the RDF graph. Otherwise, the RDF subject should be a blank RDF node.

Statements, properties and values

A DCAM statement is represented using an RDF triple comprising:

  • an RDF subject that represents the DCAM resource
  • an RDF predicate that is the DCAM property URI
  • an RDF object that represents the DCAM value. This RDF node will be referred to below as the value RDF node. A DCAM statement may also include
  • an additional RDF triple that indicates the type of the value RDF node (see the "Vocabulary encoding scheme URIs" section below). 
  • one or more additional RDF triples that indicate a DCAM value string or rich representation (see the "Value strings" and "Rich representations" sections below).

The following diagram illustrates the main features of the RDF representation.

Example RDF graph
The representation of the fundamental DCAM constructs. The notation "@en" represents an RDF language tag, while "^^ex:subjectEncoding" represents an RDF Datatype.

Value URIs

A DCAM value URI is represented using the RDF URI Reference of the value RDF node.

Vocabulary Encoding Scheme URIs

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

  • an RDF subject that is the value RDF node.

  • an RDF predicate that isthe RDF URI reference rdf:type

  • an RDF object with a corresponding RDF URI Reference being the DCAM vocabulary encoding scheme URI

Value Strings, Value String Languages and Syntax Encoding Scheme URIs

A DCAM value string is represented using an RDF triplecomprising:

  • an RDF subject that is the  value RDF node

  • an RDF predicate that is the RDF URI reference``dcrdf:valueString

  • an RDF object that is an instance of rdfs:Literal (either an RDF plain literal or RDF typed literal), containing the DCAM value string.

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.

RDF shorthand for RDF plain literals and RDF typed literals

As a specific exception to the above representation of DCAM value strings, a DCAM value string may be expressed as an RDF literal in the position of the value RDF node. The following conditions on the DCAM statement need to be met for this to be allowed:

  • There is only one DCAM value string
  • The DCAM Vocabulary Encoding Scheme of the value is an instance of the class rdfs:Datatype or equals the class rdfs:Literal.
  • The DCAM Syntax Encoding Scheme of the DCAM value string is a sub-class of or is the same class as the DCAM Vocabulary Encoding Scheme of the DCAM value.
  • If the DCAM Vocabulary Encoding Scheme is not the class rdfs:Literal, the DCAM value string may not have an associated DCAM value string language.
  • There are no DCAM rich value representations in the DCAM statement 
  • There are no DCAM related descriptions in the DCAM statement.

If the above conditions are met, an RDF literal value can be used as the value RDF node.  Otherwise, a literal value RDF node is NOT allowed.

There are two cases:

  • If the DCAM Vocabulary Encoding Scheme of the DCAM value is the class rdfs:Literal, an RDF plain literal is used. The language tag of this RDF plain literal equals the DCAM value string language, if any.
  • If the DCAM Vocabulary Encoding Scheme of the DCAM value is an instance of the class rdfs:Datatype, an RDF typed literal is used. The RDF Datatype URI of the RDF typed literal equals the DCAM syntax encoding scheme URI.

The following diagram illustrates the first case, using RDF plain literals:

DC-TEXT representation RDF graph
@prefix rdfs: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dc:title )
VocabularyEncodingSchemeURI ( rdfs:Literal )
ValueString ( "Learning Biology"
Language ( "en" )
)
)
)
)
RDF Literal values

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

DC-TEXT representation RDF graph
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dc:date )
VocabularyEncodingSchemeURI ( xsd:date )
ValueString ( "2005-06-10"
SyntaxEncodingSchemeURI ( xsd:date )
)
)
)
)
Typed RDF Literal

Rich representations

A DCAM rich representation is represented using an RDF triple comprising:

  • an RDF subject that is the  value RDF node

  • an RDF predicate that is the URI`rdfs:seeAlso`

  • an RDF object that is either

an RDF typed literal of type rdfs:XMLLiteralcontaining some XML markup that is the DCAM rich representation.

  1. an RDF URI reference that refers to an external resource that is the DCAM rich representation

A DCAM related description is represented using RDF triples originating in the value RDF node. The value RDF node will thus be the root of an RDF graph representing any DCAM statements in the DCAM related description.

Note that there is currently no mechanism in this specification for referencing DCAM related description occurring as RDF triples in a different RDF document/model.

Description sets

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

Records

A DCAM record is an RDF graph that is encoded using any of the recognised RDF encoding syntaxes.

6. Using domains and ranges

RDF supports using "domain" and "range" constraints on RDF properties, for limiting the kinds of resources that a property apply to, and the kinds of resources that may occur as values, respectively. This is not currently part of the DCMI Abstract Model. However, some properties may still come with such constraints, expressed formally in RDF schemas or informally in accompanying documentation. It is strongly recommended that metadata implementors be careful to follow such contraints when they exist, to ensure maximum interoperability. This is even more important in RDF than in other expressions of Dublin Core, as RDF adds a well-defined model for automatic processing of domain and range contraints.

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/2006/05/29/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/>
DC-TEXT
DC-TEXT: A Text Syntax for Dublin Core Metadata
<http://dublincore.org/architecturewiki/DCText/2006-05-24>
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/>

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.
@prefix dc: <http://purl.org/dc/elements/1.1/> .

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

<rdf:Description rdf:about="http://example.org/123">
<dc: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.
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

DescriptionSet (
Description (
ResourceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dc:creator )
VocabularyEncodingSchemeURI ( foaf:Person )
ValueString ( "John Smith" )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:dcrdf="http://purl.org/dc/rdf/">

<rdf:Description rdf:about="http://example.org/123">
<dc:creator>
<foaf:Person>
<dcrdf:valueString>John Smith</dcrdf:valueString>
</foaf:Person>
</dc:creator>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a single language-tagged value string and the vocabulary encoding scheme rdfs:Literal. This example uses the RDF shorthand for plain literals.
@prefix rdfs: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

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

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

</rdf:RDF>
A description with a single statement, which uses a single value string using a syntax encoding scheme that equals the vocabulary encoding scheme. This example uses the RDF shorthand for typed literals.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

DescriptionSet (
Description (
ResoruceURI ( <http://example.org/123> )
Statement (
PropertyURI ( dc:date )
VocabularyEncodingSchemeURI ( xsd:date )
ValueString ( "2005-06-10"
SyntaxEncodingSchemeURI ( xsd:date )
)
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="http://example.org/123">
<dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#date">
2005-06-10</dc:date>
</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.
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ex: <http://example.org/taxonomy/>

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

<rdf:Description rdf:about="http://example.org/123">
<dc:subject>
<ex:ExampleSubjects rdf:about="http://example.org/subject32">
<dcrdf:valueString xml:lang="en">Biology</dcrdf:valueString>
<dcrdf:valueString
rdf:datatype="http://example.org/taxonomy/SubjectEncoding">
EA32
</dcrdf:valueString>
</ex:ExampleSubjects>
</dc:subject>
</rdf:Description>

</rdf:RDF>
A description with a single statement, which uses a single value string, a vocabulary encoding scheme and a value URI, together with a related description of the value. The related description has a single statement, which only has a value URI.
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

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

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

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

</rdf:RDF>
A description with a single statement, which uses a value URI but no resource URI.
@prefix dc: <http://purl.org/dc/elements/1.1/> .

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

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

</rdf:RDF>
A description with a single statement, which uses a value string and a vocabulary encoding scheme, but no value URI. A related description of the value has a single statement, which uses a value URI but no resource URI.
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

DescriptionSet (
Description (
Statement (
PropertyURI ( dc:creator )
VocabularyEncodingSchemeURI ( foaf:Person )
DescriptionRef ( "desc1" )
ValueString ( "John Smith" )
)
)

Description (
DescriptionId ( "desc1" )
Statement (
PropertyURI ( foaf:phone )
ValueURI ( <tel:+358-555-1234567> )
)
)
)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:dcrdf="http://purl.org/dc/rdf/">

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

</rdf:RDF>