hydra-pbcore 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,18 +39,16 @@ module HydraPbcore::Conversions
39
39
  self.ng_xml = self.ng_xml.xpath("//pbcoreInstantiation").to_xml
40
40
  end
41
41
 
42
- # Corrects errors in HydraPbcore::Datastream::Deprecated::Document and HydraPbcore::Datastream::Deprecated::DigitalDocument
42
+ # Corrects errors in HydraPbcore::Datastream::Deprecated::Document
43
43
  # - removes all pbcoreRelation nodes, except those that define event_series
44
44
  # - removes orphaned pbcoreRelationIdentifier nodes
45
45
  # - corrects invalid usage of event_place and event_series terms
46
- #
47
- # Note: Since pbcoreRelation is used to indicated archival collection and series, this information should be copied to another kind
48
- # of datastream using an RDF relationship in Hydra.
49
46
  def clean_document xml = self.ng_xml
50
47
  xml.search("//pbcoreRelation").each do |node|
51
- node.remove unless is_event_series?(node)
48
+ node.remove unless is_relation?("Event Series", node)
52
49
  end
53
50
  xml.search("/pbcoreDescriptionDocument/pbcoreRelationIdentifier").collect {|n| n.remove}
51
+ xml.search("/pbcoreDescriptionDocument/instantiationRelationIdentifier").collect {|n| n.remove}
54
52
  xml.search("//pbcoreCoverage").each do |node|
55
53
  node.children.each do |c|
56
54
  if c.attribute("annotation").nil? and c.name == "coverage"
@@ -61,10 +59,36 @@ module HydraPbcore::Conversions
61
59
  end
62
60
  end
63
61
 
64
- # Determines if the given node defines an event_series term
65
- def is_event_series? node
62
+ # Corrects errors in HydraPbcore::Datastream::Deprecated::DigitalDocument
63
+ # - finds the current archival collection
64
+ # - removes all pbcoreRelation nodes, except those that define event_series
65
+ # - re-inserts the collection
66
+ # - removes orphaned pbcoreRelationIdentifier nodes
67
+ # - corrects invalid usage of event_place and event_series terms
68
+ def clean_digital_document xml = self.ng_xml
69
+ collection = xml.search("//pbcoreRelationIdentifier[@annotation='Archival Collection']").text
70
+ xml.search("//pbcoreRelation").each do |node|
71
+ unless is_relation?("Accession Number", node) or is_relation?("Event Series", node)
72
+ node.remove
73
+ end
74
+ end
75
+ xml.search("/pbcoreDescriptionDocument/pbcoreRelationIdentifier").collect {|n| n.remove}
76
+ xml.search("/pbcoreDescriptionDocument/instantiationRelationIdentifier").collect {|n| n.remove}
77
+ self.insert_relation(collection, "Archival Collection") unless collection.nil?
78
+ xml.search("//pbcoreCoverage").each do |node|
79
+ node.children.each do |c|
80
+ if c.attribute("annotation").nil? and c.name == "coverage"
81
+ self.send(("insert_"+coverage_type(node)), c.text)
82
+ c.remove
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ # Determines if the given node defines a relation of a give type
89
+ def is_relation? type, node
66
90
  unless node.at_xpath("pbcoreRelationIdentifier").nil?
67
- if node.at_xpath("pbcoreRelationIdentifier").attribute("annotation").to_s == "Event Series"
91
+ if node.at_xpath("pbcoreRelationIdentifier").attribute("annotation").to_s == type
68
92
  return true
69
93
  end
70
94
  end
@@ -1,3 +1,3 @@
1
1
  module HydraPbcore
2
- VERSION = "2.3.0"
2
+ VERSION = "2.4.0"
3
3
  end
@@ -7,6 +7,14 @@
7
7
  <pbcoreRelationType ref="http://pbcore.org/vocabularies/relationType#is-part-of" source="PBCore relationType">Is Part Of</pbcoreRelationType>
