active-fedora 8.7.0 → 9.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (242) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +8 -15
  3. data/Gemfile +5 -5
  4. data/History.txt +0 -80
  5. data/README.md +1 -0
  6. data/Rakefile +0 -3
  7. data/active-fedora.gemspec +8 -7
  8. data/config/fedora.yml +5 -4
  9. data/config/predicate_mappings.yml +5 -5
  10. data/gemfiles/rails4.1.gemfile +10 -0
  11. data/gemfiles/rails4.2.beta.gemfile +10 -0
  12. data/lib/active_fedora.rb +151 -117
  13. data/lib/active_fedora/associations.rb +47 -15
  14. data/lib/active_fedora/associations/association.rb +29 -8
  15. data/lib/active_fedora/associations/association_scope.rb +5 -5
  16. data/lib/active_fedora/associations/belongs_to_association.rb +20 -63
  17. data/lib/active_fedora/associations/builder/association.rb +61 -25
  18. data/lib/active_fedora/associations/builder/belongs_to.rb +7 -94
  19. data/lib/active_fedora/associations/builder/collection_association.rb +11 -43
  20. data/lib/active_fedora/associations/builder/contains.rb +28 -0
  21. data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +13 -3
  22. data/lib/active_fedora/associations/builder/has_many.rb +16 -10
  23. data/lib/active_fedora/associations/builder/property.rb +14 -0
  24. data/lib/active_fedora/associations/builder/singular_association.rb +14 -18
  25. data/lib/active_fedora/associations/builder/singular_property.rb +12 -0
  26. data/lib/active_fedora/associations/collection_association.rb +57 -80
  27. data/lib/active_fedora/associations/contains_association.rb +50 -0
  28. data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +44 -24
  29. data/lib/active_fedora/associations/has_many_association.rb +46 -14
  30. data/lib/active_fedora/associations/rdf.rb +86 -0
  31. data/lib/active_fedora/associations/singular_association.rb +4 -8
  32. data/lib/active_fedora/associations/singular_rdf.rb +15 -0
  33. data/lib/active_fedora/attached_files.rb +195 -0
  34. data/lib/active_fedora/attribute_methods.rb +122 -0
  35. data/lib/active_fedora/attribute_methods/dirty.rb +16 -0
  36. data/lib/active_fedora/attribute_methods/read.rb +61 -0
  37. data/lib/active_fedora/attribute_methods/write.rb +47 -0
  38. data/lib/active_fedora/attributes.rb +93 -44
  39. data/lib/active_fedora/attributes/primary_key.rb +12 -0
  40. data/lib/active_fedora/autosave_association.rb +2 -2
  41. data/lib/active_fedora/base.rb +16 -15
  42. data/lib/active_fedora/callbacks.rb +7 -7
  43. data/lib/active_fedora/change_set.rb +34 -0
  44. data/lib/active_fedora/cleaner.rb +62 -0
  45. data/lib/active_fedora/config.rb +4 -22
  46. data/lib/active_fedora/core.rb +173 -99
  47. data/lib/active_fedora/datastream.rb +4 -117
  48. data/lib/active_fedora/datastreams.rb +2 -263
  49. data/lib/active_fedora/datastreams/nokogiri_datastreams.rb +28 -51
  50. data/lib/active_fedora/{datastream_attribute.rb → delegated_attribute.rb} +57 -26
  51. data/lib/active_fedora/errors.rb +61 -0
  52. data/lib/active_fedora/fedora.rb +19 -0
  53. data/lib/active_fedora/fedora_attributes.rb +58 -26
  54. data/lib/active_fedora/file.rb +318 -0
  55. data/lib/active_fedora/file_configurator.rb +32 -32
  56. data/lib/active_fedora/file_path_builder.rb +24 -0
  57. data/lib/active_fedora/files_hash.rb +82 -0
  58. data/lib/active_fedora/fixity_service.rb +40 -0
  59. data/lib/active_fedora/indexing.rb +55 -82
  60. data/lib/active_fedora/indexing_service.rb +70 -0
  61. data/lib/active_fedora/ldp_resource.rb +26 -0
  62. data/lib/active_fedora/loadable_from_json.rb +112 -0
  63. data/lib/active_fedora/model.rb +5 -19
  64. data/lib/active_fedora/nested_attributes.rb +5 -6
  65. data/lib/active_fedora/nom_datastream.rb +15 -25
  66. data/lib/active_fedora/om_datastream.rb +26 -197
  67. data/lib/active_fedora/persistence.rb +95 -71
  68. data/lib/active_fedora/predicates.rb +4 -4
  69. data/lib/active_fedora/qualified_dublin_core_datastream.rb +17 -18
  70. data/lib/active_fedora/querying.rb +3 -4
  71. data/lib/active_fedora/railtie.rb +3 -6
  72. data/lib/active_fedora/rdf.rb +3 -1
  73. data/lib/active_fedora/rdf/datastream_indexing.rb +11 -0
  74. data/lib/active_fedora/rdf/fcrepo.rb +10 -324
  75. data/lib/active_fedora/rdf/indexing.rb +20 -16
  76. data/lib/active_fedora/rdf/ldp.rb +6 -0
  77. data/lib/active_fedora/rdf/ntriples_rdf_datastream.rb +1 -1
  78. data/lib/active_fedora/rdf/persistence.rb +5 -6
  79. data/lib/active_fedora/rdf/rdf_datastream.rb +44 -37
  80. data/lib/active_fedora/rdf/rdfxml_datastream.rb +13 -0
  81. data/lib/active_fedora/rdf/rels_ext.rb +26 -0
  82. data/lib/active_fedora/reflection.rb +256 -199
  83. data/lib/active_fedora/relation.rb +18 -6
  84. data/lib/active_fedora/relation/finder_methods.rb +69 -38
  85. data/lib/active_fedora/relation/query_methods.rb +7 -3
  86. data/lib/active_fedora/rspec_matchers/belong_to_associated_active_fedora_object_matcher.rb +7 -7
  87. data/lib/active_fedora/rspec_matchers/have_many_associated_active_fedora_objects_matcher.rb +8 -8
  88. data/lib/active_fedora/rspec_matchers/have_predicate_matcher.rb +9 -11
  89. data/lib/active_fedora/simple_datastream.rb +18 -13
  90. data/lib/active_fedora/solr_instance_loader.rb +18 -38
  91. data/lib/active_fedora/solr_service.rb +37 -20
  92. data/lib/active_fedora/sparql_insert.rb +45 -0
  93. data/lib/active_fedora/test_support.rb +1 -22
  94. data/lib/active_fedora/version.rb +1 -1
  95. data/lib/active_fedora/versionable.rb +90 -0
  96. data/lib/active_fedora/with_metadata.rb +37 -0
  97. data/lib/active_fedora/with_metadata/metadata_node.rb +70 -0
  98. data/lib/generators/active_fedora/config/config_generator.rb +0 -1
  99. data/lib/generators/active_fedora/config/solr/solr_generator.rb +1 -1
  100. data/lib/generators/active_fedora/model/model_generator.rb +5 -5
  101. data/lib/generators/active_fedora/model/templates/datastream_spec.rb.erb +1 -1
  102. data/lib/generators/active_fedora/model/templates/model_spec.rb.erb +2 -2
  103. data/lib/tasks/active_fedora_dev.rake +21 -27
  104. data/spec/config_helper.rb +1 -1
  105. data/spec/fixtures/mixed_rdf_descMetadata.nt +6 -6
  106. data/spec/fixtures/rails_root/config/predicate_mappings.yml +3 -19
  107. data/spec/fixtures/solr_rdf_descMetadata.nt +6 -6
  108. data/spec/integration/associations_spec.rb +133 -153
  109. data/spec/integration/attached_files_spec.rb +164 -0
  110. data/spec/integration/attributes_spec.rb +73 -12
  111. data/spec/integration/autosave_association_spec.rb +3 -3
  112. data/spec/integration/base_spec.rb +57 -351
  113. data/spec/integration/belongs_to_association_spec.rb +86 -76
  114. data/spec/integration/bug_spec.rb +3 -3
  115. data/spec/integration/collection_association_spec.rb +4 -4
  116. data/spec/integration/complex_rdf_datastream_spec.rb +54 -56
  117. data/spec/integration/delete_all_spec.rb +18 -15
  118. data/spec/integration/eradicate_spec.rb +54 -0
  119. data/spec/integration/fedora_solr_sync_spec.rb +7 -5
  120. data/spec/integration/field_to_solr_name_spec.rb +5 -5
  121. data/spec/integration/file_fixity_spec.rb +40 -0
  122. data/spec/integration/file_spec.rb +122 -0
  123. data/spec/integration/full_featured_model_spec.rb +53 -63
  124. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +141 -114
  125. data/spec/integration/has_many_associations_spec.rb +142 -64
  126. data/spec/integration/json_serialization_spec.rb +50 -8
  127. data/spec/integration/model_spec.rb +12 -29
  128. data/spec/integration/nested_attribute_spec.rb +28 -20
  129. data/spec/integration/ntriples_datastream_spec.rb +60 -57
  130. data/spec/integration/om_datastream_spec.rb +51 -140
  131. data/spec/integration/rdf_nested_attributes_spec.rb +16 -14
  132. data/spec/integration/relation_delegation_spec.rb +7 -9
  133. data/spec/integration/relation_spec.rb +9 -7
  134. data/spec/integration/scoped_query_spec.rb +26 -26
  135. data/spec/integration/solr_instance_loader_spec.rb +69 -53
  136. data/spec/integration/solr_service_spec.rb +12 -73
  137. data/spec/integration/versionable_spec.rb +477 -0
  138. data/spec/integration/with_metadata_spec.rb +52 -0
  139. data/spec/samples/hydra-mods_article_datastream.rb +10 -6
  140. data/spec/samples/models/mods_article.rb +6 -2
  141. data/spec/samples/oral_history_sample.xml +1 -1
  142. data/spec/samples/oral_history_xml.xml +1 -1
  143. data/spec/samples/special_thing.rb +3 -3
  144. data/spec/spec_helper.rb +22 -12
  145. data/spec/support/an_active_model.rb +3 -7
  146. data/spec/unit/active_fedora_spec.rb +20 -17
  147. data/spec/unit/attached_files_spec.rb +203 -0
  148. data/spec/unit/attributes_spec.rb +286 -207
  149. data/spec/unit/base_active_model_spec.rb +8 -8
  150. data/spec/unit/base_datastream_management_spec.rb +11 -24
  151. data/spec/unit/base_extra_spec.rb +17 -67
  152. data/spec/unit/base_spec.rb +163 -428
  153. data/spec/unit/builder/has_and_belongs_to_many_spec.rb +2 -2
  154. data/spec/unit/callback_spec.rb +38 -23
  155. data/spec/unit/change_set_spec.rb +46 -0
  156. data/spec/unit/code_configurator_spec.rb +5 -5
  157. data/spec/unit/config_spec.rb +9 -14
  158. data/spec/unit/core_spec.rb +59 -8
  159. data/spec/unit/file_configurator_spec.rb +55 -53
  160. data/spec/unit/file_path_builder_spec.rb +18 -0
  161. data/spec/unit/file_spec.rb +221 -0
  162. data/spec/unit/files_hash_spec.rb +53 -0
  163. data/spec/unit/fixity_service_spec.rb +34 -0
  164. data/spec/unit/has_and_belongs_to_many_association_spec.rb +134 -0
  165. data/spec/unit/has_many_association_spec.rb +51 -0
  166. data/spec/unit/indexing_service_spec.rb +23 -0
  167. data/spec/unit/indexing_spec.rb +26 -0
  168. data/spec/unit/inheritance_spec.rb +9 -10
  169. data/spec/unit/model_spec.rb +15 -33
  170. data/spec/unit/nom_datastream_spec.rb +13 -10
  171. data/spec/unit/ntriples_datastream_spec.rb +81 -96
  172. data/spec/unit/om_datastream_spec.rb +137 -227
  173. data/spec/unit/persistence_spec.rb +28 -34
  174. data/spec/unit/predicates_spec.rb +29 -29
  175. data/spec/unit/property_spec.rb +1 -3
  176. data/spec/unit/qualified_dublin_core_datastream_spec.rb +27 -32
  177. data/spec/unit/query_spec.rb +116 -149
  178. data/spec/unit/rdf_datastream_spec.rb +25 -43
  179. data/spec/unit/rdf_resource_datastream_spec.rb +24 -123
  180. data/spec/unit/{rdfxml_rdf_datastream_spec.rb → rdfxml_datastream_spec.rb} +21 -25
  181. data/spec/unit/readonly_spec.rb +23 -0
  182. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +6 -6
  183. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +6 -6
  184. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +6 -6
  185. data/spec/unit/serializers_spec.rb +1 -1
  186. data/spec/unit/simple_datastream_spec.rb +12 -23
  187. data/spec/unit/solr_config_options_spec.rb +14 -17
  188. data/spec/unit/solr_service_spec.rb +38 -77
  189. data/spec/unit/sparql_insert_spec.rb +32 -0
  190. data/spec/unit/validations_spec.rb +8 -11
  191. metadata +96 -121
  192. data/lib/active_fedora/auditable.rb +0 -9
  193. data/lib/active_fedora/content_model.rb +0 -70
  194. data/lib/active_fedora/datastream_collections.rb +0 -302
  195. data/lib/active_fedora/datastream_hash.rb +0 -35
  196. data/lib/active_fedora/digital_object.rb +0 -55
  197. data/lib/active_fedora/fixture_exporter.rb +0 -33
  198. data/lib/active_fedora/fixture_loader.rb +0 -48
  199. data/lib/active_fedora/rdf/identifiable.rb +0 -66
  200. data/lib/active_fedora/rdf/project_hydra.rb +0 -12
  201. data/lib/active_fedora/rdf/rdfxml_rdf_datastream.rb +0 -13
  202. data/lib/active_fedora/rdf_xml_writer.rb +0 -49
  203. data/lib/active_fedora/relationship_graph.rb +0 -101
  204. data/lib/active_fedora/reload_on_save.rb +0 -16
  205. data/lib/active_fedora/rels_ext_datastream.rb +0 -100
  206. data/lib/active_fedora/rspec_matchers/match_fedora_datastream_matcher.rb +0 -41
  207. data/lib/active_fedora/rubydora_connection.rb +0 -35
  208. data/lib/active_fedora/semantic_node.rb +0 -164
  209. data/lib/active_fedora/service_definitions.rb +0 -88
  210. data/lib/active_fedora/sharding.rb +0 -58
  211. data/lib/active_fedora/solr_digital_object.rb +0 -68
  212. data/lib/active_fedora/unsaved_digital_object.rb +0 -58
  213. data/lib/generators/active_fedora/config/fedora/fedora_generator.rb +0 -12
  214. data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +0 -38
  215. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/development/fedora.fcfg +0 -953
  216. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/test/fedora.fcfg +0 -953
  217. data/lib/tasks/active_fedora.rake +0 -83
  218. data/spec/fixtures/sharded_fedora.yml +0 -11
  219. data/spec/integration/auditable_spec.rb +0 -29
  220. data/spec/integration/datastream_collections_spec.rb +0 -127
  221. data/spec/integration/datastream_spec.rb +0 -90
  222. data/spec/integration/datastreams_spec.rb +0 -173
  223. data/spec/integration/load_from_solr_spec.rb +0 -66
  224. data/spec/integration/rels_ext_datastream_spec.rb +0 -82
  225. data/spec/support/mock_fedora.rb +0 -44
  226. data/spec/unit/content_model_spec.rb +0 -86
  227. data/spec/unit/datastream_collections_spec.rb +0 -420
  228. data/spec/unit/datastream_spec.rb +0 -83
  229. data/spec/unit/datastreams_spec.rb +0 -243
  230. data/spec/unit/has_and_belongs_to_many_collection_spec.rb +0 -96
  231. data/spec/unit/has_many_collection_spec.rb +0 -35
  232. data/spec/unit/rdf_vocab_spec.rb +0 -30
  233. data/spec/unit/rdf_xml_writer_spec.rb +0 -63
  234. data/spec/unit/relationship_graph_spec.rb +0 -115
  235. data/spec/unit/reload_on_save_spec.rb +0 -24
  236. data/spec/unit/rels_ext_datastream_spec.rb +0 -170
  237. data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +0 -44
  238. data/spec/unit/rubydora_connection_spec.rb +0 -12
  239. data/spec/unit/semantic_node_spec.rb +0 -112
  240. data/spec/unit/service_definitions_spec.rb +0 -63
  241. data/spec/unit/solr_digital_object_spec.rb +0 -97
  242. data/spec/unit/unsaved_digital_object_spec.rb +0 -48
@@ -3,13 +3,12 @@ module ActiveFedora
3
3
  module Persistence
4
4
  extend ActiveSupport::Concern
5
5
 
6
- ## Required by associations
7
6
  def new_record?
8
- inner_object.new_record?
7
+ @ldp_source.new?
9
8
  end
10
9
 
11
10
  def persisted?
12
- !(new_record? || destroyed?)
11
+ !(destroyed? || new_record?)
13
12
  end
14
13
 
15
14
  # Returns true if this object has been destroyed, otherwise returns false.
@@ -17,7 +16,7 @@ module ActiveFedora
17
16
  @destroyed
18
17
  end
19
18
 
20
- # Saves a Base object, and any dirty datastreams, then updates
19
+ # Saves a Base object, and any dirty attached files, then updates
21
20
  # the Solr index for this object, unless option :update_index=>false is present.
22
21
  # Indexing is also controlled by the `create_needs_index?' and `update_needs_index?' methods.
23
22
  #
@@ -25,61 +24,57 @@ module ActiveFedora
25
24
  # @option options [Boolean] :update_index (true) set false to skip indexing
26
25
  # @return [Boolean] true if save was successful, otherwise false
27
26
  def save(options={})
28
- new_record? ? create(options) : update_record(options)
27
+ raise ReadOnlyRecord if readonly?
28
+ new_record? ? create_record(options) : update_record(options)
29
29
  end
30
30
 
31
31
  def save!(options={})
32
32
  save(options)
33
33
  end
34
34
 
35
- # This can be overriden to assert a different model
36
- # It's normally called once in the lifecycle, by #create#
37
- def assert_content_model
38
- add_relationship(:has_model, self.class.to_class_uri)
39
- end
40
-
41
- # Pushes the object and all of its new or dirty datastreams into Fedora
35
+ # Pushes the object and all of its new or dirty attached files into Fedora
42
36
  def update(attributes)
43
37
  self.attributes=attributes
44
38
  save
45
39
  end
46
40
 
47
41
  alias update_attributes update
48
-
49
- # Refreshes the object's info from Fedora
50
- # Note: Currently just registers any new datastreams that have appeared in fedora
51
- def refresh
52
- # inner_object.load_attributes_from_fedora
53
- end
54
42
 
55
- #Deletes a Base object, also deletes the info indexed in Solr, and
43
+ #Deletes a Base object, also deletes the info indexed in Solr, and
56
44
  #the underlying inner_object. If this object is held in any relationships (ie inbound relationships
57
45
  #outside of this object it will remove it from those items rels-ext as well
58
46
  def delete
47
+ return self if new_record?
48
+
49
+ @destroyed = true
59
50
  reflections.each_pair do |name, reflection|
