Class: RDF::Property

Inherits:
RDFS::Resource show all
Defined in:
lib/active_rdf/objectmanager/property.rb

Overview

Represents an RDF property. If an optional subject is provided on instatiation, provides access to values of this property belonging to the associated subject. Property objects are Enumerable. Values are returned as copies with no order garunteed and may be accessed individually by key.

Usage

age = RDF::Property.new('http://activerdf.org/test/age')
age.domain => [#<RDFS::Resource @uri="http://activerdf.org/test/Person">]
age.range => [#<RDFS::Resource @uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal">]
age.type => [#<RDFS::Resource @uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property">]
age.to_a => ActiveRdfError: http://activerdf.org/test/age: no associated subject

email = RDF::Property.new('http://activerdf.org/test/email', 'http://activerdf.org/test/eyal')
email.replace("[email protected]")                                 # replace any existing values
email.add("[email protected]")                                # add new value to this property
email += ("[email protected]")                                # alternative way to add new value
email.clear                                                    # delete any existing values
email.add(["[email protected]","[email protected]"])              # add array containing values
email["[email protected]"] = "[email protected]"             # replace existing value
email[p.index("[email protected]")] = "[email protected]"    # replace existing value by key
email.include?("[email protected]") => true                   # check for existing value
email == ["[email protected]","[email protected]"] => true        # compare value(s) to array (order is ignored)
email.delete("[email protected]")                                  # delete specific value
email == "[email protected]" => true                          # compare value(s) to single value
email.collect!{|val| val.gsub(/@/,' at ').gsub(/\./,' dot ')}  # update value(s) with result of block

Instance Attribute Summary collapse

Attributes inherited from RDFS::Resource

#uri

Instance Method Summary collapse

Methods inherited from RDFS::Resource

#<=>, ==, #==, #abbr, #abbr?, #abbreviation, #class_level_predicates, #class_predicates, #class_properties, #classes, #contexts, #direct_predicates, #direct_properties, #direct_types, #empty_predicates, #empty_properties, eql?, find, find_all, find_by, #hash, #inspect, #instance_of?, #instance_predicates, #instance_properties, #is_a?, #localname, localname, #method_missing, method_missing, #new_record?, predicates, #predicates, properties, #properties, #register_predicate, #save, #sub_predicates, #sub_properties, #super_classes, #super_predicates, #super_properties, #super_types, #to_literal_s, #to_xml, #type, #type=, #types, uri

Constructor Details

#initialize(property, subject = nil) ⇒ Property

Returns a new instance of Property.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_rdf/objectmanager/property.rb', line 33

def initialize(property, subject = nil)
  super(property)
  @subject = subject
  @lang = nil
  @exact_lang = true
  @datatype = nil
  @context = nil

  if @subject
    class<<self
      include AssociatedProperty
    end
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RDFS::Resource

Instance Attribute Details

#subjectObject (readonly)

Returns the value of attribute subject.



31
32
33
# File 'lib/active_rdf/objectmanager/property.rb', line 31

def subject
  @subject
end

Instance Method Details

#initialize_copy(property) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/active_rdf/objectmanager/property.rb', line 50

def initialize_copy(property)
  if @subject
    class<<self
      include AssociatedProperty
    end
  end
end

#propertyObject

Returns the property object for this property without @subject set



59
60
61
# File 'lib/active_rdf/objectmanager/property.rb', line 59

def property
  RDF::Property.new(self)
end