Changeset

This Version
http://purl.org/vocab/changeset/schema-20060321 [HTML] [RDF]
Latest Version
http://purl.org/vocab/changeset/schema#
Previous Version
http://purl.org/vocab/changeset/schema-20051214
Authors
Sam Tunnicliffe
Ian Davis <http://purl.org/NET/iand>

Copyright © 2005 Talis Information Ltd.

Table of Contents

Introduction

This vocabulary defines a set of terms for describing changes to resource descriptions.

The vocabulary introduces the notion of a ChangeSet which encapsulates the delta between two versions of a resource description. In this context a resource description is the set of triples that in some way comprise a description of a resource. The delta is represented by two sets of triples: additions and removals. A ChangeSet can be used to modify a resource description by first removing all triples from the description that are in the removals set and adding the triples in the additions set.

Changes From Previous Version

Namespace

The URI for this vocabulary is

http://purl.org/vocab/changeset/schema#

When used in XML documents the suggested prefix is cs

Each class or property in the vocabulary has a URI constructed by appending a term name to the vocabulary URI. For example:

http://purl.org/vocab/changeset/schema#statement
http://purl.org/vocab/changeset/schema#ChangeSet

The term name for a class always starts with an uppercase character. Where the term name is comprised of multiple concatenated words, the leading character of each word will be an uppercase character. For example:

ChangeSet

The term name for a property always starts with an lowercase character. Where the term name is comprised of multiple concatenated words, the leading character of the second and each subsequent word will be an uppercase character. For example:

statement
addition

Summary of Terms

This vocabulary defines one class and 8 properties .

Term NameTypeDefinition
ChangeSetclassThe encapsulation of a delta between two versions of a resource description
additionpropertya triple to be added to the resource description
changeReasonpropertya short, human readable description of the purpose for the changeset
createdDatepropertythe date that the changeset was created
creatorNamepropertythe name of the entity responsible for creating the changeset
precedingChangeSetpropertythe changeset that immediately precedes this one
removalpropertya triple to be removed from the resource description
statementpropertya triple included in this set of changes
subjectOfChangepropertythe resource to which this set of changes applies

Vocabulary Classes

Class: ChangeSet

Definition: The encapsulation of a delta between two versions of a resource description

URI:http://purl.org/vocab/changeset/schema#ChangeSet
Label:ChangeSet
Subclass of(composite term, see schema)
Paraphrase (experimental) A cs:ChangeSet is something that, amongst other things, something that, amongst other things, is a has at least 1 cs:statement property, has no more than 1 cs:previousChangeSet property, has no more than 1 cs:subjectOfChange property, has no more than 1 cs:createdDate property, has no more than 1 cs:creatorName property and has no more than 1 cs:changeReason property

History

Vocabulary Properties

Property: addition

Definition: [The value of this property is] a triple to be added to the resource description

By convention the subject of the triple being added should be the same as the subjectOfChange

URI:http://purl.org/vocab/changeset/schema#addition
Label:addition
Domaincs:ChangeSet
Rangerdf:Statement
Subproperty ofcs:statement
Paraphrase (experimental) Having a cs:addition implies being something that, amongst other things, is a cs:ChangeSet

History

Property: changeReason

Definition: [The value of this property is] a short, human readable description of the purpose for the changeset

URI:http://purl.org/vocab/changeset/schema#changeReason
Label:changeReason
Domaincs:ChangeSet
Rangerdfs:Literal
Paraphrase (experimental) Having a cs:changeReason implies being something that, amongst other things, is a cs:ChangeSet

History

Property: createdDate

Definition: [The value of this property is] the date that the changeset was created

The date should be in W3CDTF format

URI:http://purl.org/vocab/changeset/schema#createdDate
Label:createdDate
Domaincs:ChangeSet
Subproperty ofdc:date
Paraphrase (experimental) Having a cs:createdDate implies being something that, amongst other things, is a cs:ChangeSet

History

Property: creatorName

Definition: [The value of this property is] the name of the entity responsible for creating the changeset

