Contribute to the DSpace Development Fund

The newly established DSpace Development Fund supports the development of new features prioritized by DSpace Governance. For a list of planned features see the fund wiki page.

The following is an outline of how to represent a DSpace+2.0 model in RDF. It is based on an RDFS Ontology for the proposed DSpace 2.0 Data Model.

Understanding the Syntax

A brief overview of the n3 syntax is provided in an appendix in this document for your convenience.

The Example

The following is an example of a DSpace Item represented in RDF n3 syntax. I will break it up in this Wiki page and describe each resource that is getting defined:

The DSpace Item

The DSpace Item is not only its Metadata, but also any relationships with other DSpace Objects that are encountered in the Data Model. For DSpace+2.0 we have the (Container, Item, Manifestation (replacing Bundle), ContentFile (replacing Bitstream) and Format (replacing BitstreamFormat). Below are statements describing the initial DSpace Item.

 <http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> a ds:Item;
    dc:subject
        "classification",
        "support vector machines",
        "transductive learning",
        "web taxonomy integration";
    dc:title
       "On Web Taxonomy Integration";
    dc:type
       "Article";
    dcterm:abstract
        "We address the problem of integrating objects from a...";
    dcterm:available
       "2003-12-13T19:41:16Z";
    dcterm:contributor
       "Lee, Wee Sun", "Zhang, Dell";
    dcterm:dateAccepted
       "2003-12-13T19:41:16Z";
    dcterm:description
       "Singapore-MIT Alliance (SMA)";
    dcterm:identifier
       "info:hdl/1721.1/3867"^^http://purl.org/dspace/model#handle,
       "urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695"^^http://purl.org/dspace/model#uuid;
    ds:isPartOfCollection
       <http://example.com/resource/urn:uuid:a6bfb01f-07b9-4e4a-8301-3da406c9a19e>;
    dcterm:issued
       "2004-01";
    dcterm:language
       "en_US";
    ds:hasManifestation
       <http://example.com/resource/urn:uuid:16f880a7-85e8-4642-b21d-96c68ba03ab9>;
    dcterm:isPartOf <http://example.com/resource/cec8fd77-4920-49c8-b20c-6c83083b1e6e>.

The DSpace Manifestation

I've given this Item one Manifestation, it represents a copy hypothetically provided by MIT Archives.

 <http://example.com/resource/urn:uuid:16f880a7-85e8-4642-b21d-96c68ba03ab9> a ds:Manifestation;
    dc:title
       "MIT Archives Copy"
    ds:isPartOfItem 
       <http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695>;
    ds:hasContentFile
       <http://example.com/resource/urn:uuid:69542897-a136-466d-ae94-4f496a3ec6c8>.
 

The DSpace Content File

 <http://example.com/resource/urn:uuid:69542897-a136-466d-ae94-4f496a3ec6c8> a ds:ContentFile;
    dc:title
       "CS017.pdf";
    dcterm:format
       <font color="orange"><http://example.com/resource/urn:uuid:ce3fe0fe-b8ab-4a62-8cd6-8f6baaf7e09a>;
    ds:messageDigest
       "80ff315956bfac4ff83889fa40fc114e";
    ds:messageDigestAlgorithm
       "MD5";
    ds:size
       "106014";
    ds:isPartOfManifestation
       <http://example.com/resource/urn:uuid:16f880a7-85e8-4642-b21d-96c68ba03ab9>;
    ds:isPartOfItem 
        <http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695>.

The DSpace Content File Format

 <font color="orange"><http://example.com/resource/urn:uuid:ce3fe0fe-b8ab-4a62-8cd6-8f6baaf7e09a> a ds:Format;
    dc:title
       "Adobe PDF";
    dc:description
       "Adobe Portable Document Format";
    ds:support
       "Supported";
    ds:mimetype
       "application/pdf".

The DSpace Collection

For completeness, we will end with an expression of the parent DSpace Collection. It is assumed you can see how DSpace Communities can also be described this way as well.

 <http://example.com/resource/urn:uuid:a6bfb01f-07b9-4e4a-8301-3da406c9a19e> a ds:Collection;
    dc:creator
       "DSpace at MIT";
    dc:identifier
       "info:hdl/1721.1/3651"^^http://purl.org/dspace/model#handle,
       "urn:uuid:a6bfb01f-07b9-4e4a-8301-3da406c9a19e"^^http://purl.org/dspace/model#uuid;
    dc:title
       "Computer Science (CS)";
    dcterm:abstract
        "The SMA Computer Science program enables ...";
    dcterm:modified
       "2008-09-06";
    ds:logo
      <http://example.com/resource/urn:uuid:84e1117a-2692-4ef9-8860-290cc333eec7>;
    ds:depositLicense
       <http://example.com/resource/urn:uuid:df9e2f50-ebc1-4dcc-9b8b-13cb1e6b38c3>;
    ds:isPartOfCommunity
       <http://example.com/resource/urn:uuid:68ca3ed8-de70-45bd-8884-752c89f05571>.
 
 # This is a hypothetical "LogoFile" Resource for the collection. 
 # It represents a resource in the Assetstore that can be retrieved from te same URL.
<http://example.com/resource/urn:uuid:84e1117a-2692-4ef9-8860-290cc333eec7> a ds:LogoFile;
    dc:title
       "logo.jpg";
    dcterm:format
       <http://example.com/resource/urn:uuid:f8f741b8-79e1-4893-ade6-c94c400e5ec4>;
    ds:messageDigest
       "80ff315956bfac4ff83889fa40fc114e";
    ds:messageDigestAlgorithm
       "MD5";
    ds:size
       "999999";
 
 # This is a hypothetical "DepositLicenseFile" Resource for the collection. 
 # It represents a resource in the Assetstore that can be retrieved from te same URL.
 <http://example.com/resource/urn:uuid:df9e2f50-ebc1-4dcc-9b8b-13cb1e6b38c3> a ds:DepositLicenseFile;
    dc:title
       "deposit-license.txt";
    dcterm:format
       <http://example.com/resource/urn:uuid:068936ad-7376-44d0-b0f1-889f8d3e7b29>;
    ds:messageDigest
       "80ff315956bfac4ff83889fa40fc114e";
    ds:messageDigestAlgorithm
       "MD5";
    ds:size
       "999999";

Representing non-DSpace resources in RDF

There is room for the expression of Resources in the DSpace+2.0 metadata that are not traditional DSpace Objects. For instance, as an example the above Item may be paart of a larger work that is not represented as a DSpace Collection. Given that any statements may be added to the DSpace MetadataService regardless of the DSpace Resource they are associated with, we can now have further associations expressed ad searchable/discoverable.

 
 <http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> a ds:Item;
    dc:title
       "On Web Taxonomy Integration";
    dc:type
       "Article";
    dcterm:creator
       <http://example.com/resource/dad9eb87-1234-78c4-e89f-6c58693f1e8w>.
    dcterm:isPartOf 
       <http://example.com/resource/cec8fd77-4920-49c8-b20c-6c83083b1e6e>.
    ...
 
 
 <http://example.com/resource/cec8fd77-4920-49c8-b20c-6c83083b1e6e> a frbr:Work;
   dc:title
      "Some Very Interesting Work";
   ...
 
 <http://example.com/resource/dad9eb87-1234-78c4-e89f-6c58693f1e8w> a foaf:Person;
      foaf:name
         "David Banner";
      foaf:homepage 
         <http://www.davidbanner.com>;
      ...

Appendix 1: Understanding n3 RDF syntax

The syntax provided is a simple representation of RDF. The following is a simple guide to assist you in understanding it.

Prefixes

Prefixes are much like xmlns declarations in XML, they provide a mechanism to abbreviate the syntax

@prefix dc: <http://purl.org/dc/elements/1.1/>.

The above is basically equivalent to

xmlns:dc="http://purl.org/dc/elements/1.1/"

found in XML

Subjects Predicates and Objects

An RDF statement is comprised of three fields, (Unlike a DSpace metadata statement which is primarily two). But the analogy will become clearer shortly. The first field is the "Subject", the second the "Predicate" and the third is the "Object". The closest analogy for DSpace is that the "Subject" is a DSpace Item (/handle/1234.5/67890), the predicate is a metadata field (dc:title) and the Object is the field value ("On Web Taxonomy Integration"). The luxury we get from using RDF in this situation really has to do with the capability of the "Object" of any statement being either a Literal String ("Joe Cool") or a reference to another RDF resources URI <scheme:rest-of-uri#anchor>. This allows construction of graphs of related statements to be associated with each other.

 @prefix ds: <http://purl.org/dspace/model#>.
 
 <http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> a ds:Item.

The above represents a declaration that

<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695>

is "a" "ds:Item". The "a" is shorthand for

<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>

. It could be expressed equivalently as:

 @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
 @prefix ds: <http://purl.org/dspace/model#>.
 
 <http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> rdf:type ds:Item.

Statements with the same subject are often grouped together, so

@prefix ds: <http://purl.org/dspace/model#>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.

<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> a ds:Item.
<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> dc:title "On Web Taxonomy Integration".
<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> dc:subject "classification".
<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> dc:subject "support vector machines".
<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> dc:subject "transductive learning".
<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> dc:subject "web taxonomy integration".

Is equivalent to:

@prefix ds: <http://purl.org/dspace/model#>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.

<http://example.com/resource/urn:uuid:ad88ad75-5115-4222-9fb1-9758ed0ee695> a ds:Item;
    dc:title 
        "On Web Taxonomy Integration";
    dc:subject
        "classification",
        "support vector machines",
        "transductive learning";
        "web taxonomy integration".

References

1. "Notation3 (N3) A readable RDF syntax," http://www.w3.org/DesignIssues/Notation3.

2. "Notation3 - Wikipedia, the free encyclopedia," http://en.wikipedia.org/wiki/Notation_3.

3. "Notation3: A Rough Guide to N3," http://infomesh.net/2002/notation3/.

4. "Primer - Getting into the semantic web and RDF using N3," http://www.w3.org/2000/10/swap/Primer.

5. "Semantic Web - N3 Rules (1)," http://dig.csail.mit.edu/2007/Talks/0110-rules-tbl/#(1).

Appendix 2: Linked Open Data

Linked Open Data is most simply described as making sure your references are de-referenceable to another RDF representation of the referenced Resource. It is accomplished above by using fully qualified http URLS, but this is not necessarily a "requirement". De-referencable URI's must be resolvable wither in the currently addressed resource, this works with Relative URI as well as Absolute URI.

References

1. "How to publish Linked Data on the Web," http://www4.wiwiss.fu-berlin.de/bizer/pub/LinkedDataTutorial/.

2. "Linked Data - Connect Distributed Data across the Web," http://linkeddata.org/.

3. "Linked Data - Design Issues," http://www.w3.org/DesignIssues/LinkedData.html.

4. "Linked Data - Wikipedia, the free encyclopedia," http://en.wikipedia.org/wiki/Linked_Data.

5. "Linked Data Blog Aggregator," http://planet.linkeddata.org/.

6. "LinkedData - ESW Wiki," http://esw.w3.org/topic/LinkedData.

7. "Main+Page - linked data," http://community.linkeddata.org/MediaWiki/index.php?Main+Page.

8. "SweoIG/TaskForces/CommunityProjects/LinkingOpenData - ESW Wiki," http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData.