Class: ActiveFedora::Rdf::Term
- Inherits:
-
Object
- Object
- ActiveFedora::Rdf::Term
- Defined in:
- lib/active_fedora/rdf/term.rb
Instance Attribute Summary collapse
-
#node_cache ⇒ Object
writeonly
Sets the attribute node_cache.
-
#parent ⇒ Object
Returns the value of attribute parent.
-
#value_arguments ⇒ Object
Returns the value of attribute value_arguments.
Instance Method Summary collapse
- #<<(values) ⇒ Object (also: #push)
- #build(attributes = {}) ⇒ Object
- #clear ⇒ Object
- #delete(*values) ⇒ Object
- #empty_property ⇒ Object
- #first_or_create(attributes = {}) ⇒ Object
-
#initialize(parent, value_arguments) ⇒ Term
constructor
A new instance of Term.
- #property ⇒ Object
- #property_config ⇒ Object
- #rdf_subject ⇒ Object
- #reset! ⇒ Object
- #result ⇒ Object
- #set(values) ⇒ Object
- #type_property ⇒ Object
Constructor Details
#initialize(parent, value_arguments) ⇒ Term
Returns a new instance of Term.
5 6 7 8 |
# File 'lib/active_fedora/rdf/term.rb', line 5 def initialize(parent, value_arguments) self.parent = parent self.value_arguments = value_arguments end |
Instance Attribute Details
#node_cache=(value) ⇒ Object
Sets the attribute node_cache
3 4 5 |
# File 'lib/active_fedora/rdf/term.rb', line 3 def node_cache=(value) @node_cache = value end |
#parent ⇒ Object
Returns the value of attribute parent.
3 4 5 |
# File 'lib/active_fedora/rdf/term.rb', line 3 def parent @parent end |
#value_arguments ⇒ Object
Returns the value of attribute value_arguments.
3 4 5 |
# File 'lib/active_fedora/rdf/term.rb', line 3 def value_arguments @value_arguments end |
Instance Method Details
#<<(values) ⇒ Object Also known as: push
64 65 66 67 |
# File 'lib/active_fedora/rdf/term.rb', line 64 def << (values) values = Array.wrap(result) | Array.wrap(values) self.set(values) end |
#build(attributes = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/active_fedora/rdf/term.rb', line 39 def build(attributes={}) new_subject = attributes.key?('id') ? attributes.delete('id') : RDF::Node.new node = make_node(new_subject) node.attributes = attributes if parent.kind_of? List::ListResource parent.list << node return node elsif node.kind_of? RDF::List self.push node.rdf_subject return node end self.push node node end |
#clear ⇒ Object
10 11 12 |
# File 'lib/active_fedora/rdf/term.rb', line 10 def clear set(nil) end |
#delete(*values) ⇒ Object
58 59 60 61 62 |
# File 'lib/active_fedora/rdf/term.rb', line 58 def delete(*values) values.each do |value| parent.delete([rdf_subject, predicate, value]) end end |
#empty_property ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/active_fedora/rdf/term.rb', line 31 def empty_property parent.query([rdf_subject, predicate, nil]).each_statement do |statement| if !uri_class(statement.object) || uri_class(statement.object) == class_for_property parent.delete(statement) end end end |
#first_or_create(attributes = {}) ⇒ Object
54 55 56 |
# File 'lib/active_fedora/rdf/term.rb', line 54 def first_or_create(attributes={}) result.first || build(attributes) end |
#property ⇒ Object
83 84 85 |
# File 'lib/active_fedora/rdf/term.rb', line 83 def property value_arguments.last end |
#property_config ⇒ Object
71 72 73 74 |
# File 'lib/active_fedora/rdf/term.rb', line 71 def property_config return type_property if (property == RDF.type || property.to_s == "type") && !parent.send(:properties)[property] parent.send(:properties)[property] end |
#rdf_subject ⇒ Object
87 88 89 90 91 92 93 94 |
# File 'lib/active_fedora/rdf/term.rb', line 87 def rdf_subject raise ArgumentError("wrong number of arguments (#{value_arguments.length} for 1-2)") if value_arguments.length < 1 || value_arguments.length > 2 if value_arguments.length > 1 value_arguments.first else parent.rdf_subject end end |
#reset! ⇒ Object
80 81 |
# File 'lib/active_fedora/rdf/term.rb', line 80 def reset! end |
#result ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/active_fedora/rdf/term.rb', line 14 def result result = parent.query(:subject => rdf_subject, :predicate => predicate) .map{|x| convert_object(x.object)} .reject(&:nil?) return result if !property_config || property_config[:multivalue] result.first end |
#set(values) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/active_fedora/rdf/term.rb', line 22 def set(values) values = [values].compact unless values.kind_of?(Array) empty_property values.each do |val| set_value(val) end parent.persist! if parent.class.repository == :parent && parent.send(:repository) end |
#type_property ⇒ Object
76 77 78 |
# File 'lib/active_fedora/rdf/term.rb', line 76 def type_property {:multivalue => true, :predicate => RDF.type} end |