active-fedora 5.0.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/History.txt +14 -1
  2. data/README.textile +6 -0
  3. data/active-fedora.gemspec +1 -1
  4. data/lib/active_fedora.rb +2 -0
  5. data/lib/active_fedora/associations.rb +22 -2
  6. data/lib/active_fedora/associations/association_collection.rb +37 -0
  7. data/lib/active_fedora/associations/belongs_to_association.rb +8 -0
  8. data/lib/active_fedora/associations/has_many_association.rb +2 -0
  9. data/lib/active_fedora/base.rb +43 -6
  10. data/lib/active_fedora/datastream.rb +13 -37
  11. data/lib/active_fedora/datastreams.rb +2 -6
  12. data/lib/active_fedora/digital_object.rb +8 -1
  13. data/lib/active_fedora/metadata_datastream_helper.rb +2 -2
  14. data/lib/active_fedora/nokogiri_datastream.rb +55 -16
  15. data/lib/active_fedora/persistence.rb +14 -9
  16. data/lib/active_fedora/railtie.rb +15 -0
  17. data/lib/active_fedora/rdf_datastream.rb +4 -0
  18. data/lib/active_fedora/rdfxml_rdf_datastream.rb +2 -6
  19. data/lib/active_fedora/reflection.rb +11 -0
  20. data/lib/active_fedora/relationships.rb +4 -4
  21. data/lib/active_fedora/rels_ext_datastream.rb +21 -6
  22. data/lib/active_fedora/semantic_node.rb +3 -3
  23. data/lib/active_fedora/test_support.rb +38 -0
  24. data/lib/active_fedora/version.rb +1 -1
  25. data/lib/generators/active_fedora/config/USAGE +9 -0
  26. data/lib/generators/active_fedora/config/config_generator.rb +10 -0
  27. data/lib/generators/active_fedora/config/fedora/fedora_generator.rb +12 -0
  28. data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +14 -0
  29. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/development/fedora.fcfg +953 -0
  30. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/test/fedora.fcfg +953 -0
  31. data/lib/generators/active_fedora/config/solr/solr_generator.rb +12 -0
  32. data/lib/generators/active_fedora/config/solr/templates/solr.yml +10 -0
  33. data/lib/generators/active_fedora/config/solr/templates/solr_conf/conf/schema.xml +692 -0
  34. data/lib/generators/active_fedora/config/solr/templates/solr_conf/conf/solrconfig.xml +299 -0
  35. data/lib/generators/active_fedora/config/solr/templates/solr_conf/solr.xml +35 -0
  36. data/lib/generators/active_fedora/model/USAGE +9 -0
  37. data/lib/generators/active_fedora/model/model_generator.rb +21 -0
  38. data/lib/generators/active_fedora/model/templates/model.rb.erb +6 -0
  39. data/lib/generators/active_fedora/model/templates/model_spec.rb.erb +21 -0
  40. data/lib/tasks/active_fedora_dev.rake +8 -0
  41. data/spec/fixtures/hydrangea_fixture_mods_article2.foxml.xml +234 -0
  42. data/spec/integration/associations_spec.rb +76 -15
  43. data/spec/integration/base_spec.rb +38 -10
  44. data/spec/integration/datastreams_spec.rb +24 -2
  45. data/spec/integration/nokogiri_datastream_spec.rb +23 -5
  46. data/spec/unit/base_extra_spec.rb +0 -1
  47. data/spec/unit/base_spec.rb +7 -47
  48. data/spec/unit/datastream_collections_spec.rb +0 -7
  49. data/spec/unit/datastream_spec.rb +7 -16
  50. data/spec/unit/datastreams_spec.rb +2 -2
  51. data/spec/unit/nokogiri_datastream_spec.rb +31 -20
  52. data/spec/unit/ntriples_datastream_spec.rb +7 -10
  53. data/spec/unit/persistence_spec.rb +0 -11
  54. data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -2
  55. data/spec/unit/relationships_spec.rb +5 -5
  56. data/spec/unit/rels_ext_datastream_spec.rb +14 -9
  57. data/spec/unit/semantic_node_spec.rb +4 -4
  58. metadata +25 -6