URI:http://purl.org/vocab/changeset/schema#creatorName
Label:creatorName
Domaincs:ChangeSet
Rangerdfs:Literal
Paraphrase (experimental) Having a cs:creatorName implies being something that, amongst other things, is a cs:ChangeSet

History

Property: precedingChangeSet

Definition: [The value of this property is] the changeset that immediately precedes this one

This property can be used to build a history of changes to a particular resource description. The first ChangeSet in the history will have no precedingChangeSet property. Each subsequent ChangeSet added to the history references the preceding one resulting in a singly-linked list of changes. Care must be taken not to introduce cycles in the history.

In systems that assume a closed world, the most recent ChangeSet for a particular resource description can be discovered by looking for the ChangeSet that is not the value of a precedingChangeSet property. Conversely, the earliest ChangeSet is the one that is not the subject of a precedingChangeSet property.

URI:http://purl.org/vocab/changeset/schema#precedingChangeSet
Label:precedingChangeSet
Domaincs:ChangeSet
Rangecs:ChangeSet
Paraphrase (experimental) Having a cs:precedingChangeSet implies being something that, amongst other things, is a cs:ChangeSet

History

Property: removal

Definition: [The value of this property is] a triple to be removed from the resource description

By convention the subject of the triple being removed should be the same as the subjectOfChange

URI:http://purl.org/vocab/changeset/schema#removal
Label:removal
Domaincs:ChangeSet
Rangerdf:Statement
Subproperty ofcs:statement
Paraphrase (experimental) Having a cs:removal implies being something that, amongst other things, is a cs:ChangeSet

History

Property: statement

Definition: [The value of this property is] a triple included in this set of changes

URI:http://purl.org/vocab/changeset/schema#statement
Label:statement
Domaincs:ChangeSet
Rangerdf:Statement
Paraphrase (experimental) Having a cs:statement implies being something that, amongst other things, is a cs:ChangeSet

History

Property: subjectOfChange

Definition: [The value of this property is] the resource to which this set of changes applies

URI:http://purl.org/vocab/changeset/schema#subjectOfChange
Label:subjectOfChange
Domaincs:ChangeSet
Rangerdfs:Resource
Paraphrase (experimental) Having a cs:subjectOfChange implies being something that, amongst other things, is a cs:ChangeSet

History

Examples

A Simple ChangeSet

The following ChangeSet describes a change the the description of the resource identified by http://example.com/res#thing

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:cs="http://purl.org/vocab/changeset/schema#">
  <cs:ChangeSet rdf:about="http://example.com/changesets#change">
    <cs:subjectOfChange rdf:resource="http://example.com/res#thing"/>
    <cs:createdDate>2006-01-01T00:00:00Z</cs:createdDate>
    <cs:creatorName>Anne Onymous</cs:creatorName>
    <cs:changeReason>Change of title</cs:changeReason>
    <cs:removal>
      <rdf:Statement>
        <rdf:subject rdf:resource="http://example.com/res#thing"/>
        <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <rdf:object>Original Title</rdf:object>
      </rdf:Statement>
    </cs:removal>
    <cs:addition>
      <rdf:Statement>
        <rdf:subject rdf:resource="http://example.com/res#thing"/>
        <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <rdf:object>New Title</rdf:object>
      </rdf:Statement>
    </cs:addition>
  </cs:ChangeSet>
</rdf:RDF>

The ChangeSet describes the removal of a single statement, the dc:title of the resource:

<http://example.com/res#thing> <http://purl.org/dc/elements/1.1/> "Original Title" .

And the subsequent addition of another statement with a new value for dc:title:

<http://example.com/res#thing> <http://purl.org/dc/elements/1.1/> "New Title" .

So, given the following description of the resource:

<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.com/res#thing"/>
    <dc:title>Original Title</dc:title>
    <dc:description>A short description of this resource</dc:description>
  </rdf:Description>
</rdf:RDF>

Application of the ChangeSet would result in the following:

<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.com/res#thing"/>
    <dc:title>New Title</dc:title>
    <dc:description>A short description of this resource</dc:description>
  </rdf:Description>
</rdf:RDF>

Linked ChangeSets

This example shows how a history of changes can be maintained using the precedingChangeSet property. We start with the resource description below:

<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.com/res#thing"/>
    <dc:title>Original Title</dc:title>
    <dc:description>A short description of this resource</dc:description>
  </rdf:Description>
</rdf:RDF>

A change to the title of the resource is then made:

<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.com/res#thing"/>
    <dc:title>New Title</dc:title>
    <dc:description>A short description of this resource</dc:description>
  </rdf:Description>
</rdf:RDF>

This change is modelled by a ChangeSet describing the removal of the existing dc:title triple and the addition of a new triple with a new value:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:cs="http://purl.org/vocab/changeset/schema#">
  <cs:ChangeSet rdf:about="http://example.com/res#change1">
    <cs:subjectOfChange rdf:resource="http://example.com/res#thing"/>
    <cs:createdDate>2006-01-01T00:00:00Z</cs:createdDate>
    <cs:creatorName>Anne Onymous</cs:creatorName>
    <cs:changeReason>Change of title</cs:changeReason>
    <cs:removal>
      <rdf:Statement>
        <rdf:subject rdf:resource="http://example.com/res#thing"/>
        <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <rdf:object>Original Title</rdf:object>
      </rdf:Statement>
    </cs:removal>
    <cs:addition>
      <rdf:Statement>
        <rdf:subject rdf:resource="http://example.com/res#thing"/>
        <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <rdf:object>New Title</rdf:object>
      </rdf:Statement>
    </cs:addition>
  </cs:ChangeSet>
</rdf:RDF>

Subsequently a dc:identifier property is added to the description:

<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.com/res#thing"/>
    <dc:title>New Title</dc:title>
    <dc:description>A short description of this resource</dc:description>
    <dc:identifier>Z875331</dc:identifier>
  </rdf:Description>
</rdf:RDF>

The ChangeSet describes only the addition of the new statement. However this new ChangeSet uses the precedingChangeSet property to reference the first ChangeSet:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:cs="http://purl.org/vocab/changeset/schema#">
  <cs:ChangeSet rdf:about="http://example.com/res#change2">
    <cs:precedingChangeSet rdf:resource="http://example.com/res#change1"/>
    <cs:subjectOfChange rdf:resource="http://example.com/res#thing"/>
    <cs:createdDate>2006-01-02T00:00:00Z</cs:createdDate>
    <cs:creatorName>Anne Onymous</cs:creatorName>
    <cs:changeReason>Addition of identifier</cs:changeReason>
    <cs:addition>
      <rdf:Statement>
        <rdf:subject rdf:resource="http://example.com/res#thing"/>
        <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/identifier"/>
        <rdf:object>Z875331</rdf:object>
      </rdf:Statement>
    </cs:addition>
  </cs:ChangeSet>
</rdf:RDF>

Later on the description is removed and a new ChangeSet is created to represent this change:

<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.com/res#thing"/>
    <dc:title>New Title</dc:title>
                                                                       
    <dc:identifier>Z875331</dc:identifier>
  </rdf:Description>
</rdf:RDF>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:cs="http://purl.org/vocab/changeset/schema#">
  <cs:ChangeSet rdf:about="http://example.com/res#change3">
    <cs:precedingChangeSet rdf:resource="http://example.com/res#change2"/>
    <cs:subjectOfChange rdf:resource="http://example.com/res#thing"/>
    <cs:createdDate>2006-01-03T00:00:00Z</cs:createdDate>
    <cs:creatorName>Anne Onymous</cs:creatorName>
    <cs:changeReason>Removal of description</cs:changeReason>
    <cs:removal>
      <rdf:Statement>
        <rdf:subject rdf:resource="http://example.com/res#thing"/>
        <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/description"/>
        <rdf:object>A short description of this resource</rdf:object>
      </rdf:Statement>
    </cs:removal>
  </cs:ChangeSet>
</rdf:RDF>

Implementing Undo With ChangeSets