8
8
  <pbcoreRelationIdentifier annotation="Event Series">Oral history project (Rock and Roll Hall of Fame and Museum)</pbcoreRelationIdentifier>
9
9
  </pbcoreRelation>
10
+ <pbcoreRelation>
11
+ <pbcoreRelationType source="PBCore relationType" ref="http://pbcore.org/vocabularies/relationType#is-part-of">Is Part Of</pbcoreRelationType>
12
+ <pbcoreRelationIdentifier annotation="Archival Collection">Rock and Roll Hall of Fame and Museum records. Education and Public Programs Division. </pbcoreRelationIdentifier>
13
+ </pbcoreRelation>
14
+ <pbcoreRelation>
15
+ <pbcoreRelationType ref="http://pbcore.org/vocabularies/relationType#is-part-of" source="PBCore relationType">Is Part Of</pbcoreRelationType>
16
+ <pbcoreRelationIdentifier annotation="Accession Number"/>
17
+ </pbcoreRelation>
10
18
  <pbcoreCoverage>
11
19
  <coverage annotation="Event Place">Oklahoma City, OK</coverage>
12
20
  <coverageType>Spatial</coverageType>
@@ -7,6 +7,14 @@
7
7
  <pbcoreRelationType ref="http://pbcore.org/vocabularies/relationType#is-part-of" source="PBCore relationType">Is Part Of</pbcoreRelationType>
8
8
  <pbcoreRelationIdentifier annotation="Event Series">Oral history project (Rock and Roll Hall of Fame and Museum)</pbcoreRelationIdentifier>
9
9
  </pbcoreRelation>
10
+ <pbcoreRelation>
11
+ <pbcoreRelationType ref="http://pbcore.org/vocabularies/relationType#is-part-of" source="PBCore relationType">Is Part Of</pbcoreRelationType>
12
+ <pbcoreRelationIdentifier annotation="Accession Number">LA.2012.05.024</pbcoreRelationIdentifier>
13
+ </pbcoreRelation>
14
+ <pbcoreRelation>
15
+ <pbcoreRelationType ref="http://pbcore.org/vocabularies/relationType#is-part-of" source="PBCore relationType">Is Part Of</pbcoreRelationType>
16
+ <pbcoreRelationIdentifier annotation="Archival Collection">Rock and Roll Hall of Fame and Museum records. Education and Public Programs Division.</pbcoreRelationIdentifier>
17
+ </pbcoreRelation>
10
18
  <pbcoreCoverage>
11
19
  <coverage annotation="Event Place">Pound Ridge, New York</coverage>
12
20
  <coverageType>Spatial</coverageType>
@@ -1,3 +1,4 @@
1
+
1
2
  <pbcoreDescriptionDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.pbcore.org/PBCore/PBCoreNamespace.html">
2
3
  <pbcoreIdentifier annotation="PID" source="Rock and Roll Hall of Fame and Museum"></pbcoreIdentifier>
3
4
  <pbcoreTitle titleType="Main">Oral history project. Wanda Jackson.</pbcoreTitle>
@@ -60,4 +61,7 @@
60
61
  <pbcoreRelationIdentifier annotation="Archival Collection">Rock and Roll Hall of Fame and Museum records. Education and Public Programs Division. </pbcoreRelationIdentifier>
61
62
  <pbcoreRelationIdentifier annotation="Collection Number">RG.0004</pbcoreRelationIdentifier>
62
63
  <pbcoreSubject ref="http://id.loc.gov/authorities/subjects.html" source="Library of Congress Subject Headings">Inductee</pbcoreSubject>
64
+ <instantiationRelationIdentifier annotation="Archival collection">Rock and Roll Hall of Fame and Museum records. Education and Public Programs Division</instantiationRelationIdentifier>
65
+ <instantiationRelationIdentifier annotation="Archival Series">Oral history project</instantiationRelationIdentifier>
66
+ <instantiationRelationIdentifier annotation="Collection Number">RG.0004</instantiationRelationIdentifier>
63
67
  </pbcoreDescriptionDocument>