60
51
  if reflection.macro == :has_many
61
- association(name).delete_all
52
+ association(name.to_sym).delete_all
62
53
  end
63
54
  end
64
55
 
65
- @pid ||= self.pid ## cache so it's still available after delete
56
+ id = self.id ## cache so it's still available after delete
57
+ # Clear out the ETag
58
+ @ldp_source = LdpResource.new(conn, uri)
66
59
  begin
67
- @inner_object.delete
68
- rescue RestClient::ResourceNotFound => e
69
- raise ObjectNotFoundError, "Unable to find #{pid} in the repository"
70
- end
71
- if ENABLE_SOLR_UPDATES
72
- solr = ActiveFedora::SolrService.instance.conn
73
- solr.delete_by_id(pid, params: {'softCommit' => true})
60
+ @ldp_source.delete
61
+ rescue Ldp::NotFound
62
+ raise ObjectNotFoundError, "Unable to find #{id} in the repository"
74
63
  end
75
- @destroyed = true
64
+
65
+ ActiveFedora::SolrService.delete(id) if ENABLE_SOLR_UPDATES
76
66
  freeze
77
67
  end
78
68
 
79
69
  def destroy
70
+ raise ReadOnlyRecord if readonly?
80
71
  delete
81
72
  end
82
73
 
74
+ def eradicate
75
+ self.class.eradicate(self.id)
76
+ end
77
+
83
78
  module ClassMethods
84
79
  # Creates an object (or multiple objects) and saves it to the repository, if validations pass.
85
80
  # The resulting object is returned whether the object was saved successfully to the repository or not.
@@ -107,59 +102,88 @@ module ActiveFedora
107
102
  if attributes.is_a?(Array)
108
103
  attributes.collect { |attr| create(attr, &block) }
109
104
  else
110
- object = new(attributes)
111
- yield(object) if block_given?
105
+ object = new(attributes, &block)
112
106
  object.save
113
107
  object
114
108
  end
115
109
  end
116
- end
117
110
 
118
- protected
111
+ # Removes an object's tombstone so another object with the same uri may be created.
112
+ # NOTE: this is in violation of the linked data platform and is only here as a convience
113
+ # method. It shouldn't be used in the general course of repository operations.
114
+ def eradicate(uri)
115
+ gone?(uri) ? delete_tombstone(uri) : false
116
+ end
119
117
 
120
- # Determines whether a create operation causes a solr index of this object by default.
121
- # Override this if you need different behavior.
122
- def create_needs_index?
123
- ENABLE_SOLR_UPDATES
124
- end
118
+ private
125
119
 
126
- # Determines whether an update operation causes a solr index of this object by default.
127
- # Override this if you need different behavior
128
- def update_needs_index?
129
- ENABLE_SOLR_UPDATES
120
+ def gone? uri
121
+ ActiveFedora::Base.find(uri)
122
+ false
123
+ rescue Ldp::Gone
124
+ true
125
+ end
126
+
127
+ def delete_tombstone uri
128
+ tombstone = ActiveFedora::Base.id_to_uri(uri) + "/fcr:tombstone"
129
+ ActiveFedora.fedora.connection.delete(tombstone)
130
+ true
131
+ end
130
132
  end
131
133
 
132
134
  private
133
-
134
- # Deals with preparing new object to be saved to Fedora, then pushes it and its datastreams into Fedora.
135
- def create(options={})
136
- assign_pid
137
- assert_content_model
138
- should_update_index = create_needs_index? && options.fetch(:update_index, true)
139
- persist(should_update_index)
140
- end
141
-
142
- def update_record(options={})
143
- should_update_index = update_needs_index? && options.fetch(:update_index, true)
144
- persist(should_update_index)
145
- end
146
-
147
- # replace the unsaved digital object with a saved digital object
148
- def assign_pid
149
- @inner_object = @inner_object.save
150
- end
151
-
152
- def persist(should_update_index)
153
- serialize_datastreams
154
- result = @inner_object.save
155
- ### Rubydora re-inits the datastreams after a save, so ensure our copy stays in synch
156
- @inner_object.datastreams.each do |dsid, ds|
157
- datastreams[dsid] = ds
158
- ds.model = self if ds.kind_of? RelsExtDatastream
159
- end
135
+
136
+ # Deals with preparing new object to be saved to Fedora, then pushes it and its attached files into Fedora.
137
+ def create_record(options = {})
138
+ assign_rdf_subject
139
+ serialize_attached_files
140
+ @ldp_source = @ldp_source.create
141
+ @resource = nil
142
+ assign_uri_to_attached_files
143
+ save_attached_files
144
+ refresh
145
+ end
146
+
147
+ def update_record(options = {})
148
+ serialize_attached_files
149
+ execute_sparql_update
150
+ save_attached_files
160
151
  refresh
161
- update_index if should_update_index
162
- return !!result
152
+ end
153
+
154
+ def refresh
155
+ @ldp_source = LdpResource.new(conn, uri)
156
+ @resource = nil
157
+ end
158
+
159
+ def execute_sparql_update
160
+ change_set = ChangeSet.new(self, self.resource, self.changed_attributes.keys)
161
+ return true if change_set.empty?
162
+ SparqlInsert.new(change_set.changes).execute(uri)
163
+ end
164
+
165
+
166
+ def assign_id
167
+ end
168
+
169
+ def assign_rdf_subject
170
+ @ldp_source = if !id && new_id = assign_id
171
+ LdpResource.new(ActiveFedora.fedora.connection, self.class.id_to_uri(new_id), @resource)
172
+ else
173
+ LdpResource.new(ActiveFedora.fedora.connection, @ldp_source.subject, @resource, ActiveFedora.fedora.host + ActiveFedora.fedora.base_path)
174
+ end
175
+ end
176
+
177
+ def assign_uri_to_attached_files
178
+ attached_files.each do |name, ds|
179
+ ds.uri= "#{uri}/#{name}"
180
+ end
181
+ end
182
+
183
+ def save_attached_files
184
+ attached_files.select { |_, file| file.changed? }.each do |_, file|
185
+ file.save # Don't call save! because if the content_changed? returns false, it'll raise an error.
186
+ end
163
187
  end
164
188
  end
165
189
  end