This example shows how a history of changes can be used to implement an "undo" or "rollback" of changes to a particular resource description. The three changes from the "Linked ChangeSets" example and a series of subsequent ChangeSets are shown below in Turtle syntax:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix dc: <http://purl.org/dc/elements/1.1/>
@prefix cs: <http://purl.org/vocab/changeset/schema#>
@prefix ex: <http://example.com/res#>
<ex:change1>
  a cs:ChangeSet ;
  cs:subjectOfChange ex:thing ;
  cs:createdDate "2006-01-01T00:00:00Z" ;
  cs:creatorName "Anne Onymous" ;
  cs:changeReason "Change of title" ;
  cs:removal [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:title ;
    rdf:object "Original Title" .
  ] ;
  cs:addition [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:title ;
    rdf:object "New Title" .
  ] .
<ex:change2>
  a cs:ChangeSet ;
  cs:precedingChangeSet ex:change1 ;
  cs:subjectOfChange ex:thing ;
  cs:createdDate "2006-01-02T00:00:00Z" ;
  cs:creatorName "Anne Onymous" ;
  cs:changeReason "Addition of identifier" ;
  cs:addition [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:identifier ;
    rdf:object "Z875331" .
  ] .
<ex:change3>
  a cs:ChangeSet ;
  cs:precedingChangeSet ex:change2 ;
  cs:subjectOfChange ex:thing ;
  cs:createdDate "2006-01-03T00:00:00Z" ;
  cs:creatorName "Anne Onymous" ;
  cs:changeReason "Removal of description" ;
  cs:removal [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:descripton ;
    rdf:object "A short description of this resource" .
  ] .
<ex:change4>
  a cs:ChangeSet ;
  cs:precedingChangeSet ex:change3 ;
  cs:subjectOfChange ex:thing ;
  cs:createdDate "2006-01-04T00:00:00Z" ;
  cs:creatorName "Anne Onymous" ;
  cs:changeReason "New description" ;
  cs:addition [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:descripton ;
    rdf:object "Revised description of resource" .
  ] .
<ex:change5>
  a cs:ChangeSet ;
  cs:precedingChangeSet ex:change4 ;
  cs:subjectOfChange ex:thing ;
  cs:createdDate "2006-01-05T00:00:00Z" ;
  cs:creatorName "Anne Onymous" ;
  cs:changeReason "Added creator and date" ;
  cs:addition [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:creator ;
    rdf:object "Jim Bo" .
  ] ;
  cs:addition [
    a rdf:Statement ;
    rdf:subject ex:thing ;
    rdf:predicate dc:date ;
    rdf:object "2004-03-12T14:22:10Z" .
  ] .

The current version of the description is shown here, also in Turtle:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix dc: <http://purl.org/dc/elements/1.1/>
@prefix cs: <http://purl.org/vocab/changeset/schema#>
@prefix ex: <http://example.com/res#>
<ex:thing>
  dc:title "New Title" ;
  dc:identifier "Z875331" ;
  dc:description "Revised description of resource" ;
  dc:creator "Jim Bo" ;
  dc:date "2004-03-12T14:22:10Z" .

The ChangeSets form an ordered list representing the version history of the resource description. A hypothetical user interface could present these changes, ordered using the precedingChangeSet property. Selecting a ChangeSet could result in the undoing of all changes up to that point. For the most recent ChangeSet this operation is simply a matter of removing all additions and adding all removals specified in the ChangeSet. Rolling back more than one ChangeSet involves reversing the effects of each ChangeSet in reverse chronological order. For example if the user requested a rollback up to and including the ChangeSet identified by ex:change3 then the additions and removals of ex:change5 would first have to be reversed, followed by those of the ChangeSet referenced by its precedingChangeSet property, ex:change4, and finally those of ex:change3

RDF Schema

The schema included here is informational only. The normative schema can be found at http://purl.org/vocab/changeset/schema-20060321.rdf

