active-fedora 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,25 +1,27 @@
1
+ The concepts covered in this tutorial can be applied in any application with the active-fedora gem installed. (Don't forget to "require 'active-fedora'").
2
+
1
3
  h2. Dependencies
2
4
 
3
5
  You will need Ruby 1.8.7+ to go through this tutorial. If you don't have Ruby 1.8.7 installed, "RVM":https://rvm.beginrescueend.com/ is the best way to install it.
4
6
 
5
7
  h2. Get a Copy of the Code
6
8
 
7
- All of the stuff you're learning here can be done in any application where you have the active-fedora gem installed and where you have called "require 'active-fedora'". For this tutorial, you're cloning a full copy of the active-fedora code so you have access to the sample files that are stored there.
9
+ It is probably easiest to Because this tutorial uses the sample files included For this tutorial, you're cloning a full copy of the active-fedora code so you have access to the sample files that are stored there.
8
10
 
9
- First, clone the git repository and cd into the root
11
+ First, clone the git repository and cd into the root:
10
12
 
11
13
  <pre>
12
14
  git clone git@github.com:mediashelf/active_fedora.git
13
15
  cd active_fedora
14
16
  </pre>
15
17
 
16
- If you don't have bundler installed yet, install it
18
+ If you don't have bundler installed yet, install it:
17
19
 
18
20
  <pre>
19
21
  gem install bundler
20
22
  </pre>
21
23
 
22
- Now let bundler handle installing active-fedora's dependencies
24
+ Now let bundler handle installing active-fedora's dependencies:
23
25
 
24
26
  <pre>
25
27
  bundle install
@@ -39,9 +41,9 @@ java -jar start.jar
39
41
 
40
42
  This will start Jetty and spit a bunch of info out onto the console. Leave that terminal window open and open a new one to play around with ActiveFedora.
41
43
 
42
- You can also set up your own copies of Fedora and Solr to run against. For info on that, see "Setting up Fedora and Solr for use with ActiveFedora":http://projects.mediashelf.us/projects/active-fedora/wiki/Setting_up_Fedora_and_Solr_for_use_with_ActiveFedora
44
+ You can also set up your own copies of Fedora and Solr to run against. For info on that, see "Setting up Fedora and Solr for use with ActiveFedora":http://projects.mediashelf.us/projects/active-fedora/wiki/Setting_up_Fedora_and_Solr_for_use_with_ActiveFedora
43
45
 
44
- h2. Open up the Console
46
+ h2. Open up the (Rails) Console (or, use irb)
45
47
 
46
48
  <pre>
47
49
  script/console
@@ -55,7 +57,7 @@ require "active_fedora/samples" # these are the sample models and datastreams th
55
57
 
56
58
  h2. Initialize ActiveFedora
57
59
 
58
- In order to function, ActiveFedora needs to know where Fedora and Solr are running. It gets this information from a YAML file.
60
+ In order to function, ActiveFedora needs to know where Fedora and Solr are running. It gets this information from a YAML file. You can see a sample fedora.yml in the ActiveFedora code on GitHub: "http://github.com/mediashelf/active_fedora/blob/master/config/fedora.yml":http://github.com/mediashelf/active_fedora/blob/master/config/fedora.yml
59
61
 
60
62
  <pre>
61
63
  ActiveFedora.init
@@ -71,19 +73,19 @@ I, [...] INFO -- : FEDORA: initialized Fedora as: #<Fedora::Repository:0x102123
71
73
 
72
74
  As you can see, ActiveFedora.init defaults to using the fedora.yml included in the gem, which points to a local instance of jetty running on port 8983 with fedora and solr installed.
73
75
 
74
- If you want to use a different fedora.yml (pointing ActiveFedora to differed Fedora & Solr URLs), put your info into a new fedora.yml and pass that path to ActiveFedora.init
76
+ If you want to use a different yml file, put your info (pointing ActiveFedora to specific Fedora & Solr URLs) into the file and pass its path to ActiveFedora.init:
75
77
 
76
78
  <pre>ActiveFedora.init("path/to/fedora.yml")</pre>
77
79
 
78
- You can see a sample fedora.yml in the ActiveFedora code on GitHub: "http://github.com/mediashelf/active_fedora/blob/master/config/fedora.yml":http://github.com/mediashelf/active_fedora/blob/master/config/fedora.yml
80
+ h4. ActiveFedora within Rails
79
81
 
80
- If you are running a rails app, ActiveFedora.init will automatically look for configs in config/fedora.yml
82
+ If you are running a rails app, ActiveFedora.init will automatically look for config/fedora.yml
81
83
 
82
84
  Also, within a rails app, you should create a file in config/initializers (ie. fedora_config.rb) that calls ActiveFedora.init
83
85
 
84
- h2. Load a fixture object to play with
86
+ h2. Load a Fixture Object To Play With
85
87
 
86
- The ActiveFedora code includes foxml files for Fedora objects that you can load into a Fedora repository and play around with. Here we will load the one called hydrangea_fixture_mods_article1.foxml.xml
88
+ The ActiveFedora code includes sample Fedora objects (as foxml files) that you can load into a Fedora repository and play around with. Here we will load the one called hydrangea_fixture_mods_article1.foxml.xml:
87
89
 
88
90
  <pre>
89
91
  filename = File.join(File.dirname(__FILE__),"spec","fixtures", "hydrangea_fixture_mods_article1.foxml.xml")
@@ -104,83 +106,106 @@ The easiest way to delete an object from Fedora is to use the following line. N
104
106
  </pre>
105
107
 
106
108
 
107
- To see a more complete implementation of importing and deleting Fedora objects, see the code in the fedora rake tasks "https://github.com/mediashelf/active_fedora/blob/master/lib/tasks/fedora.rake":https://github.com/mediashelf/active_fedora/blob/master/lib/tasks/fedora.rake
109
+ To see a more complete implementation of importing and deleting Fedora objects, see the code in this gem's fedora rake tasks "https://github.com/mediashelf/active_fedora/blob/master/lib/tasks/fedora.rake":https://github.com/mediashelf/active_fedora/blob/master/lib/tasks/fedora.rake
108
110
 
109
111
 
110
112
  *When you're done playing around with importing and deleting, make sure that you leave a copy of hydrangea:fixture_mods_article1 in fedora so we can play with it.*
111
113
 
112
114
 
113
- h4. Define a Model
114
-
115
- Look at the SpecialThing model defined in lib/active_fedora/samples/special_thing.rb to see how you declare an ActiveFedora model
115
+ h3. Define a Model for Your (Active)Fedora Objects
116
116
 
117
+ Look at the SpecialThing model defined in lib/active_fedora/samples/special_thing.rb to see how you declare an ActiveFedora model.
117
118
 
118
- Create an instance of the SpecialThing class
119
+ Create an instance of the SpecialThing class:
119
120
 
120
121
  <pre>
121
122
  newthing = SpecialThing.new
122
123
  </pre>
123
124
 
124
- Get the pid of your new object
125
+ Get the pid of your new object:
125
126
 
126
127
  <pre>
127
128
  newthing.pid
128
129
  => "changeme:30"
129
130
  </pre>
130
131
 
131
- This pid was retrieved from Fedora's getNextPid method. Your object will not show up in Fedora until you save it using newthing.save, but let's hold off on saving it for now.
132
+ This pid was retrieved from Fedora's getNextPid method.
133
+
134
+ Your object will not show up in the actual Fedora repository until you save it using newthing.save, but let's hold off on saving it for now.
132
135
 
133
- h3. RELATIONSHIPS
136
+ h3. Fedora RELATIONSHIPS in ActiveFedora
134
137
 
135
- ActiveFedora provides convenience methods for creating and editing RELS-EXT relationships. It also auto-generates methods for using Solr to search based on these relationships.
138
+ ActiveFedora provides convenience methods for creating and editing Fedora RELS-EXT relationships. It also auto-generates methods for searching these relationships with Solr. (see https://github.com/projecthydra/solrizer and https://github.com/projecthydra/solrizer-fedora)
136
139
 
137
- List the object's relationships.
140
+ Use the relationships method to list the object's relationships:
138
141
 
139
142
  <pre>
140
143
  newthing.relationships
141
144
  => {:self=>{}}
142
145
  </pre>
143
146
 
144
- Call the "inspirations" method that was created by the has_relationship line in your class definition.
147
+ The SpecialThing class definition contains these lines:
148
+
149
+ <pre>
150
+ #
151
+ # RELATIONSHIPS
152
+ #
153
+
154
+ # This is an example of how you can add a custom relationship to a model
155
+ # This will allow you to call .derivations on instances of the model to get a list of all of the _outbound_ "hasDerivation" relationships in the RELS-EXT datastream
156
+ has_relationship "derivations", :has_derivation
157
+
158
+ # This will allow you to call .inspirations on instances of the model to get a list of all of the objects that assert "hasDerivation" relationships pointing at this object
159
+ has_relationship "inspirations", :has_derivation, :inbound => true
160
+ </pre>
161
+
162
+ ActiveFedora creates methods for the SpecialThing object based on has_relationship lines. So we can call the "inspirations" method that is automatically created by ActiveFedora:
145
163
 
146
164
  <pre>
147
165
  newthing.inspirations
148
166
  => []
149
167
  </pre>
150
168
 
151
- Now create another Fedora object and make it assert that it's a part of the SpecialThing object, then save it to Fedora.
169
+ This method is actually making a search request to Solr -- it is looking in Solr to see if the "newthing" object has any "inspirations" relationships.
170
+
171
+ Now we'll create another Fedora object (using the default ActiveFedora object model) and we'll use ActiveFedora's add_relationship method to relate our new object to the SpecialThing objectl We'll also save our new object in our Fedora repository.
152
172
 
153
173
  <pre>
154
- inspirational = ActiveFedora::Base.new
155
- inspirational.add_relationship(:has_derivation, newthing)
174
+ newobj = ActiveFedora::Base.new
175
+ newobj.add_relationship(:has_derivation, newthing)
156
176
  => true
157
- inspirational.relationships
177
+ newobj.relationships
158
178
  => {:self=>{:has_derivation=>["info:fedora/changeme:30"]}}
159
- inspirational.save
179
+ newobj.save
160
180
  => ...
161
- inspirational.pid
181
+ newobj.pid
162
182
  => "changeme:164" # this is the pid you want to put in the following URLs as a replacement for {PID}
163
183
  </pre>
164
184
 
165
- You can now see that object in Fedora by going to http://localhost:8983/fedora/objects/{PID} and you can see the relationship asserted in http://localhost: 8983/fedora/objects/{PID}/datastreams/RELS-EXT/content
185
+ You can see objects in Fedora by going to http://localhost:8983/fedora/objects/{PID} and you can see the relationships for an object by looking at the RELS-EXT datastream content: http://localhost: 8983/fedora/objects/{PID}/datastreams/RELS-EXT/content
166
186
 
167
- Now look and see that the object you created shows up associated with newthing
187
+ Now let's see if the "newthing" object has an "inspiration" relationship with our "newobj"
168
188
 
169
189
  <pre>
170
190
  newthing.inspirations
171
- => ...
191
+ => ... (FIXME: put expected output here)
172
192
  newthing.inspirations.each {|pt| puts pt.pid }
173
- => ...
193
+ => ... (FIXME: put expected output here)
174
194
  newthing.inspirations(:response_format=>:id_array)
175
- => ...
195
+ => ... (FIXME: put expected output here)
176
196
  </pre>
177
197
 
178
- Note that you didn't have to save newthing in order for this relationship to show up in solr because it is an inbound relationship. Only the object that makes the assertion needs to be saved in order for the search to work. In this case, the inspirational object asserts :has_derivation rather than the derivative asserting :is_derivation_of, so only the inspirational object had to be saved.
198
+ Note that you didn't have to save the "newthing" object in order for this relationship to show up in Solr because it is an inbound relationship.
199
+
200
+ Only the ActiveFedora object making the assertion needs to be saved in order for the search to work. In our example above, new_obj asserts :has_derivation (rather than the derivative asserting :is_derivation_of), so only new_obj had to be saved.
201
+
179
202
 
180
- h3. DATASTREAMS & METADATA
203
+ h3. Fedora DATASTREAMS & METADATA in ActiveFedora
181
204
 
182
205
  h4. Blobs (a.k.a. File Datastreams, a.k.a Managed Content Datastreams)
183
206
 
207
+ Here we create a simple Datastream (using the default Datastream model).
208
+
184
209
  <pre>
185
210
  file = File.new('spec/fixtures/minivan.jpg')
186
211
  => #<File:spec/fixtures/minivan.jpg>
@@ -192,12 +217,12 @@ newthing.save
192
217
  => true
193
218
  </pre>
194
219
 
195
- Now user your browser to find the file datastreams in Fedora ...
220
+ Now use your browser to find the file datastreams in Fedora ...
196
221
 
197
222
 
198
- h4. On auto-generating datatsream ids
223
+ h4. On auto-generating datastream ids
199
224
 
200
- If you don't specify a dsid, ActiveFedora will generate one for you.
225
+ If you don't specify a dsid, ActiveFedora will generate one for you. In the example below, "DS1" is the dsID assigned to the new datastream
201
226
 
202
227
  <pre>
203
228
  file_ds2 = ActiveFedora::Datastream.new(:dsLabel => 'Minivan Plays', :altIDs => 'default', :controlGroup => 'M', :blob => file)
@@ -219,9 +244,11 @@ newthing.datastreams.keys
219
244
  newthing.save
220
245
  </pre>
221
246
 
222
- h2. Retrieving Existing Objects
247
+ h2. Getting Existing Fedora Repository Objects
248
+
249
+ When you want your code to interact with existing digital objects in a Fedora repository, use the ActiveFedora load_instance method.
223
250
 
224
- You can use the load_instance class method on any kind of ActiveFedora::Base class to load objects from Fedora.
251
+ You can use the load_instance class method on any kind of ActiveFedora::Base class to load objects from Fedora. In the example below, the ActiveFedora object model for "copy_as_base" is ActiveFedora::Base.
225
252
 
226
253
  <pre>
227
254
  newthing.pid
@@ -229,20 +256,24 @@ newthing.pid
229
256
  copy_as_base = ActiveFedora::Base.load_instance("changeme:30")
230
257
  copy_as_base.pid
231
258
  => "changeme:30"
259
+ newthing.relationships
260
+ => {:self=>{:has_model=>["info:fedora/afmodel:SpecialThing"]}}
232
261
  copy_as_base.relationships
233
262
  => {:self=>{:has_model=>["info:fedora/afmodel:SpecialThing"]}}
263
+ newthing.datastreams.keys
264
+ => ["DS1", "descMetadata", "Foo1", "minivan", "RELS-EXT", "rightsMetadata", "DC", "extraMetadataForFun"]
234
265
  copy_as_base.datastreams.keys
235
266
  => ["DS1", "descMetadata", "Foo1", "minivan", "RELS-EXT", "rightsMetadata", "DC", "extraMetadataForFun"]
236
267
  </pre>
237
268
 
238
- As you can see, ActiveFedora::Base will load the object, its datastreams, its generic Fedora Object information, and even its RELS-EXT relationships. It will _not_, however, know how to deserialize any model-specific metadata datastreams. In other words, ActiveFedora::Base treats all datastreams as generic Fedora datastreams.
269
+ As you can see, ActiveFedora::Base will load the object, its datastreams, its generic Fedora Object information, and even its RELS-EXT relationships. It will _not_, however, know how to deserialize any model-specific metadata datastreams. In other words, *ActiveFedora::Base treats all datastreams as generic Fedora datastreams*.
239
270
 
240
271
  <pre>
241
272
  copy_as_base.datastreams["extraMetadataForFun"].class
242
273
  => ActiveFedora::Datastream
243
274
  </pre>
244
275
 
245
- If you want the model-specific metadata to be deserialized, you must call load_instance on the appropriate model class. This will load all of the same info as ActiveFedora::Base, but it will also attempt to deserialize the xml from any metadata datastreams that were declared by the has_metadata method in the model.
276
+ If you want the model-specific metadata to be deserialized, you must call load_instance on the appropriate ActiveFedora model class. This will load all of the same info as ActiveFedora::Base, but it will also attempt to deserialize the xml from any metadata datastreams that were declared by the has_metadata method in the model.
246
277
 
247
278
  <pre>
248
279
  copy_as_specialthing = SpecialThing.load_instance(newthing.pid)
@@ -252,13 +283,22 @@ copy_as_specialthing.datastreams["extraMetadataForFun"].class
252
283
  => ActiveFedora::Marpa::DcDatastream
253
284
  </pre>
254
285
 
255
- h2. Finding Objects
256
286
 
257
- All descendants of ActiveFedora::Base provide a find method that will search for objects of the given class. The method is somewhat incomplete at the moment, but is functional. We are actively working on making it better.
287
+ You can use "find" instead of "load_instance". In practice, we tend to use load_instance though -- it's more direct.
288
+
289
+ <pre>
290
+ Base.find("changeme:30")
291
+ SpecialThing.find("changeme:30")
292
+ </pre>
293
+
294
+
295
+ h3. Finding Fedora Repository Objects of the Same Class
296
+
297
+ All descendants of the ActiveFedora::Base class inherit the "find" method which searches Solr for Fedora repository objects of the given class. The method is somewhat incomplete at the moment, but is functional. We are actively working on making it better.
258
298
 
259
299
  h3. Finding Instances of the Class
260
300
 
261
- Imitating ActiveRecord, you can search for instances of the given class by calling find(:all) on that class. In current versions of the gem, this method searches solr using the active_fedora_model_field. In future versions it will not hit solr at all, instead relying on Fedora's Resource Index and searching for anything that asserts "conformsTo" or "hasModel" relationships pointing at the given model.
301
+ Imitating ActiveRecord, the find(:all) method (inherited from the ActiveFedora::Base class) searches for instances of the calling class. In current versions of the gem, this method searches solr using the active_fedora_model_field. In future versions it will not hit solr at all, instead relying on Fedora's Resource Index and searching for anything that asserts "conformsTo" or "hasModel" relationships pointing at the given model.
262
302
 
263
303
  <pre>
264
304
  ActiveFedora::Base.find(:all)
@@ -273,21 +313,12 @@ solr_result = ActiveFedora::SolrService.instance.conn.query('has_model_s:info\:f
273
313
 
274
314
  This query will return a Solr::Result containing all of the objects that have conformsTo relationships pointing at info:fedora/afmodel:SpecialThing in their RELS-EXT. This relationship gets added to the RELS-EXT whenever you save an object as a given ActiveFedora model and it does not get erased if you later save it as a different model.
275
315
 
276
- h3. Finding (Loading) a specific Object
277
316
 
278
- You can use this instead of .load_instance. In practice, we tend to use load_instance though -- it's more direct.
279
-
280
- <pre>
281
- Base.find("changeme:30")
282
- SpecialThing.find("changeme:30")
283
- </pre>
284
-
285
-
286
- h3. Looking a bit deeper at what Models do
317
+ h2. More About ActiveFedora Models
287
318
 
288
319
  ActiveFedora Models don't actually do much. They mainly keep a list of datastream ids and associate them with classes that help you use the content from those datastreams.
289
320
 
290
- When you're ready to learn more about how to define ActiveFedora models and OM-based datastreams, open up the files in lib/active_fedora/samples. Those will give you more background. Here, we're seeing what happens when you use those Models and datastreams.
321
+ When you're ready to learn more about how to define ActiveFedora models and OM-based datastreams, examine the files in lib/active_fedora/samples. Those will give you more background. Here, we're seeing what happens when you use those Models and datastreams.
291
322
 
292
323
  For now, load an instance of the SpecialThing model and take a look at its datastreams.
293
324
 
@@ -301,10 +332,12 @@ st.datastreams.keys
301
332
 
302
333
  We see the three datastreams that are declared by the SpecialThing Model, but where did the other datastreams come from?
303
334
 
335
+ h3. Default Fedora Datastreams
336
+
304
337
  The RELS-EXT is where Fedora objects store their relationships, so SpecialThing uses that datastream when it uses the methods created by has_relationship.
305
338
 
306
- The other two datastreams, DC and properties, were already there in the object we imported. Our model doesn't define anything about those datastreams, so they are loaded as mere ActiveFedora::Datastreams. When a datastream is loaded in this way, you can still see it and access/update its content as a blob, but your model doesn't know anything special about its contents. This behavior is what allows us to have multiple interfaces for the same content. One model might care only about the descMetadata and the properties while another model only cares about the descMetadata and rightsMetadata. The two models only need to be consistent with each other when they are both operating on the same datastream.
307
-
339
+ The other two datastreams, DC and properties, were already there in the object we imported. Our model doesn't define anything about those datastreams, so they are loaded as mere ActiveFedora::Datastreams. When a datastream is loaded in this way, you can still see it and access/update its content as a blob, but your model doesn't know anything special about its contents. This behavior is what allows us to have multiple interfaces for the same content. One model might care only about the descMetadata and the properties while another model only cares about the descMetadata and rightsMetadata. The two models only need to be consistent with each other when they are both operating on the same datastream in the same object.
340
+
308
341
  Let's see what classes the datastreams have been bound to
309
342
 
310
343
  <pre>
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active-fedora (2.2.0.rails3pre1)
5
- active-fedora
4
+ active-fedora (2.3.1)
6
5
  activeresource
7
6
  equivalent-xml
8
7
  facets
@@ -1,6 +1,6 @@
1
1
  h2. Description
2
2
 
3
- RubyFedora and ActiveFedora provide a set of Ruby gems for creating and managing objects in the Fedora Repository Architecture ("http://fedora-commons.org":http://fedora-commons.org).
3
+ RubyFedora and ActiveFedora provide a set of Ruby gems for creating and managing objects in the Fedora Repository Architecture ("http://fedora-commons.org":http://fedora-commons.org). ActiveFedora is loosely based on "ActiveRecord" in Rails.
4
4
 
5
5
  h2. Getting Help
6
6
 
@@ -18,7 +18,7 @@ h2. Getting Started
18
18
 
19
19
  The "ActiveFedora Console Tour":https://github.com/mediashelf/active_fedora/blob/master/CONSOLE_GETTING_STARTED.textile gives you a brief tour through ActiveFedora's features on the command line.
20
20
 
21
- h2. Testing
21
+ h2. Testing (this Gem)
22
22
 
23
23
  In order to run the RSpec tests, you need to have a copy of the ActiveFedora source code, and then run bundle install in the source directory.
24
24
 
@@ -7,7 +7,7 @@ test:
7
7
  fedora:
8
8
  url: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora
9
9
  solr:
10
- url: http://127.0.0.1:8983/solr/development
10
+ url: http://127.0.0.1:8983/solr/test
11
11
  production:
12
12
  fedora:
13
13
  url: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8080/fedora
@@ -13,34 +13,31 @@
13
13
  # With the last two lines of this file uncommented, the relationships hash of your object will include:
14
14
  # :oai_item_id => ["info:fedora/oai:example.edu:changeme:500"]
15
15
  #
16
- # With the last two lines of this file commented out, the relationships hash of your object will include:
17
- # "oai_itemID" => ["info:fedora/oai:example.edu:changeme:500"]
18
- #
19
16
  :predicate_mapping:
20
17
  info:fedora/fedora-system:def/relations-external#:
21
- :is_derivation_of: isDerivationOf
22
- :is_metadata_for: isMetadataFor
23
- :is_member_of_collection: isMemberOfCollection
24
- :has_derivation: hasDerivation
25
- :is_annotation_of: isAnnotationOf
26
- :is_constituent_of: isConstituentOf
27
- :is_dependent_of: isDependentOf
28
- :has_collection_member: hasCollectionMember
18
+ :conforms_to: conformsTo
29
19
  :has_annotation: hasAnnotation
20
+ :has_collection_member: hasCollectionMember
30
21
  :has_constituent: hasConstituent
31
22
  :has_dependent: hasDependent
32
- :is_part_of: isPartOf
23
+ :has_derivation: hasDerivation
24
+ :has_description: hasDescription
33
25
  :has_equivalent: hasEquivalent
34
- :is_subset_of: isSubsetOf
35
- :is_description_of: isDescriptionOf
36
- :is_member_of: isMemberOf
37
- :has_model: hasModel
38
- :conforms_to: conformsTo
39
26
  :has_metadata: hasMetadata
40
- :has_subset: hasSubset
41
- :has_description: hasDescription
42
- :has_part: hasPart
43
27
  :has_member: hasMember
28
+ :has_model: hasModel
29
+ :has_part: hasPart
30
+ :has_subset: hasSubset
31
+ :is_annotation_of: isAnnotationOf
32
+ :is_constituent_of: isConstituentOf
33
+ :is_dependent_of: isDependentOf
34
+ :is_derivation_of: isDerivationOf
35
+ :is_description_of: isDescriptionOf
36
+ :is_member_of: isMemberOf
37
+ :is_member_of_collection: isMemberOfCollection
38
+ :is_metadata_for: isMetadataFor
39
+ :is_part_of: isPartOf
40
+ :is_subset_of: isSubsetOf
44
41
  info:fedora/fedora-system:def/model#:
45
42
  :has_model: hasModel
46
43
  # http://www.openarchives.org/OAI/2.0/:
@@ -3,7 +3,6 @@ gem 'solr-ruby'
3
3
  require "loggable"
4
4
 
5
5
  $: << 'lib'
6
- require 'logger'
7
6
  require 'active_fedora/solr_service.rb'
8
7
  require "solrizer"
9
8
 
@@ -30,6 +29,8 @@ ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
30
29
 
31
30
  module ActiveFedora #:nodoc:
32
31
 
32
+ include Loggable
33
+
33
34
  class << self
34
35
  attr_accessor :solr_config, :fedora_config
35
36
  end
@@ -90,10 +91,6 @@ module ActiveFedora #:nodoc:
90
91
  Fedora::Repository.instance
91
92
  end
92
93
 
93
- def self.logger
94
- @logger ||= defined?(RAILS_DEFAULT_LOGGER) ? RAILS_DEFAULT_LOGGER : Logger.new(STDOUT)
95
- end
96
-
97
94
  def self.predicate_config
98
95
  @predicate_config_path ||= build_predicate_config_path
99
96
  end
@@ -1,11 +1,11 @@
1
1
  require "active-fedora"
2
2
  module Hydra
3
3
 
4
- # This is an example of a NokogiriDatastream that defines a terminology for MODS xml
4
+ # This is an example of a NokogiriDatastream that defines an OM terminology for MODS xml
5
5
  # It focuses on the aspects of MODS that deal with descriptive metadata for published articles
6
- # The real version of this Terminology is part of the hydra-head plugin. See https://github.com/projecthydra/hydra-head/blob/master/lib/hydra/mods_article.rb
6
+ # This is not the hydra-head plugin version of this OM Terminology; See https://github.com/projecthydra/hydra-head/blob/master/lib/hydra/mods_article.rb
7
7
  #
8
- # Things to note about the Terminology it defines:
8
+ # Things to note about the OM Terminology defined here:
9
9
  #
10
10
  # * Uses :ref terms to repeat the structures of a mods:name with a different @type on the mods:name element
11
11
  # * Defines a term lang_code that maps to "languageTerm[@type=code]"