@@ -17,7 +17,7 @@ module ActiveFedora
17
17
  #TODO, these could be cached
18
18
  case predicate
19
19
  when :has_model, "hasModel", :hasModel
20
- xmlns="info:fedora/fedora-system:def/model#"
20
+ xmlns="http://fedora.info/definitions/v4/model#"
21
21
  begin
22
22
  rel_predicate = predicate_lookup(predicate,xmlns)
23
23
  rescue UnregisteredPredicateError
@@ -25,7 +25,7 @@ module ActiveFedora
25
25
  rel_predicate = nil
26
26
  end
27
27
  else
28
- xmlns="info:fedora/fedora-system:def/relations-external#"
28
+ xmlns="http://fedora.info/definitions/v4/rels-ext#"
29
29
  begin
30
30
  rel_predicate = predicate_lookup(predicate,xmlns)
31
31
  rescue UnregisteredPredicateError
@@ -52,7 +52,7 @@ module ActiveFedora
52
52
  # If predicate is a symbol, looks up the predicate in the predicate_mappings
53
53
  # If predicate is not a Symbol, returns the predicate untouched
54
54
  # @raise UnregisteredPredicateError if the predicate is a symbol but is not found in the predicate_mappings
55
- def self.predicate_lookup(predicate,namespace="info:fedora/fedora-system:def/relations-external#")
55
+ def self.predicate_lookup(predicate,namespace="http://fedora.info/definitions/v4/rels-ext#")
56
56
  if predicate.class == Symbol
57
57
  if predicate_mappings[namespace].has_key?(predicate)
58
58
  return predicate_mappings[namespace][predicate]
@@ -100,7 +100,7 @@ module ActiveFedora
100
100
  # @example
101
101
  # ActiveFedora::Predicates.set_predicates({
102
102
  # "http://projecthydra.org/ns/relations#"=>{has_profile:"hasProfile"},
103
- # "info:fedora/fedora-system:def/relations-external#"=>{
103
+ # "http://fedora.info/definitions/v4/rels-ext#"=>{
104
104
  # references:"references",
105
105
  # has_derivation: "cameFrom"
106
106
  # },
@@ -1,27 +1,26 @@
1
1
  module ActiveFedora
2
- #This class represents a Qualified Dublin Core Datastream. A special case of ActiveFedora::MetdataDatastream
2
+ #This class represents a Qualified Dublin Core Datastream. A special case of ActiveFedora::OmDatastream
3
3
  #The implementation of this class defines the terms from the Qualified Dublin Core specification.
4
- #This implementation features customized xml generators and deserialization routines to handle the
4
+ #This implementation features customized xml generators and deserialization routines to handle the
5
5
  #Fedora Dublin Core XML datastreams structure.
6
6
  #
7
- #Fields can still be overridden if more specificity is desired (see ActiveFedora::Datastream#fields method).
7
+ #Fields can still be overridden if more specificity is desired (see ActiveFedora::File#fields method).
8
8
  class QualifiedDublinCoreDatastream < OmDatastream
9
9
 
10
10
  attr_accessor :fields
11
11
  class_attribute :class_fields
12
12
  self.class_fields = []
13
-
14
-
15
- set_terminology do |t|
16
- t.root(:path=>"dc", :xmlns=>"http://purl.org/dc/terms/")
17
- end
13
+
14
+ set_terminology do |t|
15
+ t.root(:path=>"dc", :xmlns=>"http://purl.org/dc/terms/")
16
+ end
18
17
 
19
18
  define_template :creator do |xml,name|
20
19
  xml.creator() do
21
20
  xml.text(name)
22
21
  end
23
22
  end
24
-
23
+
25
24
  #A frozen array of Dublincore Terms.
26
25
  DCTERMS = [
27
26
  :abstract,
@@ -113,8 +112,8 @@ module ActiveFedora
113
112
  #
114
113
  #There is quite a good example of this class in use in spec/examples/oral_history.rb
115
114
  #
116
- #!! Careful: If you declare two fields that correspond to the same xml node without any qualifiers to differentiate them,
117
- #you will end up replicating the values in the underlying datastream, resulting in mysterious dubling, quadrupling, etc.
115
+ #!! Careful: If you declare two fields that correspond to the same xml node without any qualifiers to differentiate them,
116
+ #you will end up replicating the values in the underlying datastream, resulting in mysterious dubling, quadrupling, etc.
118
117
  #whenever you edit the field's values.
119
118
  def field(name, tupe=nil, opts={})
120
119
  fields ||= {}
@@ -128,9 +127,9 @@ module ActiveFedora
128
127
  self.class.terminology.add_term(term)
129
128
  term.generate_xpath_queries!
130
129
  end
131
-
130
+
132
131
  end
133
-
132
+
134
133
  def update_indexed_attributes(params={}, opts={})
135
134
  # if the params are just keys, not an array, make then into an array.
136
135
  new_params = {}
@@ -143,19 +142,19 @@ module ActiveFedora
143
142
  end
144
143
  super(new_params, opts)
145
144
  end
146
-
145
+
147
146
 
148
147
  def self.xml_template
149
148
  Nokogiri::XML::Document.parse("<dc xmlns:dcterms='http://purl.org/dc/terms/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'/>")
150
149
  end
151
150
 
152
- def to_solr(solr_doc = Hash.new) # :nodoc:
151
+ def to_solr(solr_doc = Hash.new, opts = {}) # :nodoc:
153
152
  @fields.each do |field_key, field_info|
154
153
  things = send(field_key)
155
- if things
154
+ if things
156
155
  field_symbol = ActiveFedora::SolrService.solr_name(field_key, type: field_info[:type])
157
- things.val.each do |val|
158
- ::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val )
156
+ things.val.each do |val|
157
+ ::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val )
159
158
  end
160
159
  end
161
160
  end
@@ -1,8 +1,7 @@
1
1
  module ActiveFedora
2
2
  module Querying
3
-
4
- delegate :find, :first, :exists?, :where, :limit, :offset, :order, :delete_all,
5
- :destroy_all, :count, :last, :find_with_conditions, :find_in_batches, :find_each, :to=>:all
3
+ delegate :find, :first, :exists?, :where, :limit, :offset, :order, :delete_all,
4
+ :destroy_all, :count, :last, :find_with_conditions, :find_in_batches, :find_each, to: :all
6
5
 
7
6
  def self.extended(base)
8
7
  base.class_attribute :solr_query_handler
@@ -10,7 +9,7 @@ module ActiveFedora
10
9
  end