<rdf:RDF
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:skos="http://www.w3.org/2004/02/skos/core#"
   xmlns:cc="http://web.resource.org/cc/"
   xmlns:dctype="http://purl.org/dc/dcmitype/"
   xmlns:dct="http://purl.org/dc/terms/"
   xmlns:vann="http://purl.org/vocab/vann/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:owl="http://www.w3.org/2002/07/owl#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  
  <owl:Ontology
     rdf:about=""
     dc:date="2006-03-21">
    <dc:title xml:lang="en">Changeset</dc:title>
    <rdfs:comment xml:lang="en">
      This vocabulary defines a set of terms for describing changes to 
      resource descriptions.
    </rdfs:comment>
    <rdfs:comment xml:lang="en">
      The vocabulary introduces the notion of a ChangeSet which encapsulates 
      the delta between two versions of a resource description. In this 
      context a resource description is the set of triples that in some way 
      comprise a description of a resource. The delta is represented by two 
      sets of triples: additions and removals. A ChangeSet can be used to 
      modify a resource description by first removing all triples from the 
      description that are in the removals set and adding the triples in the 
      additions set.
    </rdfs:comment>
    <dc:identifier>http://purl.org/vocab/changeset/schema-20060321</dc:identifier>
    <dct:isVersionOf rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <dc:creator>Sam Tunnicliffe</dc:creator>
    <dc:creator>Ian Davis <http://purl.org/NET/iand></dc:creator>
    <dc:rights>Copyright © 2005 Talis Information Ltd.</dc:rights>
    <dct:replaces rdf:resource="http://purl.org/vocab/changeset/schema-20051214"/>
    <vann:preferredNamespaceUri>http://purl.org/vocab/changeset/schema#</vann:preferredNamespaceUri>
    <vann:preferredNamespacePrefix>cs</vann:preferredNamespacePrefix>
    <vann:example
       rdf:resource="./changesets-example-20060321.html"
       dc:title="A Simple ChangeSet"/>
    <vann:example
       rdf:resource="./changesets-example2-20060321.html"
       dc:title="Linked ChangeSets"/>
    <vann:example
       rdf:resource="./changesets-example3-20060321.html"
       dc:title="Implementing Undo With ChangeSets"/>
    <dct:hasFormat>
      <dctype:Text rdf:about="http://purl.org/vocab/changeset/schema-20060321.html">
        <dc:format>
          <dct:IMT>
            <rdf:value>text/html</rdf:value>
            <rdfs:label xml:lang="en">HTML</rdfs:label>
          </dct:IMT>
        </dc:format>
      </dctype:Text>
    </dct:hasFormat>
    <dct:hasFormat>
      <dctype:Text rdf:about="http://purl.org/vocab/changeset/schema-20060321.rdf">
        <dc:format>
          <dct:IMT>
            <rdf:value>application/rdf+xml</rdf:value>
            <rdfs:label xml:lang="en">RDF</rdfs:label>
          </dct:IMT>
        </dc:format>
      </dctype:Text>
    </dct:hasFormat>
    <dct:issued>2005-12-14</dct:issued>
    <skos:changeNote
       rdf:value="Improved documentation"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Introduced statement property"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:changeNote
       rdf:value="Fixed invalid RDF"
       dc:date="2006-06-23"
       dc:creator="Ian Davis"/>
  </owl:Ontology>
  
  <owl:ObjectProperty rdf:about="http://purl.org/vocab/changeset/schema#statement">
    <rdfs:label xml:lang="en">statement</rdfs:label>
    <skos:definition xml:lang="en">a triple included in this set of changes</skos:definition>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
    <dct:issued>2006-03-21</dct:issued>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:about="http://purl.org/vocab/changeset/schema#addition">
    <rdfs:label xml:lang="en">addition</rdfs:label>
    <skos:definition xml:lang="en">a triple to be added to the resource description</skos:definition>
    <rdfs:comment xml:lang="en">
      By convention the subject of the triple being added should be the same 
      as the subjectOfChange
    </rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="http://purl.org/vocab/changeset/schema#statement"/>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:changeNote
       rdf:value="Added definitition and documentation"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Made owl:ObjectProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Made a sub-property of statement"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:about="http://purl.org/vocab/changeset/schema#removal">
    <rdfs:label xml:lang="en">removal</rdfs:label>
    <skos:definition xml:lang="en">a triple to be removed from the resource description</skos:definition>
    <rdfs:comment xml:lang="en">
      By convention the subject of the triple being removed should be the same 
      as the subjectOfChange
    </rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="http://purl.org/vocab/changeset/schema#statement"/>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:changeNote
       rdf:value="Added definitition and documentation"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Made owl:ObjectProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Made a sub-property of statement"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:about="http://purl.org/vocab/changeset/schema#subjectOfChange">
    <rdfs:label xml:lang="en">subjectOfChange</rdfs:label>
    <skos:definition xml:lang="en">the resource to which this set of changes applies</skos:definition>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:changeNote
       rdf:value="Added definitition and documentation"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Made owl:ObjectProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:about="http://purl.org/vocab/changeset/schema#precedingChangeSet">
    <rdfs:label xml:lang="en">precedingChangeSet</rdfs:label>
    <skos:definition xml:lang="en">the changeset that immediately precedes this one</skos:definition>
    <rdfs:comment xml:lang="en">
      This property can be used to build a history of changes to a particular 
      resource description. The first ChangeSet in the history will have no 
      precedingChangeSet property. Each subsequent ChangeSet added to the 
      history references the preceding one resulting in a singly-linked list 
      of changes. Care must be taken not to introduce cycles in the history.
    </rdfs:comment>
    <rdfs:comment xml:lang="en">
      In systems that assume a closed world, the most recent ChangeSet for a 
      particular resource description can be discovered by looking for the 
      ChangeSet that is not the value of a precedingChangeSet property. 
      Conversely, the earliest ChangeSet is the one that is not the subject of 
      a precedingChangeSet property.
    </rdfs:comment>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:changeNote
       rdf:value="Added definitition and documentation"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Made owl:ObjectProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:ObjectProperty>
  
  <owl:DatatypeProperty rdf:about="http://purl.org/vocab/changeset/schema#createdDate">
    <rdfs:label xml:lang="en">createdDate</rdfs:label>
    <skos:definition xml:lang="en">the date that the changeset was created</skos:definition>
    <rdfs:comment xml:lang="en">The date should be in W3CDTF format</rdfs:comment>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/elements/1.1/date"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:historyNote
       rdf:value="Made owl:DatatypeProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:about="http://purl.org/vocab/changeset/schema#changeReason">
    <rdfs:label xml:lang="en">changeReason</rdfs:label>
    <skos:definition xml:lang="en">
      a short, human readable description of the purpose for the changeset
    </skos:definition>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:historyNote
       rdf:value="Made owl:DatatypeProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:about="http://purl.org/vocab/changeset/schema#creatorName">
    <rdfs:label xml:lang="en">creatorName</rdfs:label>
    <skos:definition xml:lang="en">
      the name of the entity responsible for creating the changeset
    </skos:definition>
    <rdfs:domain rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet"/>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:historyNote
       rdf:value="Made owl:DatatypeProperty"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
  </owl:DatatypeProperty>
  
  <owl:Class rdf:about="http://purl.org/vocab/changeset/schema#ChangeSet">
    <rdfs:label xml:lang="en">ChangeSet</rdfs:label>
    <skos:definition xml:lang="en">
      The encapsulation of a delta between two versions of a resource 
      description
    </skos:definition>
    <rdfs:isDefinedBy rdf:resource="http://purl.org/vocab/changeset/schema#"/>
    <dct:issued>2005-12-14</dct:issued>
    <skos:changeNote
       rdf:value="Improved documentation"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <skos:historyNote
       rdf:value="Added property cardinality restrictions"
       dc:date="2006-03-21"
       dc:creator="Ian Davis"/>
    <rdfs:subClassOf>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.org/vocab/changeset/schema#statement"/>
            <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">
1</owl:minCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.org/vocab/changeset/schema#previousChangeSet"/>
            <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">
1</owl:maxCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.org/vocab/changeset/schema#subjectOfChange"/>
            <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">
1</owl:maxCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.org/vocab/changeset/schema#createdDate"/>
            <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">
1</owl:maxCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.org/vocab/changeset/schema#creatorName"/>
            <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">
1</owl:maxCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://purl.org/vocab/changeset/schema#changeReason"/>
            <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">
1</owl:maxCardinality>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </rdfs:subClassOf>
  </owl:Class>
</rdf:RDF>