@@ -0,0 +1,299 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!--
20
+ For more details about configurations options that may appear in
21
+ this file, see http://wiki.apache.org/solr/SolrConfigXml.
22
+ -->
23
+ <config>
24
+ <!-- In all configuration below, a prefix of "solr." for class names
25
+ is an alias that causes solr to search appropriate packages,
26
+ including org.apache.solr.(search|update|request|core|analysis)
27
+
28
+ You may also specify a fully qualified Java classname if you
29
+ have your own custom plugins.
30
+ -->
31
+
32
+ <!-- Set this to 'false' if you want solr to continue working after
33
+ it has encountered an severe configuration error. In a
34
+ production environment, you may want solr to keep working even
35
+ if one handler is mis-configured.
36
+
37
+ You may also set this to false using by setting the system
38
+ property:
39
+
40
+ -Dsolr.abortOnConfigurationError=false
41
+ -->
42
+ <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
43
+
44
+ <!-- Controls what version of Lucene various components of Solr
45
+ adhere to. Generally, you want to use the latest version to
46
+ get all bug fixes and improvements. It is highly recommended
47
+ that you fully re-index after changing this setting as it can
48
+ affect both how text is indexed and queried.
49
+ -->
50
+ <luceneMatchVersion>LUCENE_40</luceneMatchVersion>
51
+
52
+ <!-- The DirectoryFactory to use for indexes.
53
+ solr.StandardDirectoryFactory, the default, is filesystem based.
54
+ solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. -->
55
+ <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
56
+
57
+ <!-- solr lib dirs -->
58
+ <lib dir="../lib/contrib/analysis-extras/lib" />
59
+ <lib dir="../lib/contrib/analysis-extras/lucene-libs" />
60
+
61
+ <dataDir>${solr.data.dir:}</dataDir>
62
+
63
+ <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
64
+
65
+ <requestDispatcher handleSelect="true" >
66
+ <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
67
+ </requestDispatcher>
68
+
69
+ <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
70
+ <requestHandler name="/update" class="solr.UpdateRequestHandler" />
71
+ <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
72
+
73
+ <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
74
+ <lst name="invariants">
75
+ <str name="q">solrpingquery</str>
76
+ </lst>
77
+ <lst name="defaults">
78
+ <str name="echoParams">all</str>
79
+ </lst>
80
+ </requestHandler>
81
+
82
+ <!-- config for the admin interface -->
83
+ <admin>
84
+ <defaultQuery>search</defaultQuery>
85
+ </admin>
86
+
87
+
88
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
89
+ <!-- default values for query parameters can be specified, these
90
+ will be overridden by parameters in the request
91
+ -->
92
+ <lst name="defaults">
93
+ <str name="defType">dismax</str>
94
+ <str name="echoParams">explicit</str>
95
+ <str name="q.alt">*:*</str>
96
+ <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
97
+ <!-- this qf and pf are used by default, if not otherwise specified by
98
+ client. The default blacklight_config will use these for the
99
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
100
+ below, which the default blacklight_config will specify for
101
+ those searches. You may also be interested in:
102
+ http://wiki.apache.org/solr/LocalParams
103
+ -->
104
+ <str name="qf">
105
+ id
106
+ title_t^25000
107
+ text
108
+ active_fedora_model_s
109
+ object_type_facet
110
+ </str>
111
+ <str name="pf">
112
+ id
113
+ title_t^250000
114
+ text^10
115
+ active_fedora_model_s
116
+ object_type_facet
117
+ </str>
118
+
119
+ <str name="author_qf">
120
+ author_unstem_search^200
121
+ author_addl_unstem_search^50
122
+ author_t^20
123
+ author_addl_t
124
+ </str>
125
+ <str name="author_pf">
126
+ author_unstem_search^2000
127
+ author_addl_unstem_search^500
128
+ author_t^200
129
+ author_addl_t^10
130
+ </str>
131
+ <str name="title_qf">
132
+ title_unstem_search^50000
133
+ subtitle_unstem_search^25000
134
+ title_addl_unstem_search^10000
135
+ title_t^5000
136
+ subtitle_t^2500
137
+ title_addl_t^100
138
+ title_added_entry_unstem_search^50
139
+ title_added_entry_t^10
140
+ title_series_unstem_search^5
141
+ title_series_t
142
+ </str>
143
+ <str name="title_pf">
144
+ title_unstem_search^500000
145
+ subtitle_unstem_search^250000
146
+ title_addl_unstem_search^100000
147
+ title_t^50000
148
+ subtitle_t^25000
149
+ title_addl_t^1000
150
+ title_added_entry_unstem_search^500
151
+ title_added_entry_t^100
152
+ title_series_t^50
153
+ title_series_unstem_search^10
154
+ </str>
155
+ <str name="subject_qf">
156
+ subject_topic_unstem_search^200
157
+ subject_unstem_search^125
158
+ subject_topic_facet^100
159
+ subject_t^50
160
+ subject_addl_unstem_search^10
161
+ subject_addl_t
162
+ </str>
163
+ <str name="subject_pf">
164
+ subject_topic_unstem_search^2000
165
+ subject_unstem_search^1250
166
+ subject_t^1000
167
+ subject_topic_facet^500
168
+ subject_addl_unstem_search^100
169
+ subject_addl_t^10
170
+ </str>
171
+
172
+ <int name="ps">3</int>
173
+ <float name="tie">0.01</float>
174
+
175
+ <!-- NOT using marc_display because it is large and will slow things down for search results -->
176
+ <str name="fl">
177
+ *,
178
+ score,
179
+ </str>
180
+
181
+ <str name="facet">true</str>
182
+ <str name="facet.mincount">1</str>
183
+ <str name="facet.limit">10</str>
184
+ <str name="facet.field">format</str>
185
+ <str name="facet.field">lc_1letter_facet</str>
186
+ <str name="facet.field">lc_alpha_facet</str>
187
+ <str name="facet.field">lc_b4cutter_facet</str>
188
+ <str name="facet.field">language_facet</str>
189
+ <str name="facet.field">pub_date</str>
190
+ <str name="facet.field">subject_era_facet</str>
191
+ <str name="facet.field">subject_geo_facet</str>
192
+ <str name="facet.field">subject_topic_facet</str>
193
+
194
+ <str name="spellcheck">true</str>
195
+ <str name="spellcheck.dictionary">default</str>
196
+ <str name="spellcheck.onlyMorePopular">true</str>
197
+ <str name="spellcheck.extendedResults">true</str>
198
+ <str name="spellcheck.collate">false</str>
199
+ <str name="spellcheck.count">5</str>
200
+
201
+ </lst>
202
+ <arr name="last-components">
203
+ <str>spellcheck</str>
204
+ </arr>
205
+
206
+ </requestHandler>
207
+
208
+
209
+ <!-- Hydra Additions Start -->
210
+
211
+ <requestHandler name="standard" class="solr.SearchHandler">
212
+ <lst name="defaults">
213
+ <str name="echoParams">explicit</str>
214
+ </lst>
215
+ </requestHandler>
216
+
217
+ <requestHandler name="permissions" class="solr.SearchHandler" >
218
+ <lst name="defaults">
219
+ <str name="facet">off</str>
220
+ <str name="echoParams">all</str>
221
+ <str name="rows">1</str>
222
+ <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
223
+ <str name="fl">
224
+ id,access_t,
225
+ discover_access_group_t,discover_access_person_t,
226
+ read_access_group_t,read_access_person_t,
227
+ edit_access_group_t,edit_access_person_t,
228
+ depositor_t,
229
+ embargo_release_date_dt,
230
+ inheritable_access_t,
231
+ inheritable_discover_access_group_t,inheritable_discover_access_person_t,
232
+ inheritable_read_access_group_t,inheritable_read_access_person_t,
233
+ inheritable_edit_access_group_t,inheritable_edit_access_person_t,
234
+ inheritable_embargo_release_date_dt
235
+ </str>
236
+ </lst>
237
+ </requestHandler>
238
+
239
+ <!-- Hydra Additions End -->
240
+
241
+ <!-- for requests to get a single document; use id=666 instead of q=id:666 -->
242
+ <requestHandler name="document" class="solr.SearchHandler" >
243
+ <lst name="defaults">
244
+ <str name="echoParams">all</str>
245
+ <str name="fl">*</str>
246
+ <str name="rows">1</str>
247
+ <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
248
+ </lst>
249
+ </requestHandler>
250
+
251
+
252
+
253
+ <!-- Spell Check
254
+
255
+ The spell check component can return a list of alternative spelling
256
+ suggestions.
257
+
258
+ http://wiki.apache.org/solr/SpellCheckComponent
259
+ -->
260
+ <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
261
+
262
+ <str name="queryAnalyzerFieldType">textSpell</str>
263
+
264
+ <!-- Multiple "Spell Checkers" can be declared and used by this
265
+ component
266
+ -->
267
+
268
+ <!-- a spellchecker built from a field of the main index, and
269
+ written to disk
270
+ -->
271
+ <lst name="spellchecker">
272
+ <str name="name">default</str>
273
+ <str name="field">spell</str>
274
+ <str name="spellcheckIndexDir">./spell</str>
275
+ <str name="buildOnOptimize">true</str>
276
+ </lst>
277
+ <lst name="spellchecker">
278
+ <str name="name">author</str>
279
+ <str name="field">author_spell</str>
280
+ <str name="spellcheckIndexDir">./spell_author</str>
281
+ <str name="accuracy">0.7</str>
282
+ <str name="buildOnOptimize">true</str>
283
+ </lst>
284
+ <lst name="spellchecker">
285
+ <str name="name">subject</str>
286
+ <str name="field">subject_spell</str>
287
+ <str name="spellcheckIndexDir">./spell_subject</str>
288
+ <str name="accuracy">0.7</str>
289
+ <str name="buildOnOptimize">true</str>
290
+ </lst>
291
+ <lst name="spellchecker">
292
+ <str name="name">title</str>
293
+ <str name="field">title_spell</str>
294
+ <str name="spellcheckIndexDir">./spell_title</str>
295
+ <str name="accuracy">0.7</str>
296
+ <str name="buildOnOptimize">true</str>
297
+ </lst>
298
+ </searchComponent>
299
+ </config>
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!--
20
+ All (relative) paths are relative to the installation path
21
+
22
+ persistent: Save changes made via the API to this file
23
+ sharedLib: path to a lib directory that will be shared across all cores
24
+ -->
25
+ <solr persistent="false" sharedLib="lib">
26
+
27
+ <!--
28
+ adminPath: RequestHandler path to manage cores.
29
+ If 'null' (or absent), cores will not be manageable via REST
30
+ -->
31
+ <cores adminPath="/admin/cores" defaultCoreName="development">
32
+ <core name="development" instanceDir="development-core" />
33
+ <core name="test" instanceDir="test-core" />
34
+ </cores>
35
+ </solr>
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Generate a class that inherits from ActiveFedora::Base
3
+
4
+ Example:
5
+ rails generate active_fedora:model Journal
6
+
7
+ This will create:
8
+ app/models/journal.rb
9
+ spec/models/journal_spec.rb
@@ -0,0 +1,21 @@
1
+ require 'rails/generators'
2
+
3
+ module ActiveFedora
4
+ class ModelGenerator < Rails::Generators::NamedBase
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ check_class_collision
7
+
8
+ class_option :directory, :type => :string, :default => 'models', :desc => "Which directory to generate? (i.e. app/DIRECTORY)"
9
+
10
+ def install
11
+ template('model.rb.erb',File.join('app', directory, "#{file_name}.rb"))
12
+ template('model_spec.rb.erb',File.join('spec', directory, "#{file_name}_spec.rb"))
13
+ end
14
+
15
+ protected
16
+
17
+ def directory
18
+ options[:directory] || 'models'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ # Generated via
2
+ # `rails generate active_fedora::model <%= class_name %>`
3
+ require 'active_fedora/base'
4
+ class <%= class_name %> < ActiveFedora::Base
5
+
6
+ end
@@ -0,0 +1,21 @@
1
+ # Generated via
2
+ # `rails generate active_fedora::model <%= class_name %>`
3
+ require 'spec_helper'
4
+ require 'active_fedora/test_support'
5
+
6
+ describe <%= class_name %> do
7
+ include ActiveFedora::TestSupport
8
+ subject { <%= class_name %>.new }
9
+
10
+ it 'should persist to Fedora' do
11
+ subject.save!
12
+ expect {
13
+ subject.reload
14
+ }.to_not raise_error(ActiveFedora::ObjectNotFoundError)
15
+
16
+ assert_rels_ext_has_model(subject, JournalEntry)
17
+
18
+ subject.destroy
19
+ end
20
+
21
+ end
@@ -48,6 +48,14 @@ require 'rspec/core/rake_task'
48
48
  ENV["pid"] = "hydrangea:fixture_mods_article1"