11
10
 
12
11
  def default_sort_params
13
- [ActiveFedora::SolrService.solr_name(:system_create, :stored_sortable, type: :date)+' asc']
12
+ [ActiveFedora::SolrService.solr_name(:system_create, :stored_sortable, type: :date)+' asc']
14
13
  end
15
14
 
16
15
  end
@@ -1,14 +1,11 @@
1
1
  module ActiveFedora
2
2
  class Railtie < Rails::Railtie
3
- rake_tasks do
4
- load "tasks/active_fedora.rake"
5
- end
6
3
 
7
- initializer 'active_fedora.autoload', :before => :set_autoload_paths do |app|
8
- app.config.autoload_paths += ['app/models/datastreams']
4
+ initializer 'active_fedora.autoload', before: :set_autoload_paths do |app|
5
+ app.config.autoload_paths << 'app/models/datastreams'
9
6
  end
10
7
 
11
- initializer "active_fedora.logger" do
8
+ initializer "active_fedora.logger" do
12
9
  ActiveSupport.on_load(:active_fedora) { self.logger ||= ::Rails.logger }
13
10
  end
14
11
 
@@ -1,11 +1,13 @@
1
1
  module ActiveFedora
2
2
  module RDF
3
3
  extend ActiveSupport::Autoload
4
+ autoload :DatastreamIndexing
4
5
  autoload :Fcrepo
6
+ autoload :Ldp
5
7
  autoload :Indexing
6
8
  autoload :Identifiable
7
9
  autoload :ObjectResource
8
10
  autoload :Persistence
9
- autoload :ProjectHydra
11
+ autoload :RelsExt
10
12
  end
11
13
  end
@@ -0,0 +1,11 @@
1
+ module ActiveFedora::RDF
2
+ module DatastreamIndexing
3
+ extend ActiveSupport::Concern
4
+ include Indexing
5
+
6
+ def apply_prefix(name, file_path)
7
+ prefix(file_path) + name.to_s
8
+ end
9
+ end
10
+ end
11
+
@@ -1,326 +1,12 @@
1
- # -*- encoding: utf-8 -*-
2
- # This file generated automatically using vocab-fetch from github.com:fcrepo3/fcrepo/master/fcrepo-server/src/main/resources/rdfs/fedora_relsext_ontology.rdfs
3
- # and edited for clarity and additional terms published in different serializations of the voabularies
4
1
  require 'rdf'
