Changesets Schema

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.

Table of Contents

Changes From Previous Version

  • 2006-03-21 - editorial change by Ian Davis:
    "Improved documentation"
  • 2006-03-21 - semantic change by Ian Davis:
    "Introduced statement property"

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 Name Type Definition
ChangeSet class The encapsulation of a delta between two versions of a resource description
addition property a triple to be added to the resource description
changeReason property a short, human readable description of the purpose for the changeset
createdDate property the date that the changeset was created
creatorName property the name of the entity responsible for creating the changeset
precedingChangeSet property the changeset that immediately precedes this one
removal property a triple to be removed from the resource description
statement property a triple included in this set of changes
subjectOfChange property the 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

  • 2005-12-14 - first issued
  • 2006-03-21 - editorial change by Ian Davis:
    "Improved documentation"
  • 2006-03-21 - semantic change by Ian Davis:
    "Added property cardinality restrictions"

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
Domain cs:ChangeSet
Range rdf:Statement
Subproperty of cs:statement
Paraphrase (experimental) Having a cs:addition
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - editorial change by Ian Davis:
    "Added definitition and documentation"
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:ObjectProperty"
  • 2006-03-21 - semantic change by Ian Davis:
    "Made a sub-property of statement"

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
Domain cs:ChangeSet
Range rdfs:Literal
Paraphrase (experimental) Having a cs:changeReason
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:DatatypeProperty"

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
Domain cs:ChangeSet
Subproperty of dc:date
Paraphrase (experimental) Having a cs:createdDate
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:DatatypeProperty"

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
Domain cs:ChangeSet
Range rdfs:Literal
Paraphrase (experimental) Having a cs:creatorName
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:DatatypeProperty"

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
Domain cs:ChangeSet
Range cs:ChangeSet
Paraphrase (experimental) Having a cs:precedingChangeSet
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - editorial change by Ian Davis:
    "Added definitition and documentation"
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:ObjectProperty"

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
Domain cs:ChangeSet
Range rdf:Statement
Subproperty of cs:statement
Paraphrase (experimental) Having a cs:removal
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - editorial change by Ian Davis:
    "Added definitition and documentation"
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:ObjectProperty"
  • 2006-03-21 - semantic change by Ian Davis:
    "Made a sub-property of statement"

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
Domain cs:ChangeSet
Range rdf:Statement
Paraphrase (experimental) Having a cs:statement
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2006-03-21 - first issued

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
Domain cs:ChangeSet
Range rdfs:Resource
Paraphrase (experimental) Having a cs:subjectOfChange
implies being
something that, amongst other things, is a cs:ChangeSet

History

  • 2005-12-14 - first issued
  • 2006-03-21 - editorial change by Ian Davis:
    "Added definitition and documentation"
  • 2006-03-21 - semantic change by Ian Davis:
    "Made owl:ObjectProperty"

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">Changesets</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/changesets/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"/>
  </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>
  
  <rdfs: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>
          <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>
  </rdfs:Class>
</rdf:RDF>