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