5
- module ActiveFedora::RDF
6
- module Fcrepo
7
- class System < ::RDF::StrictVocabulary("info:fedora/fedora-system:")
8
- term :"ContentModel-3.0",
9
- comment: %(Base Fedora 3 CModel cModel).freeze,
10
- label: "Fedora 3 Content Model".freeze,
11
- subClassOf: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
12
- type: "info:fedora/fedora-system:def/model#FedoraObject".freeze
13
- term :"FedoraObject-3.0",
14
- comment: %(Base Fedora 3 Object cModel).freeze,
15
- label: "Fedora 3 Object".freeze,
16
- subClassOf: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
17
- type: "info:fedora/fedora-system:def/model#FedoraObject".freeze
18
- term :"ServiceDefinition-3.0",
19
- comment: %(Fedora 3 Service Definition/BDef cModel).freeze,
20
- label: "Fedora 3 Service Definition".freeze,
21
- subClassOf: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
22
- type: "info:fedora/fedora-system:def/model#FedoraObject".freeze
23
- term :"ServiceDeployment-3.0",
24
- comment: %(Fedora 3 Service Deployment/BMech cModel).freeze,
25
- label: "Fedora 3 Service Deployment".freeze,
26
- subClassOf: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
27
- type: "info:fedora/fedora-system:def/model#FedoraObject".freeze
28
- end
29
- class Model < ::RDF::StrictVocabulary("info:fedora/fedora-system:def/model#")
30
- # Class definitions
31
- term :FedoraObject,
32
- comment: %(The base type of all objects in Fedora).freeze,
33
- label: "FedoraObject".freeze,
34
- subClassOf: "rdfs:Resource".freeze,
35
- type: "rdfs:Class".freeze
36
- term :Datastream,
37
- comment: %(Binary data associated with a Fedora object).freeze,
38
- label: "Datastream".freeze,
39
- subClassOf: "rdfs:Resource".freeze,
40
- type: "rdfs:Class".freeze
41
- term :ExtProperty,
42
- comment: %(Reification of an extension property of a Fedora object used in messaging).freeze,
43
- label: "ExtProperty".freeze,
44
- subClassOf: "rdf:Property".freeze,
45
- type: "rdfs:Class".freeze
46
- term :State,
47
- comment: %(The state of a Fedora object or datastream).freeze,
48
- label: "State".freeze,
49
- subClassOf: "rdfs:Resource".freeze,
50
- type: "rdfs:Class".freeze
51
- term :Active,
52
- comment: %(State of an object available in the repository).freeze,
53
- label: "Active".freeze,
54
- subClassOf: "rdfs:Resource".freeze,
55
- type: "info:fedora/fedora-system:def/model#State".freeze
56
- term :Deleted,
57
- comment: %(State of an object that should be considered deleted, but is not purged).freeze,
58
- label: "Deleted".freeze,
59
- subClassOf: "rdfs:Resource".freeze,
60
- type: "info:fedora/fedora-system:def/model#State".freeze
61
- term :Inactive,
62
- comment: %(State of an object that should be considered temporarily unavailable).freeze,
63
- label: "Inactive".freeze,
64
- subClassOf: "rdfs:Resource".freeze,
65
- type: "info:fedora/fedora-system:def/model#State".freeze
66
- # Property definitions
67
- property :altIds,
68
- comment: %(The alternate IDs for a datastream).freeze,
69
- label: "Alternate IDs".freeze,
70
- domain: "info:fedora/fedora-system:def/model#Datastream",
71
- range: "xsd:string".freeze,
72
- type: "rdf:Property".freeze
73
- property :controlGroup,
74
- comment: %(indicates whether a Datastream's content is inline XML (X), Managed (M), Referenced (R) or External (E)).freeze,
75
- label: "controlGroup".freeze,
76
- domain: "info:fedora/fedora-system:def/model#Datastream",
77
- range: "xsd:string".freeze,
78
- type: "rdf:Property".freeze
79
- property :createdDate,
80
- comment: %(The UTC datetime an object was created).freeze,
81
- label: "createdDate".freeze,
82
- domain: "info:fedora/fedora-system:def/model#FedoraObject",
83
- range: "xsd:dateTimeStamp".freeze,
84
- type: "rdf:Property".freeze
85
- property :definesMethod,
86
- comment: %(indicates the name of a service method defined in this interface).freeze,
87
- label: "definesMethod".freeze,
88
- domain: "info:fedora/fedora-system:ServiceDefinition-3.0".freeze,
89
- range: "xsd:NCName".freeze,
90
- type: "rdf:Property".freeze
91
- property :digest,
92
- comment: %(indicates the checksum digest of a datastream's contents or the keyword 'none').freeze,
93
- label: "digest".freeze,
94
- domain: "info:fedora/fedora-system:def/model#Datastream",
95
- range: "xsd:string".freeze,
96
- type: "rdf:Property".freeze
97
- property :digestType,
98
- comment: %(indicates either the checksum algorithm or the keyword DISABLED).freeze,
99
- label: "digestType".freeze,
100
- domain: "info:fedora/fedora-system:def/model#Datastream",
101
- range: "xsd:string".freeze,
102
- type: "rdf:Property".freeze
103
- property :downloadFilename,
104
- comment: %(indicates the name to be used when downloading a datastream's contents).freeze,
105
- label: "downloadFilename".freeze,
106
- domain: "info:fedora/fedora-system:def/model#Datastream",
107
- range: "xsd:string".freeze,
108
- type: "rdf:Property".freeze
109
- property :extProperty,
110
- comment: %(indicates an extension property of an object in Fedora in messaging).freeze,
111
- label: "extProperty".freeze,
112
- domain: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
113
- range: "info:fedora/fedora-system:def/model#ExtProperty".freeze,
114
- type: "rdf:Property".freeze
115
- property :formatURI,
116
- comment: %(A URI indicating the format of a datastream's content).freeze,
117
- label: "formatURI".freeze,
118
- type: "rdf:Property".freeze
119
- property :hasModel,
120
- comment: %(Indicates the Fedora 3 CModels for this object).freeze,
121
- label: "hasModel".freeze,
122
- subPropertyOf: "rdf:type".freeze,
123
- domain: "info:fedora/fedora-system:FedoraObject-3.0".freeze,
124
- range: "info:fedora/fedora-system:ContentModel-3.0".freeze,
125
- type: "rdf:Property".freeze
126
- property :hasService,
127
- comment: %(indicates the Fedora 3 Service Definitions applicable to this CModel).freeze,
128
- label: "hasService".freeze,
129
- domain: "info:fedora/fedora-system:ContentModel-3.0".freeze,
130
- range: "info:fedora/fedora-system:ServiceDefinition-3.0".freeze,
131
- type: "rdf:Property".freeze
132
- property :isContractorOf,
133
- comment: %(indicates the Fedora 3 Content Models this deployment applies to).freeze,
134
- label: "".freeze,
135
- domain: "info:fedora/fedora-system:ServiceDeployment-3.0".freeze,
136
- range: "info:fedora/fedora-system:ContentModel-3.0".freeze,
137
- type: "rdf:Property".freeze
138
- property :isDeploymentOf,
139
- comment: %(indicates the Fedora 3 Service Definitions this deployment implements).freeze,
140
- label: "isDeploymentOf".freeze,
141
- domain: "info:fedora/fedora-system:ServiceDeployment-3.0".freeze,
142
- range: "info:fedora/fedora-system:ServiceDefinition-3.0".freeze,
143
- type: "rdf:Property".freeze
144
- property :label,
145
- comment: %(The label applied to a Fedora object).freeze,
146
- label: "label".freeze,
147
- domain: "info:fedora/fedora-system:def/model#FedoraObject".freeze,
148
- range: "xsd:string".freeze,
149
- type: "rdf:Property".freeze
150
- property :length,
151
- comment: %(indicates the length of a datastream's contents).freeze,
152
- label: "length".freeze,
153
- domain: "info:fedora/fedora-system:def/model#Datastream".freeze,
154
- range: "xsd:nonNegativeInteger".freeze,
155
- type: "rdf:Property".freeze
156
- property :ownerId,
157
- comment: %(indicates the owner of an object).freeze,
158
- label: "ownerId".freeze,
159
- type: "rdf:Property".freeze
160
- property :state,
161
- comment: %(indicates the state of the object or datastream).freeze,
162
- label: "state".freeze,
163
- domain: ["info:fedora/fedora-system:def/model#FedoraObject".freeze,"info:fedora/fedora-system:def/model#Datastream".freeze],
164
- range: "info:fedora/fedora-system:def/model#State".freeze,
165
- type: "rdf:Property".freeze
166
- property :versionable,
167
- comment: %(indicates whether a datastream's property and contents changes are being tracked as versions).freeze,
168
- label: "versionable".freeze,
169
- domain: "info:fedora/fedora-system:def/model#Datastream".freeze,
170
- range: "xsd:boolean".freeze,
171
- type: "rdf:Property".freeze
172
- end
173
- class RelsExt < ::RDF::StrictVocabulary("info:fedora/fedora-system:def/relations-external#")
2
+ class ActiveFedora::RDF::Fcrepo < RDF::StrictVocabulary("http://fedora.info/definitions/v4/repository#")
174
3
 
175
- # Property definitions
176
- property :fedoraRelationship,
177
- comment: %(The primitive property for all object-to-object relationships in the fedora ontology).freeze,
178
- label: "Fedora Relationship".freeze,
179
- type: "rdf:Property".freeze
180
- property :hasAnnotation,
181
- comment: %(A refinement of the generic descriptive relationship indicating a commentary relationship between fedora objects. The subject is a fedora object that is being commented on and the predicate is a fedora object that represents an annotation or comment about the subject. ).freeze,
182
- label: "Has Annotation".freeze,
183
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#hasDescription".freeze,
184
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isAnnotationOf).freeze,
185
- type: "rdf:Property".freeze
186
- property :hasCollectionMember,
187
- label: "Has Collection Member".freeze,
188
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#hasMember".freeze,
189
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isMemberOfCollection).freeze,
190
- type: "rdf:Property".freeze
191
- property :hasConstituent,
192
- label: "Has Constituent".freeze,
193
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#hasPart".freeze,
194
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isConstituentOf).freeze,
195
- type: "rdf:Property".freeze
196
- property :hasDependent,
197
- label: "Has Dependent".freeze,
198
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
199
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isDependentOf).freeze,
200
- type: "rdf:Property".freeze
201
- property :hasDerivation,
202
- label: "Has Derivation".freeze,
203
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
204
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isDerivationOf).freeze,
205
- type: "rdf:Property".freeze
206
- property :hasDescription,
207
- comment: %(A generic descriptive relationship between fedora objects. The subject is a fedora object that is being described in some manner and the predicate is a fedora object that represents a descriptive entity that is about the subject. ).freeze,
208
- label: "Has Description".freeze,
209
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
210
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isDescriptionOf).freeze,
211
- type: "rdf:Property".freeze
212
- property :hasEquivalent,
213
- label: "Has Equivalent".freeze,
214
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
215
- type: "rdf:Property".freeze
216
- property :hasMember,
217
- label: "Has Member".freeze,
218
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#hasPart/".freeze,
219
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isMemberOf).freeze,
220
- type: "rdf:Property".freeze
221
- property :hasMetadata,
222
- comment: %(A refinement of the generic descriptive relationship indicating a metadata relationship between fedora objects. The subject is a fedora object and the predicate is a fedora object that represents metadata about the subject. ).freeze,
223
- label: "Has Metadata".freeze,
224
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#hasDescription".freeze,
225
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isMetadataFor).freeze,
226
- type: "rdf:Property".freeze
227
- property :hasPart,
228
- label: "Has Part".freeze,
229
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
230
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isPartOf).freeze,
231
- type: "rdf:Property".freeze
232
- property :hasSubset,
233
- label: "Has Subset".freeze,
234
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#hasMember".freeze,
235
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#isSubsetOf).freeze,
236
- type: "rdf:Property".freeze
237
- property :isAnnotationOf,
238
- comment: %(A refinement of the generic descriptive relationship indicating a commentary relationship between fedora objects. The subject is a fedora object that represents an annotation or comment and the predicate is a fedora object that is being commented upon by the subject.).freeze,
239
- label: "Is Annotation Of".freeze,
240
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#isDescriptionOf".freeze,
241
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasAnnotation).freeze,
242
- type: "rdf:Property".freeze
243
- property :isConstituentOf,
244
- label: "Is Constituent Of".freeze,
245
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#isPartOf".freeze,
246
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasConstituent).freeze,
247
- type: "rdf:Property".freeze
248
- property :isDependentOf,
249
- label: "Is Dependent Of".freeze,
250
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
251
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasDependent).freeze,
252
- type: "rdf:Property".freeze
253
- property :isDerivationOf,
254
- label: "Is Derivation Of".freeze,
255
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
256
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasDerivation).freeze,
257
- type: "rdf:Property".freeze
258
- property :isDescriptionOf,
259
- comment: %(A generic descriptive relationship between fedora objects. The subject is a fedora object that represents a descriptive entity and the predicate is a fedora object that is being described in some manner by the subject.).freeze,
260
- label: "Is Description Of".freeze,
261
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
262
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasDescription).freeze,
263
- type: "rdf:Property".freeze
264
- property :isMemberOf,
265
- label: "Is Member Of".freeze,
266
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#isPartOf".freeze,
267
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasMember).freeze,
268
- type: "rdf:Property".freeze
269
- property :isMemberOfCollection,
270
- label: "Is Member Of Collection".freeze,
271
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#isMemberOf".freeze,
272
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasCollectionMember).freeze,
273
- type: "rdf:Property".freeze
274
- property :isMetadataFor,
275
- comment: %(A refinement of the generic descriptive relationship indicating a metadata relationship between fedora objects. The subject is a fedora object that represents metadata and the predicate is a fedora object for which the subject serves as metadata.).freeze,
276
- label: "Is Metadata For".freeze,
277
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#isDescriptionOf".freeze,
278
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasMetadata).freeze,
279
- type: "rdf:Property".freeze
280
- property :isPartOf,
281
- label: "Is Part Of".freeze,
282
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#fedoraRelationship".freeze,
283
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasPart).freeze,
284
- type: "rdf:Property".freeze
285
- property :isSubsetOf,
286
- label: "Is Subset Of".freeze,
287
- subPropertyOf: "info:fedora/fedora-system:def/relations-external#isMemberOf".freeze,
288
- "owl:inverseOf" => %(info:fedora/fedora-system:def/relations-external#hasSubset).freeze,
289
- type: "rdf:Property".freeze
290
- end
291
- class View < ::RDF::StrictVocabulary("info:fedora/fedora-system:def/view#")
292
- property :disseminates,
293
- comment: %(A property used to indicate that an object contains a datastream).freeze,
294
- label: "disseminates".freeze,
295
- domain: "info:fedora/fedora-system:FedoraObject-3.0".freeze,
296
- range: "info:fedora/fedora-system:def/model#Datastream".freeze,
297
- type: "rdf:Property".freeze
298
- property :disseminationType,
299
- comment: %(A property whose object is common to all Datastreams of a given DSID).freeze,
300
- label: "dissemination type".freeze,
301
- type: "rdf:Property".freeze
302
- property :isVolatile,
303
- comment: %(A property indicating that a datastream's content is a reference to content external to the repository).freeze,
304
- label: "isVolatile".freeze,
305
- domain: "info:fedora/fedora-system:def/model#Datastream".freeze,
306
- range: "xsd:boolean".freeze,
307
- type: "rdf:Property".freeze
308
- property :lastModifiedDate,
309
- comment: %(UTC datetime of the last change to an object or most recent version of this datastream).freeze,
310
- label: "lastModifiedDate".freeze,
311
- domain: ["info:fedora/fedora-system:def/model#FedoraObject".freeze,"info:fedora/fedora-system:def/model#Datastream".freeze],
312
- range: "xsd:dateTimeStamp".freeze,
313
- type: "rdf:Property".freeze
314
- property :mimeType,
315
- comment: %(The MIME type of this datastream's content).freeze,
316
- label: "mimeType".freeze,
317
- domain: "info:fedora/fedora-system:def/model#Datastream".freeze,
318
- range: "xsd:string".freeze,
319
- type: "rdf:Property".freeze
320
- property :version,
321
- comment: %(indicates Fedora server version in messaging).freeze,
322
- label: "Server version".freeze,
323
- type: "rdf:Property".freeze
324
- end
325
- end
326
- end
4
+ # Property definitions
5
+ property :hasContent, comment: %(Defining where the fedora object has content.)
6
+ property :mimeType
7
+
8
+ property :created
9
+ property :lastModified
10
+ property :hasChild
11
+
12
+ end