Dublin Core in RDF Draft

Status

This draft is an experimental rewrite of Expressing Qualified Dublin Core in RDF/Draft.

Intro and Context

@@ by danbri...

Basic Dublin Core

The Dublin Core Metadata Intitiative (DCMI) has defined a number of Dublin Core terms. Specifically, the Dublin Core Metadata Element Set [DCES] lists some of the basic Dublin Core terms.

We encode metadata elements by making the first letter lower case, and appending them to their specified "namespace". [DCNS] defines the namespaces of Dublin Core terms.

The simplest form of Dublin Core is to use these elements to form basic statements about a resource. For example:

<http://www.w3.org/> <http://purl.org/dc/elements/1.1/title> "World Wide Web Consortium (W3C)" .
<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://www.w3.org/">
    <dc:title>World Wide Web Consortium (W3C)</dc:title>
  </rdf:Description>
</rdf:RDF>

Note: The examples in this spec describing RDF statements are in the basic N-Triples format [NT], which shows the subject, predicate and object of an RDF statement (in that order). Sometimes, they will be followed by an RDF/XML [RDF] version of the same RDF.

The DC element (http://purl.org/dc/elements/1.1/title in this example) simply connects between the subject and object of the RDF statement. The object can be a literal or another resource. The predicate can be replaced with the URI of any Dublin Core element.

Basic Qualified Dublin Core

There are two basic classes of Dublin Core Qualifiers: Element Refinement and Encoding Scheme. How to represent both in RDF will be explained below

Element Refinement

From the Dublin Core Qualifiers specification:

These qualifiers make the meaning of an element narrower or more specific. A refined element shares the meaning of the unqualified element, but with a more restricted scope. A client that does not understand a specific element refinement term should be able to ignore the qualifier and treat the metadata value as if it were an unqualified (broader) element. The definitions of element refinement terms for qualifiers must be publicly available.

The semantics of Element Refinement can be represented in RDF Schema [RDFS] using the rdfs:subPropertyOf property. For example, the Dublin Core Qualifier abstract is a refinement of the Dublin Core Element description. This relationship could be written in RDF as:

<http://purl.org/dc/terms/abstract> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://purl.org/dc/elements/1.1/description> .
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <rdf:Description rdf:about="http://purl.org/dc/terms/abstract">
    <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/elements/1.1/description"/>
  </rdf:Description>
</rdf:RDF>

Other communities may use rdfs:subPropertyOf to declare their terms as refinements of Dublin Core Elements in the same way. RDF Schema-aware processors can use this information to infer that (for this example) abstracts of a resource are also descriptions. In RDF, the above subPropertyOf information and:

_:page <http://purl.org/dc/terms/abstract> "This is a simple paper that does not say anything." .

would allow you to infer:

_:page <http://purl.org/dc/elements/1.1/description> "This is a simple paper that does not say anything." .

Obviously the same relationship would hold true were other Dublin Core Elements chosen. An rdfs:subProperty can even be defined for third-party vocabularies. In fact, we recommend third-part vocabularies define such relations where appropriate to increase compatibility with Dublin Core-aware processors.

Encoding Schemes

From the Dublin Core Qualifiers specification:

These qualifiers identify schemes that aid in the interpretation of an element value. These schemes include controlled vocabularies and formal notations or parsing rules. A value expressed using an encoding scheme will thus be a token selected from a controlled vocabulary (e.g., a term from a classification system or set of subject headings) or a string formatted in accordance with a formal notation (e.g., "2000-01-01" as the standard expression of a date). If an encoding scheme is not understood by a client or agent, the value may still be useful to a human reader. The definitive description of an encoding scheme for qualifiers must be clearly identified and available for public use.

Encoding Schemes are represented in RDF using a new node to represent the instance of a value in a defined encoding scheme. The node has an rdf:type value pointing to the URI of the Encoding Scheme. an rdf:value pointing to the specific value in the scheme, and an option rdfs:label or dc:title. For example:

_:page <http://purl.org/dc/elements/1.1/subject> _:a .
_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/MESH> .
_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "D08.586.682.075.400" .
_:a <http://www.w3.org/2000/01/rdf-schema#label> "Formate Dehydrogenase" .
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:dcq="http://purl.org/dc/terms/">   
<rdf:Description>
 <dc:subject>
   <dcq:MESH>
     <rdf:value>D08.586.682.075.400</rdf:value>
     <rdfs:label>Formate Dehydrogenase</rdfs:label>
   </dcq:MESH>
 </dc:subject>
</rdf:Description>
</rdf:RDF>

From these statements we can infer the basic Dublin Core statement:

_:page <http://purl.org/dc/elements/1.1/subject> "D08.586.682.075.400" .

Languages can also be encoded using this system:

_:page <http://purl.org/dc/elements/1.1/language> _:a .
_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/RFC1766> .
_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "EN" .
_:a <http://www.w3.org/2000/01/rdf-schema#label> "English" .
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:dcq="http://purl.org/dc/terms/">   
<rdf:Description>
 <dc:language>
   <dcq:RFC1766>
     <rdf:value>EN</rdf:value>
     <rdfs:label>English</rdfs:label>
   </dcq:RFC1766>
 </dc:language>
</rdf:Description>
</rdf:RDF>

Encoding Schemes can be nested, as seen in this example:

_:page <http://purl.org/dc/elements/1.1/coverage> _:a .
_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Point> .
_:a <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> _:b .
_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/DCSV> .
_:b <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> "name=Perth, W.A.; east=115.85717; north=-31.95301" .
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:dcq="http://purl.org/dc/terms/">      
<rdf:Description>
<dc:coverage>
  <dcq:Point>
    <rdf:value>
       <dcq:DCSV>
       <rdf:value>name=Perth, W.A.; east=115.85717; north=-31.95301</rdf:value>
       </dcq:DCSV>
    </rdf:value>
  </dcq:Point>
</dc:coverage> 
</rdf:Description>
</rdf:RDF>

Note on dcq:URI

While there is a URI Dublin Core Qualifier, it is not necessary in RDF, since RDF uses URIs by default. Simply identify the URI as one in the RDF syntax (URIs surrounded by < and > in N-Triples, rdf:resource in RDF/XML) and no more is necessary. Use of the dcq:URI scheme in RDF is not recommended.

Dublin Core Types

Dublin Core types, as defined in the DCMI Type Vocabulary function the same as RDF Classes, and start with a capital letter. An example:

<http://dublincore.org/images/header/logo_sm.gif> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/dcmitype/Image> .

Relations Between RDF Terms and Dublin Core Terms

There are several obvious relationships between RDF/RDF Schema terms and Dublin Core Terms. For the benefit of RDF processors and metadata developers we list these relations here:

<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://purl.org/dc/elements/1.1/title> .
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://purl.org/dc/elements/1.1/type> .
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://purl.org/dc/elements/1.1/relation> .
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://purl.org/dc/elements/1.1/relation> .
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://purl.org/dc/elements/1.1/description> .

@@throw this into some RDF schema somewhere

References

[DCES]
Dublin Core Metadata Intitiative. Dublin Core Metadata Element Set, Version 1.1: Reference Description, 1999-07-02.
[DCNS]
Dublin Core Metadata Intitiative. Namespace Policy for the Dublin Core Metadata Initiative (DCMI), 2001-06-29.
[NT]
World Wide Web Consortium. N-Triples, 2001-09-06.
[RDF]
World Wide Web Consortium. Resource Description Framework (RDF) Model and Syntax Specification, 1999-02-22.
World Wide Web Consortium. Refactoring RDF/XML Syntax, 2001-09-06.
[RDFS]
World Wide Web Consortium. Resource Description Framework (RDF) Schema Specification, 2000-03-27.

Part of LogicError. Powered by Blogspace, an Aaron Swartz project. Email the webmaster with problems.