Module: ActiveFedora::RDFDatastream::ModelMethods::ClassMethods

Defined in:
lib/active_fedora/rdf_datastream.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/active_fedora/rdf_datastream.rb', line 64

def method_missing(name, *args, &block)
  args = args.first if args.respond_to? :first
  raise "mapping must specify RDF vocabulary as :in argument" unless args.has_key? :in
  vocab = args[:in]
  predicate = args.fetch(:to, name)
  raise "Vocabulary '#{vocab.inspect}' does not define property '#{predicate.inspect}'" unless vocab.respond_to? predicate
  indexing = false
  if block_given?
    # needed for solrizer integration
    indexing = true
    iobj = IndexObject.new
    yield iobj
    data_type = iobj.data_type
    behaviors = iobj.behaviors
  end
  # needed for AF::Predicates integration & drives all other
  # functionality below
  vocab = vocab.to_s
  name = self.prefix(name)
  if config
    if config[:predicate_mapping].has_key? vocab
      config[:predicate_mapping][vocab][name] = predicate
    else
      config[:predicate_mapping][vocab] = { name => predicate } 
    end
    # stuff data_type and behaviors in there for to_solr support
    config[:predicate_mapping][vocab]["#{name}type".to_sym] = data_type if indexing
    config[:predicate_mapping][vocab]["#{name}behaviors".to_sym] = behaviors if indexing
  else
    config = {
      :default_namespace => vocab,
      :predicate_mapping => {
        vocab => { name => predicate }
      }
    }
    # stuff data_type and behaviors in there for to_solr support
    config[:predicate_mapping][vocab]["#{name}type".to_sym] = data_type if indexing
    config[:predicate_mapping][vocab]["#{name}behaviors".to_sym] = behaviors if indexing
  end
end

Instance Attribute Details

#vocabulariesObject

Returns the value of attribute vocabularies.



26
27
28
# File 'lib/active_fedora/rdf_datastream.rb', line 26

def vocabularies
  @vocabularies
end

Instance Method Details

#configObject



27
28
29
# File 'lib/active_fedora/rdf_datastream.rb', line 27

def config
  ActiveFedora::Predicates.predicate_config
end

#map_predicates {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



61
62
63
# File 'lib/active_fedora/rdf_datastream.rb', line 61

def map_predicates(&block)
  yield self
end

#prefix(name) ⇒ Object



30
31
32
33
34
# File 'lib/active_fedora/rdf_datastream.rb', line 30

def prefix(name)
  name = name.to_s unless name.is_a? String
  pre = self.to_s.sub(/RDFDatastream$/i, '').underscore
  return "#{pre}__#{name}".to_sym
end

#rdf_subject {|ds| ... } ⇒ Object

Register a ruby block that evaluates to the subject of the graph By default, the block returns the current object’s pid

Yields:

  • (ds)

    ‘ds’ is the datastream instance



40
41
42
43
44
45
46
# File 'lib/active_fedora/rdf_datastream.rb', line 40

def rdf_subject &block
  if block_given?
     return @subject_block = block
  end

  @subject_block ||= lambda { |ds| "info:fedora/#{ds.pid}" }
end

#register_vocabularies(*vocabs) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/active_fedora/rdf_datastream.rb', line 48

def register_vocabularies(*vocabs)
  @vocabularies ||= {}
  vocabs.each do |v|
    if v.is_a?(RDF::Vocabulary) or (v.respond_to? :property and v.respond_to? :to_uri)
      @vocabularies[v.to_uri] = v 
    else
      raise "not an RDF vocabulary: #{v}"
    end
  end
  ActiveFedora::Predicates.vocabularies(@vocabularies)
  @vocabularies
end