active-fedora 9.0.0.beta2 → 9.0.0.beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config/jetty.yml +1 -1
- data/lib/active_fedora.rb +11 -3
- data/lib/active_fedora/associations/association_scope.rb +2 -2
- data/lib/active_fedora/associations/belongs_to_association.rb +2 -2
- data/lib/active_fedora/associations/collection_association.rb +13 -13
- data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +2 -2
- data/lib/active_fedora/associations/rdf.rb +2 -2
- data/lib/active_fedora/cleaner.rb +2 -6
- data/lib/active_fedora/fedora.rb +18 -0
- data/lib/active_fedora/fedora_attributes.rb +4 -4
- data/lib/active_fedora/file.rb +7 -0
- data/lib/active_fedora/fixity_service.rb +9 -1
- data/lib/active_fedora/indexing_service.rb +2 -7
- data/lib/active_fedora/loadable_from_json.rb +4 -0
- data/lib/active_fedora/om_datastream.rb +0 -4
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +1 -1
- data/lib/active_fedora/query_result_builder.rb +56 -0
- data/lib/active_fedora/querying.rb +1 -1
- data/lib/active_fedora/rdf.rb +2 -1
- data/lib/active_fedora/rdf/fcrepo.rb +323 -9
- data/lib/active_fedora/rdf/fcrepo4.rb +7 -0
- data/lib/active_fedora/rdf/indexing.rb +1 -1
- data/lib/active_fedora/rdf/project_hydra.rb +12 -0
- data/lib/active_fedora/reflection.rb +4 -1
- data/lib/active_fedora/relation/finder_methods.rb +4 -4
- data/lib/active_fedora/simple_datastream.rb +11 -12
- data/lib/active_fedora/solr_instance_loader.rb +1 -1
- data/lib/active_fedora/solr_query_builder.rb +57 -0
- data/lib/active_fedora/solr_service.rb +22 -48
- data/lib/active_fedora/version.rb +1 -1
- data/lib/active_fedora/versionable.rb +12 -13
- data/spec/integration/associations_spec.rb +6 -6
- data/spec/integration/attributes_spec.rb +22 -6
- data/spec/integration/base_spec.rb +2 -2
- data/spec/integration/collection_association_spec.rb +9 -0
- data/spec/integration/file_spec.rb +30 -0
- data/spec/integration/full_featured_model_spec.rb +1 -1
- data/spec/integration/ntriples_datastream_spec.rb +5 -5
- data/spec/integration/om_datastream_spec.rb +1 -1
- data/spec/integration/{solr_service_spec.rb → query_result_builder_spec.rb} +5 -7
- data/spec/integration/relation_delegation_spec.rb +3 -3
- data/spec/integration/scoped_query_spec.rb +11 -11
- data/spec/integration/solr_instance_loader_spec.rb +8 -0
- data/spec/integration/versionable_spec.rb +32 -14
- data/spec/unit/base_spec.rb +3 -3
- data/spec/unit/indexing_service_spec.rb +2 -2
- data/spec/unit/ntriples_datastream_spec.rb +16 -16
- data/spec/unit/om_datastream_spec.rb +7 -7
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -1
- data/spec/unit/query_result_builder_spec.rb +39 -0
- data/spec/unit/query_spec.rb +2 -2
- data/spec/unit/rdf_vocab_spec.rb +30 -0
- data/spec/unit/simple_datastream_spec.rb +2 -2
- data/spec/unit/solr_config_options_spec.rb +1 -1
- data/spec/unit/solr_query_builder_spec.rb +20 -0
- data/spec/unit/solr_service_spec.rb +2 -53
- metadata +11 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 380da0e904e671fecd1e7cc340a7ff9e7e43ca89
|
4
|
+
data.tar.gz: 01155eab5f9d0480eefc945636a17c48707ddae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33fe88b57b1e02b8173754cbbac2a722f364b33d119375f2a3c1b1a44229040c779938896ac3abd15a58ef0647b591346fe161ab10b1f7e89b076a1f12d52929
|
7
|
+
data.tar.gz: a7b51616edde2428ac50bd8721f82d7db76e70d1532e02613b31e06e20a1b54d1d15826993d98763d3e592c78bc49953090b45805d9596b9dc6f618534f59f27
|
data/config/jetty.yml
CHANGED
data/lib/active_fedora.rb
CHANGED
@@ -19,12 +19,16 @@ module RDF
|
|
19
19
|
class Literal
|
20
20
|
class DateTime < Literal
|
21
21
|
ALTERNATIVE_FORMAT = '%Y-%m-%dT%H:%M:%S'.freeze
|
22
|
+
DOT = '.'.freeze
|
23
|
+
Z = 'Z'.freeze
|
24
|
+
EMPTY = ''.freeze
|
22
25
|
|
23
26
|
def to_s
|
24
27
|
@string ||= begin
|
25
|
-
|
26
|
-
nano = '.
|
27
|
-
|
28
|
+
# Show nanoseconds but remove trailing zeros
|
29
|
+
nano = @object.strftime('%N').sub(/0+\Z/, EMPTY)
|
30
|
+
nano = DOT + nano unless nano.blank?
|
31
|
+
@object.strftime(ALTERNATIVE_FORMAT) + nano + Z
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|
@@ -69,6 +73,7 @@ module ActiveFedora #:nodoc:
|
|
69
73
|
autoload :Persistence
|
70
74
|
autoload :QualifiedDublinCoreDatastream
|
71
75
|
autoload :Querying
|
76
|
+
autoload :QueryResultBuilder
|
72
77
|
autoload :RDF
|
73
78
|
autoload_under 'rdf' do
|
74
79
|
autoload :RDFDatastream
|
@@ -91,6 +96,7 @@ module ActiveFedora #:nodoc:
|
|
91
96
|
autoload :Serialization
|
92
97
|
autoload :SimpleDatastream
|
93
98
|
autoload :SolrInstanceLoader
|
99
|
+
autoload :SolrQueryBuilder
|
94
100
|
autoload :SolrService
|
95
101
|
autoload :SparqlInsert
|
96
102
|
autoload :Predicates
|
@@ -151,6 +157,7 @@ module ActiveFedora #:nodoc:
|
|
151
157
|
SolrService.reset!
|
152
158
|
Predicates.predicate_config = nil
|
153
159
|
configurator.init(options)
|
160
|
+
fedora.init_base_path
|
154
161
|
end
|
155
162
|
|
156
163
|
def config
|
@@ -224,6 +231,7 @@ module ActiveFedora #:nodoc:
|
|
224
231
|
end
|
225
232
|
end
|
226
233
|
end
|
234
|
+
|
227
235
|
end
|
228
236
|
|
229
237
|
self.configurator ||= ActiveFedora::FileConfigurator.new
|
@@ -22,10 +22,10 @@ module ActiveFedora
|
|
22
22
|
chain.each_with_index do |reflection, i|
|
23
23
|
if reflection.source_macro == :belongs_to
|
24
24
|
# Create a partial solr query using the ids. We may add additional filters such as class_name later
|
25
|
-
scope = scope.where( ActiveFedora::
|
25
|
+
scope = scope.where( ActiveFedora::SolrQueryBuilder.construct_query_for_ids([owner[reflection.foreign_key]]))
|
26
26
|
elsif reflection.source_macro == :has_and_belongs_to_many
|
27
27
|
else
|
28
|
-
scope = scope.where( ActiveFedora::
|
28
|
+
scope = scope.where( ActiveFedora::SolrQueryBuilder.construct_query_for_rel(association.send(:find_reflection) => owner.id))
|
29
29
|
end
|
30
30
|
|
31
31
|
is_first_chain = i == 0
|
@@ -42,8 +42,8 @@ module ActiveFedora
|
|
42
42
|
candidate_classes = klass.descendants.select {|d| d.name }
|
43
43
|
candidate_classes += [klass] unless klass == ActiveFedora::Base
|
44
44
|
model_pairs = candidate_classes.inject([]) { |arr, klass| arr << [:has_model, klass.to_class_uri]; arr }
|
45
|
-
'(' + ActiveFedora::
|
46
|
-
ActiveFedora::
|
45
|
+
'(' + ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids) + ') AND (' +
|
46
|
+
ActiveFedora::SolrQueryBuilder.construct_query_for_rel(model_pairs, 'OR') + ')'
|
47
47
|
end
|
48
48
|
|
49
49
|
def foreign_key_present?
|
@@ -8,7 +8,6 @@ module ActiveFedora
|
|
8
8
|
construct_query
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
11
|
# Implements the reader method, e.g. foo.items for Foo.has_many :items
|
13
12
|
# @param opts [Boolean, Hash] if true, force a reload
|
14
13
|
# @option opts [Symbol] :response_format can be ':solr' to return a solr result.
|
@@ -264,7 +263,7 @@ module ActiveFedora
|
|
264
263
|
def find_target
|
265
264
|
# TODO: don't reify, just store the solr results and lazily reify.
|
266
265
|
# For now, we set a hard limit of 1000 results.
|
267
|
-
records = ActiveFedora::
|
266
|
+
records = ActiveFedora::QueryResultBuilder.reify_solr_results(load_from_solr(rows: 1000))
|
268
267
|
records.each { |record| set_inverse_instance(record) }
|
269
268
|
records
|
270
269
|
end
|
@@ -332,37 +331,38 @@ module ActiveFedora
|
|
332
331
|
def construct_query
|
333
332
|
|
334
333
|
#TODO use primary_key instead of id
|
335
|
-
clauses = {
|
334
|
+
clauses = { find_reflection => @owner.id }
|
336
335
|
clauses[:has_model] = @reflection.class_name.constantize.to_class_uri if @reflection.class_name && @reflection.class_name != 'ActiveFedora::Base'
|
337
|
-
@counter_query = @finder_query = ActiveFedora::
|
336
|
+
@counter_query = @finder_query = ActiveFedora::SolrQueryBuilder.construct_query_for_rel(clauses)
|
338
337
|
end
|
339
338
|
|
340
339
|
|
341
340
|
private
|
342
341
|
|
343
|
-
def
|
344
|
-
if @reflection.options[:predicate]
|
345
|
-
|
346
|
-
elsif @reflection.class_name && @reflection.class_name != 'ActiveFedora::Base' && @reflection.macro != :has_and_belongs_to_many
|
342
|
+
def find_reflection
|
343
|
+
return reflection if @reflection.options[:predicate]
|
344
|
+
if @reflection.class_name && @reflection.class_name != 'ActiveFedora::Base' && @reflection.macro != :has_and_belongs_to_many
|
347
345
|
inverse_relation = @owner.class.to_s.underscore.to_sym
|
348
346
|
begin
|
349
|
-
|
347
|
+
find_reflection_for_relation(@reflection.class_name.constantize)
|
350
348
|
rescue NameError
|
351
349
|
raise "No :predicate attribute was set or could be inferred for #{@reflection.macro} #{@reflection.name.inspect} on #{@owner.class}"
|
352
350
|
end
|
351
|
+
else
|
352
|
+
raise "Couldn't find reflection"
|
353
353
|
end
|
354
354
|
end
|
355
355
|
|
356
|
-
def
|
356
|
+
def find_reflection_for_relation(klass, inverse_relation=@owner.class.to_s.underscore.to_sym)
|
357
357
|
raise "Unable to lookup the :predicate attribute for #{@reflection.macro} #{@reflection.name.inspect} on #{@owner.class} because #{klass} specifies \"class_name: 'ActiveFedora::Base'\". Either specify a specific class_name in #{klass} or set :predicate in the #{@reflection.macro} declaration on #{@owner.class}" if inverse_relation == :'active_fedora/base'
|
358
358
|
if klass.reflections.key?(inverse_relation)
|
359
359
|
# Try it singular
|
360
|
-
return klass.reflections[inverse_relation]
|
360
|
+
return klass.reflections[inverse_relation]
|
361
361
|
elsif klass.reflections.key?(inverse_relation.to_s.pluralize.to_sym)
|
362
362
|
# Try it plural
|
363
|
-
return klass.reflections[inverse_relation.to_s.pluralize.to_sym]
|
363
|
+
return klass.reflections[inverse_relation.to_s.pluralize.to_sym]
|
364
364
|
end
|
365
|
-
|
365
|
+
find_reflection_for_relation(klass, @owner.class.superclass.to_s.underscore.to_sym)
|
366
366
|
end
|
367
367
|
|
368
368
|
def create_record(attributes, raise = false)
|
@@ -51,10 +51,10 @@ module ActiveFedora
|
|
51
51
|
return [] if ids.blank?
|
52
52
|
solr_result = []
|
53
53
|
0.step(ids.size,page_size) do |startIdx|
|
54
|
-
query = ActiveFedora::
|
54
|
+
query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids.slice(startIdx,page_size))
|
55
55
|
solr_result += ActiveFedora::SolrService.query(query, rows: page_size)
|
56
56
|
end
|
57
|
-
return ActiveFedora::
|
57
|
+
return ActiveFedora::QueryResultBuilder.reify_solr_results(solr_result)
|
58
58
|
end
|
59
59
|
|
60
60
|
# In a HABTM, just look in the RDF, no need to run a count query from solr.
|
@@ -54,10 +54,10 @@ module ActiveFedora
|
|
54
54
|
def filter_by_class(candidate_uris)
|
55
55
|
return [] if candidate_uris.empty?
|
56
56
|
ids = candidate_uris.map {|uri| ActiveFedora::Base.uri_to_id(uri) }
|
57
|
-
results = ActiveFedora::SolrService.query(ActiveFedora::
|
57
|
+
results = ActiveFedora::SolrService.query(ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids), rows: 10000)
|
58
58
|
|
59
59
|
docs = results.select do |result|
|
60
|
-
ActiveFedora::
|
60
|
+
ActiveFedora::QueryResultBuilder.classes_from_solr_document(result).any? { |klass|
|
61
61
|
class_ancestors(klass).include? reflection.klass
|
62
62
|
}
|
63
63
|
end
|
@@ -31,7 +31,7 @@ module ActiveFedora
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.root_resource_path
|
34
|
-
ActiveFedora.fedora.
|
34
|
+
ActiveFedora.fedora.root_resource_path
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.connection
|
@@ -48,11 +48,7 @@ module ActiveFedora
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.reinitialize_repo
|
51
|
-
|
52
|
-
ActiveFedora.fedora.connection.put(root_resource_path, "")
|
53
|
-
rescue Ldp::HttpError => exception
|
54
|
-
log "#reinitialize_repo in spec_helper.rb raised #{exception}"
|
55
|
-
end
|
51
|
+
ActiveFedora.fedora.init_base_path
|
56
52
|
end
|
57
53
|
|
58
54
|
def self.log(message)
|
data/lib/active_fedora/fedora.rb
CHANGED
@@ -15,5 +15,23 @@ module ActiveFedora
|
|
15
15
|
def connection
|
16
16
|
@connection ||= Ldp::Client.new(host)
|
17
17
|
end
|
18
|
+
|
19
|
+
SLASH = '/'.freeze
|
20
|
+
BLANK = ''.freeze
|
21
|
+
|
22
|
+
# Call this to create a Container Resource to act as the base path for this connection
|
23
|
+
def init_base_path
|
24
|
+
connection.get(root_resource_path)
|
25
|
+
ActiveFedora::Base.logger.info "Attempted to init base path `#{root_resource_path}`, but it already exists" if ActiveFedora::Base.logger
|
26
|
+
return false
|
27
|
+
rescue Ldp::NotFound
|
28
|
+
connection.put(root_resource_path, BLANK).success?
|
29
|
+
end
|
30
|
+
|
31
|
+
# Remove a leading slash from the base_path
|
32
|
+
def root_resource_path
|
33
|
+
@root_resource_path ||= base_path.sub(SLASH, BLANK)
|
34
|
+
end
|
35
|
+
|
18
36
|
end
|
19
37
|
end
|
@@ -6,11 +6,11 @@ module ActiveFedora
|
|
6
6
|
include RDF::Indexing
|
7
7
|
include ActiveTriples::Properties
|
8
8
|
include ActiveTriples::Reflection
|
9
|
-
delegate :rdf_subject,
|
9
|
+
delegate :rdf_subject, :get_values, to: :resource
|
10
10
|
|
11
|
-
property :has_model, predicate: ::RDF::
|
12
|
-
property :create_date, predicate: ActiveFedora::RDF::
|
13
|
-
property :modified_date, predicate: ActiveFedora::RDF::
|
11
|
+
property :has_model, predicate: ActiveFedora::RDF::Fcrepo::Model.hasModel
|
12
|
+
property :create_date, predicate: ActiveFedora::RDF::Fcrepo4.created
|
13
|
+
property :modified_date, predicate: ActiveFedora::RDF::Fcrepo4.lastModified
|
14
14
|
|
15
15
|
def create_date
|
16
16
|
super.first
|
data/lib/active_fedora/file.rb
CHANGED
@@ -254,6 +254,9 @@ module ActiveFedora
|
|
254
254
|
payload = behaves_like_io?(content) ? content.read : content
|
255
255
|
headers = { 'Content-Type' => mime_type }
|
256
256
|
headers['Content-Disposition'] = "attachment; filename=\"#{@original_name}\"" if @original_name
|
257
|
+
# Setting the content-length is required until we figure out why Faraday
|
258
|
+
# is not doing this automatically for files uploaded via ActionDispatch.
|
259
|
+
headers['Content-Length'] = payload.size.to_s if uploaded_file?(payload)
|
257
260
|
ldp_source.content = payload
|
258
261
|
if new_record?
|
259
262
|
ldp_source.create do |req|
|
@@ -292,6 +295,10 @@ module ActiveFedora
|
|
292
295
|
|
293
296
|
private
|
294
297
|
|
298
|
+
def uploaded_file?(payload)
|
299
|
+
defined?(ActionDispatch::Http::UploadedFile) and payload.instance_of?(ActionDispatch::Http::UploadedFile)
|
300
|
+
end
|
301
|
+
|
295
302
|
def local_or_remote_content(ensure_fetch = true)
|
296
303
|
return @content if new_record?
|
297
304
|
|
@@ -25,7 +25,7 @@ module ActiveFedora
|
|
25
25
|
|
26
26
|
def get_fixity_response_from_fedora
|
27
27
|
uri = target + "/fcr:fixity"
|
28
|
-
ActiveFedora.fedora.connection.get(uri)
|
28
|
+
ActiveFedora.fedora.connection.get(encoded_url(uri))
|
29
29
|
end
|
30
30
|
|
31
31
|
def fixity_graph
|
@@ -36,5 +36,13 @@ module ActiveFedora
|
|
36
36
|
::RDF::URI("http://fedora.info/definitions/v4/repository#status")
|
37
37
|
end
|
38
38
|
|
39
|
+
def encoded_url uri
|
40
|
+
if uri.match("fcr:versions")
|
41
|
+
uri.gsub(/fcr:versions/,"fcr%3aversions")
|
42
|
+
else
|
43
|
+
uri
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
end
|
40
48
|
end
|
@@ -17,7 +17,7 @@ module ActiveFedora
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.profile_solr_name
|
20
|
-
ActiveFedora::
|
20
|
+
@profile_solr_name ||= ActiveFedora::SolrQueryBuilder.solr_name("object_profile", :displayable)
|
21
21
|
end
|
22
22
|
|
23
23
|
|
@@ -26,7 +26,7 @@ module ActiveFedora
|
|
26
26
|
Solrizer.set_field(solr_doc, 'system_create', c_time, :stored_sortable)
|
27
27
|
Solrizer.set_field(solr_doc, 'system_modified', m_time, :stored_sortable)
|
28
28
|
Solrizer.set_field(solr_doc, 'active_fedora_model', object.class.inspect, :stored_sortable)
|
29
|
-
solr_doc.merge!(
|
29
|
+
solr_doc.merge!(QueryResultBuilder::HAS_MODEL_SOLR_FIELD => object.has_model)
|
30
30
|
solr_doc.merge!(SOLR_DOCUMENT_ID.to_sym => object.id)
|
31
31
|
solr_doc.merge!(self.class.profile_solr_name => object.to_json)
|
32
32
|
object.attached_files.each do |name, file|
|
@@ -61,10 +61,5 @@ module ActiveFedora
|
|
61
61
|
end
|
62
62
|
solr_doc
|
63
63
|
end
|
64
|
-
|
65
|
-
def solr_name(*args)
|
66
|
-
ActiveFedora::SolrService.solr_name(*args)
|
67
|
-
end
|
68
|
-
|
69
64
|
end
|
70
65
|
end
|
@@ -34,10 +34,6 @@ module ActiveFedora
|
|
34
34
|
solr_doc.merge super({}).each_with_object({}) { |(key, value), new| new[[prefix,key].join] = value }
|
35
35
|
end
|
36
36
|
|
37
|
-
def generate_solr_symbol(base, data_type)
|
38
|
-
ActiveFedora::SolrService.solr_name([prefix,base].join, type: data_type)
|
39
|
-
end
|
40
|
-
|
41
37
|
# ** Experimental **
|
42
38
|
#@return [Boolean] true if either the key for name exists in solr or if its string value exists
|
43
39
|
#@param [String] name Name of key to look for
|
@@ -152,7 +152,7 @@ module ActiveFedora
|
|
152
152
|
@fields.each do |field_key, field_info|
|
153
153
|
things = send(field_key)
|
154
154
|
if things
|
155
|
-
field_symbol = ActiveFedora::
|
155
|
+
field_symbol = ActiveFedora::SolrQueryBuilder.solr_name(field_key, type: field_info[:type])
|
156
156
|
things.val.each do |val|
|
157
157
|
::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val )
|
158
158
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module ActiveFedora
|
2
|
+
module QueryResultBuilder
|
3
|
+
def self.lazy_reify_solr_results(solr_results, opts = {})
|
4
|
+
Enumerator.new do |yielder|
|
5
|
+
solr_results.each do |hit|
|
6
|
+
yielder.yield(reify_solr_result(hit, opts))
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.reify_solr_results(solr_results, opts = {})
|
12
|
+
solr_results.collect { |hit| reify_solr_result(hit, opts) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.reify_solr_result(hit, opts = {})
|
16
|
+
klass = class_from_solr_document(hit)
|
17
|
+
klass.find(hit[SOLR_DOCUMENT_ID], cast: true)
|
18
|
+
end
|
19
|
+
|
20
|
+
#Returns all possible classes for the solr object
|
21
|
+
def self.classes_from_solr_document(hit, opts = {})
|
22
|
+
classes = []
|
23
|
+
|
24
|
+
hit[HAS_MODEL_SOLR_FIELD].each { |value| classes << Model.from_class_uri(value) }
|
25
|
+
|
26
|
+
classes.compact
|
27
|
+
end
|
28
|
+
|
29
|
+
#Returns the best singular class for the solr object
|
30
|
+
def self.class_from_solr_document(hit, opts = {})
|
31
|
+
#Set the default starting point to the class specified, if available.
|
32
|
+
best_model_match = Model.from_class_uri(opts[:class]) unless opts[:class].nil?
|
33
|
+
Array(hit[HAS_MODEL_SOLR_FIELD]).each do |value|
|
34
|
+
|
35
|
+
model_value = Model.from_class_uri(value)
|
36
|
+
|
37
|
+
if model_value
|
38
|
+
|
39
|
+
# Set as the first model in case opts[:class] was nil
|
40
|
+
best_model_match ||= model_value
|
41
|
+
|
42
|
+
# If there is an inheritance structure, use the most specific case.
|
43
|
+
if best_model_match > model_value
|
44
|
+
best_model_match = model_value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
ActiveFedora::Base.logger.warn "Could not find a model for #{hit["id"]}, defaulting to ActiveFedora::Base" unless best_model_match if ActiveFedora::Base.logger
|
50
|
+
best_model_match || ActiveFedora::Base
|
51
|
+
end
|
52
|
+
|
53
|
+
HAS_MODEL_SOLR_FIELD = SolrQueryBuilder.solr_name("has_model", :symbol).freeze
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -9,7 +9,7 @@ module ActiveFedora
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def default_sort_params
|
12
|
-
[ActiveFedora::
|
12
|
+
[ActiveFedora::SolrQueryBuilder.solr_name(:system_create, :stored_sortable, type: :date)+' asc']
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
data/lib/active_fedora/rdf.rb
CHANGED
@@ -3,11 +3,12 @@ module ActiveFedora
|
|
3
3
|
extend ActiveSupport::Autoload
|
4
4
|
autoload :DatastreamIndexing
|
5
5
|
autoload :Fcrepo
|
6
|
+
autoload :Fcrepo4
|
6
7
|
autoload :Ldp
|
7
8
|
autoload :Indexing
|
8
9
|
autoload :Identifiable
|
9
|
-
autoload :ObjectResource
|
10
10
|
autoload :Persistence
|
11
11
|
autoload :RelsExt
|
12
|
+
autoload :ProjectHydra
|
12
13
|
end
|
13
14
|
end
|
@@ -1,12 +1,326 @@
|
|
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
|
1
4
|
require 'rdf'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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#")
|
11
174
|
|
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
|
12
326
|
end
|