@@ -1,3 +1,4 @@
1
+
1
2
  <pbcoreDescriptionDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.pbcore.org/PBCore/PBCoreNamespace.html">
2
3
  <pbcoreIdentifier annotation="PID" source="Rock and Roll Hall of Fame and Museum"></pbcoreIdentifier>
3
4
  <pbcoreTitle titleType="Main">Oral History project. Clive Davis.</pbcoreTitle>
@@ -59,4 +60,7 @@
59
60
  <contributorRole source="MARC relator terms">producer</contributorRole>
60
61
  </pbcoreContributor>
61
62
  <pbcoreSubject ref="http://id.loc.gov/authorities/subjects.html" source="Library of Congress Subject Headings">Inductee</pbcoreSubject>
63
+ <instantiationRelationIdentifier annotation="Archival collection">Rock and Roll Hall of Fame and Museum records. Education and Public Programs Division</instantiationRelationIdentifier>
64
+ <instantiationRelationIdentifier annotation="Archival Series">Oral history project</instantiationRelationIdentifier>
65
+ <instantiationRelationIdentifier annotation="Collection Number">RG.0004</instantiationRelationIdentifier>
62
66
  </pbcoreDescriptionDocument>
@@ -47,9 +47,10 @@ describe "Converting" do
47
47
  end
48
48
 
49
49
  describe "#clean_document" do
50
- it "should correct invalid pbcoreDigitalDocuments" do
51
- ["digital_document_rrhof_1904.xml","digital_document_rrhof_2405.xml"].each do |file|
52
- doc = HydraPbcore::Datastream::Deprecated::DigitalDocument.from_xml(integration_fixture file)
50
+ it "should correct invalid pbcoreDocuments" do
51
+ ["document_rrhof_524.xml","document_rrhof_2439.xml"].each do |file|
52
+ doc = HydraPbcore::Datastream::Deprecated::Document.from_xml(integration_fixture file)
53
+ doc.to_document
53
54
  doc.clean_document
54
55
  save_template doc.to_xml, ("converted_"+file)
55
56
  tmp_file_should_match_exemplar(("converted_"+file))
@@ -57,11 +58,13 @@ describe "Converting" do
57
58
  doc.valid?.should == []
58
59
  end
59
60
  end
60
- it "should correct invalid pbcoreDocuments" do
61
- ["document_rrhof_524.xml","document_rrhof_2439.xml"].each do |file|
62
- doc = HydraPbcore::Datastream::Deprecated::Document.from_xml(integration_fixture file)
63
- doc.to_document
64
- doc.clean_document
61
+ end
62
+
63
+ describe "#clean_digital_document" do
64
+ it "should correct invalid pbcoreDigitalDocuments" do
65
+ ["digital_document_rrhof_1904.xml","digital_document_rrhof_2405.xml"].each do |file|
66
+ doc = HydraPbcore::Datastream::Deprecated::DigitalDocument.from_xml(integration_fixture file)
67
+ doc.clean_digital_document
65
68
  save_template doc.to_xml, ("converted_"+file)
66
69
  tmp_file_should_match_exemplar(("converted_"+file))
67
70
  save_template doc.to_pbcore_xml, "valid_pbcore.xml"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-pbcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active-fedora
@@ -219,7 +219,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
219
219
  version: '0'
220
220
  segments:
221
221
  - 0
222
- hash: 3539419655098167212
222
+ hash: 3882171645005853524
223
223
  required_rubygems_version: !ruby/object:Gem::Requirement
224
224
  none: false
225
225
  requirements:
@@ -228,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
228
  version: '0'
229
229
  segments:
230
230
  - 0
231
- hash: 3539419655098167212
231
+ hash: 3882171645005853524
232
232
  requirements: []
233
233
  rubyforge_project:
234
234
  rubygems_version: 1.8.23