49
49
  Rake::Task["repo:refresh"].invoke
50
50
  ENV["pid"] = nil
51
+
52
+ Rake::Task["repo:delete"].reenable
53
+ Rake::Task["repo:load"].reenable
54
+ Rake::Task["repo:refresh"].reenable
55
+
56
+ ENV["pid"] = "hydrangea:fixture_mods_article2"
57
+ Rake::Task["repo:refresh"].invoke
58
+ ENV["pid"] = nil
51
59
  end
52
60
 
53
61
  desc "Copies the default SOLR config for the bundled Testing Server"
@@ -0,0 +1,234 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <foxml:digitalObject VERSION="1.1" PID="hydrangea:fixture_mods_article2"
3
+ xmlns:foxml="info:fedora/fedora-system:def/foxml#"
4
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
6
+ <foxml:objectProperties>
7
+ <foxml:property NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/>
8
+ <foxml:property NAME="info:fedora/fedora-system:def/model#label" VALUE=""/>
9
+ <foxml:property NAME="info:fedora/fedora-system:def/model#ownerId" VALUE="fedoraAdmin"/>
10
+ <foxml:property NAME="info:fedora/fedora-system:def/model#createdDate" VALUE="2010-06-17T19:56:19.301Z"/>
11
+ <foxml:property NAME="info:fedora/fedora-system:def/view#lastModifiedDate" VALUE="2010-06-17T19:57:30.688Z"/>
12
+ </foxml:objectProperties>
13
+ <foxml:datastream ID="AUDIT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="false">
14
+ <foxml:datastreamVersion ID="AUDIT.0" LABEL="Audit Trail for this object" CREATED="2010-06-17T19:56:19.301Z" MIMETYPE="text/xml" FORMAT_URI="info:fedora/fedora-system:format/xml.fedora.audit">
15
+ <foxml:xmlContent>
16
+ <audit:auditTrail xmlns:audit="info:fedora/fedora-system:def/audit#">
17
+ <audit:record ID="AUDREC1">
18
+ <audit:process type="Fedora API-M"/>
19
+ <audit:action>addDatastream</audit:action>
20
+ <audit:componentID>descMetadata</audit:componentID>
21
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
22
+ <audit:date>2010-06-17T19:56:22.150Z</audit:date>
23
+ <audit:justification></audit:justification>
24
+ </audit:record>
25
+ <audit:record ID="AUDREC2">
26
+ <audit:process type="Fedora API-M"/>
27
+ <audit:action>addDatastream</audit:action>
28
+ <audit:componentID>RELS-EXT</audit:componentID>
29
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
30
+ <audit:date>2010-06-17T19:56:22.353Z</audit:date>
31
+ <audit:justification></audit:justification>
32
+ </audit:record>
33
+ <audit:record ID="AUDREC3">
34
+ <audit:process type="Fedora API-M"/>
35
+ <audit:action>addDatastream</audit:action>
36
+ <audit:componentID>rightsMetadata</audit:componentID>
37
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
38
+ <audit:date>2010-06-17T19:56:23.335Z</audit:date>
39
+ <audit:justification></audit:justification>
40
+ </audit:record>
41
+ <audit:record ID="AUDREC4">
42
+ <audit:process type="Fedora API-M"/>
43
+ <audit:action>addDatastream</audit:action>
44
+ <audit:componentID>properties</audit:componentID>
45
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
46
+ <audit:date>2010-06-17T19:56:23.477Z</audit:date>
47
+ <audit:justification></audit:justification>
48
+ </audit:record>
49
+ <audit:record ID="AUDREC5">
50
+ <audit:process type="Fedora API-M"/>
51
+ <audit:action>modifyObject</audit:action>
52
+ <audit:componentID></audit:componentID>
53
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
54
+ <audit:date>2010-06-17T19:57:30.688Z</audit:date>
55
+ <audit:justification></audit:justification>
56
+ </audit:record>
57
+ </audit:auditTrail>
58
+ </foxml:xmlContent>
59
+ </foxml:datastreamVersion>
60
+ </foxml:datastream>
61
+ <foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
62
+ <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" CREATED="2010-06-17T19:56:19.301Z" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/" SIZE="360">
63
+ <foxml:xmlContent>
64
+ <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
65
+ <dc:identifier>hydrangea:fixture_mods_article2</dc:identifier>
66
+ </oai_dc:dc>
67
+ </foxml:xmlContent>
68
+ </foxml:datastreamVersion>
69
+ </foxml:datastream>
70
+ <foxml:datastream ID="descMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
71
+ <foxml:datastreamVersion ID="descMetadata.0" LABEL="" CREATED="2010-06-17T19:56:22.150Z" MIMETYPE="text/xml" SIZE="19">
72
+ <foxml:xmlContent>
73
+ <mods version="3.0" xsi:schemaLocation="http://www.loc.gov/mods/v3
74
+ http://www.loc.gov/standards/mods/v3/mods-3-0.xsd" xmlns="http://www.loc.gov/mods/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
75
+
76
+ <titleInfo>
77
+ <nonSort>THE</nonSort>
78
+ <title>ARTICLE TITLE</title>
79
+ <subTitle>SUBTITLE</subTitle>
80
+ </titleInfo>
81
+ <titleInfo type="alternative">
82
+ <title>VARYING FORM OF TITLE</title>
83
+ </titleInfo>
84
+
85
+ <name type="personal">
86
+ <namePart type="family">FAMILY NAME</namePart>
87
+ <namePart type="given">GIVEN NAMES</namePart>
88
+ <namePart type="termsOfAddress">DR.</namePart>
89
+ <displayForm>NAME AS IT APPEARS</displayForm>
90
+ <affiliation>FACULTY, UNIVERSITY</affiliation>
91
+ <role>
92
+ <roleTerm authority="marcrelator" type="text">Creator</roleTerm>
93
+ </role>
94
+ </name>
95
+ <name type="personal">
96
+ <namePart type="family">Lacks</namePart>
97
+ <namePart type="given">Henrietta</namePart>
98
+ <displayForm>HeLa</displayForm>
99
+ <affiliation>Baltimore</affiliation>
100
+ <role>
101
+ <roleTerm authority="marcrelator" type="text">Contributor</roleTerm>
102
+ </role>
103
+ </name>
104
+ <name type="corporate">
105
+ <namePart>NSF</namePart>
106
+ <role>
107
+ <roleTerm authority="marcrelator" type="text">Funder</roleTerm>
108
+ </role>
109
+ </name>
110
+ <name type="conference">
111
+ <namePart>some conference</namePart>
112
+ <role>
113
+ <roleTerm authority="marcrelator" type="text">Host</roleTerm>
114
+ </role>
115
+ </name>
116
+
117
+ <typeOfResource>text</typeOfResource>
118
+ <genre authority="local">journal article</genre>
119
+
120
+ <abstract>ABSTRACT</abstract>
121
+ <subject>
122
+ <topic>TOPIC 1</topic>
123
+ <topic>TOPIC 2</topic>
124
+ </subject>
125
+ <subject authority="AUTHORITY SOURCE (RFCD, LCSH)">
126
+ <topic>CONTROLLED TERM</topic>
127
+ </subject>
128
+
129
+ <language>
130
+ <languageTerm authority="iso639-2b" type="code">en-aus </languageTerm>
131
+ </language>
132
+
133
+ <physicalDescription>
134
+ <internetMediaType>application/pdf</internetMediaType>
135
+ <extent>36 p.</extent>
136
+ </physicalDescription>
137
+
138
+ <relatedItem type="host">
139
+ <titleInfo>
140
+ <title>TITLE OF HOST JOURNAL</title>
141
+ </titleInfo>
142
+ <originInfo>
143
+ <publisher>PUBLISHER</publisher>
144
+ <dateIssued>FEB. 2007</dateIssued>
145
+ </originInfo>
146
+ <identifier type="issn">0013-8908</identifier>
147
+ <part>
148
+ <detail type="volume">
149
+ <number>2</number>
150
+ </detail>
151
+ <detail type="level">
152
+ <number>2</number>
153
+ </detail>
154
+ <extent unit="pages">
155
+ <start>195</start>
156
+ <end>230</end>
157
+ </extent>
158
+ <date>FEB. 2007</date>
159
+ </part>
160
+ </relatedItem>
161
+
162
+ <identifier type="uri">http://URL.edu.au/</identifier>
163
+ <identifier type="doi">doi:10.1006/jmbi.1995.0238</identifier>
164
+ <location>
165
+ <url>http://URL.edu.au/</url>
166
+ </location>
167
+ <accessCondition type="restrictionOnAccess">EMBARGO NOTE</accessCondition>
168
+ <accessCondition type="use and reproduction">OPEN ACCESS</accessCondition>
169
+
170
+ </mods>
171
+ </foxml:xmlContent>
172
+ </foxml:datastreamVersion>
173
+ </foxml:datastream>
174
+ <foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
175
+ <foxml:datastreamVersion ID="RELS-EXT.0" LABEL="" CREATED="2010-06-17T19:56:22.353Z" MIMETYPE="text/xml" SIZE="306">
176
+ <foxml:xmlContent>
177
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
178
+ <rdf:Description rdf:about="info:fedora/hydrangea:fixture_mods_article2">
179
+ <hasModel xmlns="info:fedora/fedora-system:def/relations-external#" rdf:resource="info:fedora/afmodel:HydrangeaArticle"></hasModel>
180
+ </rdf:Description>
181
+ </rdf:RDF>
182
+ </foxml:xmlContent>
183
+ </foxml:datastreamVersion>
184
+ </foxml:datastream>
185
+ <foxml:datastream ID="rightsMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
186
+ <foxml:datastreamVersion ID="rightsMetadata.0" LABEL="" CREATED="2010-06-17T19:56:23.335Z" MIMETYPE="text/xml" SIZE="19">
187
+ <foxml:xmlContent>
188
+ <rightsMetadata xmlns="http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1">
189
+ <copyright>
190
+ <human>(c)2009 The Hydra Project</human>
191
+ <human type="someSpecialisedType">Blah Blah</human>
192
+ <human type="aDifferentType">More blah</human>
193
+ <machine><a rel="license" href="http://creativecommons.org/licenses/publicdomain/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/publicdomain/88x31.png" /></a><br />This work is in the <a rel="license" href="http://creativecommons.org/licenses/publicdomain/">Public Domain</a>.</machine>
194
+ </copyright>
195
+ <access type="discover">
196
+ <human></human>
197
+ <machine>
198
+ <policy>hydra-policy:4502</policy>
199
+ <group>public</group>
200
+ </machine>
201
+ </access>
202
+ <access type="read">
203
+ <human></human>
204
+ <machine>
205
+ <group>public</group>
206
+ </machine>
207
+ </access>
208
+ <access type="edit">
209
+ <human></human>
210
+ <machine>
211
+ <person>researcher1</person>
212
+ <group>archivist</group>
213
+ </machine>
214
+ </access>
215
+ <access type="etc">
216
+ <!-- etc -->
217
+ </access>
218
+ <use>
219
+ <human>You are free to re-distribute this object, but you cannot change it or sell it. </human>
220
+ <machine><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/3.0/us/88x31.png" /></a><br />This <span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Sound" rel="dc:type">work</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/us/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License</a>.</machine>
221
+ </use>
222
+
223
+ </rightsMetadata>
224
+ </foxml:xmlContent>
225
+ </foxml:datastreamVersion>
226
+ </foxml:datastream>
227
+ <foxml:datastream ID="properties" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
228
+ <foxml:datastreamVersion ID="properties.0" LABEL="" CREATED="2010-06-17T19:56:23.477Z" MIMETYPE="text/xml" SIZE="19">
229
+ <foxml:xmlContent>
230
+ <fields></fields>
231
+ </foxml:xmlContent>
232
+ </foxml:datastreamVersion>
233
+ </foxml:datastream>
234
+ </foxml:digitalObject>