lib/ddr/datastreams/descriptive_metadata_datastream.rb in ddr-models-2.11.0 vs lib/ddr/datastreams/descriptive_metadata_datastream.rb in ddr-models-3.0.0.alpha.1

- old
+ new

@@ -1,46 +1,43 @@ -require "rdf/vocab" +module Ddr + module Datastreams + class DescriptiveMetadataDatastream < MetadataDatastream -module Ddr::Datastreams - class DescriptiveMetadataDatastream < MetadataDatastream + class_attribute :vocabularies + self.vocabularies = [RDF::DC, Ddr::Vocab::DukeTerms].freeze - class_attribute :vocabularies - self.vocabularies = [RDF::Vocab::DC, Ddr::Vocab::DukeTerms].freeze + def self.default_attributes + super.merge(:mimeType => 'application/n-triples') + end - def self.default_attributes - super.merge(:mimeType => 'application/n-triples') - end + def self.indexers + # Add term_name => [indexers] mapping to customize indexing + {} + end - def self.indexers - # Add term_name => [indexers] mapping to customize indexing - {} - end + def self.default_indexers + [:stored_searchable] + end - def self.default_indexers - [:stored_searchable] - end + def self.indexers_for(term_name) + indexers.fetch(term_name, default_indexers) + end - def self.indexers_for(term_name) - indexers.fetch(term_name, default_indexers) - end - - # Add terms from the vocabularies as properties - vocabularies.each do |vocab| - Ddr::Vocab::Vocabulary.property_terms(vocab).each do |term| - term_name = Ddr::Vocab::Vocabulary.term_name(vocab, term) - # Do not include :license as a descriptive metadata property - unless term_name == :license + # Add terms from the vocabularies as properties + vocabularies.each do |vocab| + Ddr::Vocab::Vocabulary.property_terms(vocab).each do |term| + term_name = Ddr::Vocab::Vocabulary.term_name(vocab, term) property term_name, predicate: term do |index| index.as *indexers_for(term_name) end end end - end - # Override ActiveFedora::Rdf::Indexing#apply_prefix(name) to not - # prepend the index field name with a string based on the datastream id. - def apply_prefix(name) - name - end + # Override ActiveFedora::Rdf::Indexing#apply_prefix(name) to not + # prepend the index field name with a string based on the datastream id. + def apply_prefix(name) + name + end + end end end