Class: Lbp::Resource
- Inherits:
-
Object
- Object
- Lbp::Resource
- Extended by:
- Forwardable
- Defined in:
- lib/lbp/resource.rb
Direct Known Subclasses
Article, Expression, ExpressionType, Manifestation, Transcription, WorkGroup
Instance Attribute Summary collapse
-
#identifier ⇒ Object
readonly
end class level methods.
-
#results ⇒ Object
readonly
end class level methods.
Class Method Summary collapse
Instance Method Summary collapse
- #description ⇒ Object
- #has_parts ⇒ Object
-
#initialize(resource_url, results) ⇒ Resource
constructor
A new instance of Resource.
- #is_part_of ⇒ Object
- #title ⇒ Object
-
#type ⇒ Object
query for properties global to all resources.
-
#value(property) ⇒ Object
should return a single resource identifier; and error if there is more than one property for this value.
-
#values(property) ⇒ Object
generic query methods for all resources.
Constructor Details
#initialize(resource_url, results) ⇒ Resource
Returns a new instance of Resource.
50 51 52 53 54 55 56 |
# File 'lib/lbp/resource.rb', line 50 def initialize(resource_url, results) # if there are problems with results being empty # and, for example, dup or filter being called on a null class # consider changing the following line to @results = results || <an empty object for whatever results normally is> @results = results || RDF::Query::Solutions.new() @identifier = ResourceIdentifier.new(resource_url) end |
Instance Attribute Details
#identifier ⇒ Object (readonly)
end class level methods
46 47 48 |
# File 'lib/lbp/resource.rb', line 46 def identifier @identifier end |
#results ⇒ Object (readonly)
end class level methods
46 47 48 |
# File 'lib/lbp/resource.rb', line 46 def results @results end |
Class Method Details
.create(resource_url, results) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/lbp/resource.rb', line 29 def create(resource_url, results) type = results.dup.filter(:p => RDF::URI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")).first[:o].to_s.split("/").last klass = if type == "workGroup" Lbp.const_get("WorkGroup") elsif type == "expressionType" Lbp.const_get("ExpressionType") else Lbp.const_get(type.capitalize) end klass.new(resource_url, results) rescue NameError Resource.new(resource_url, results) end |
.find(resource_id) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/lbp/resource.rb', line 14 def find(resource_id) #adding the to_s method allows a resource to be created #by passing in an RDF::URL object as well as the url string. if resource_id.to_s.include? "http" query = Query.new results = query.subject("<" + resource_id.to_s + ">") resource_url = resource_id.to_s create(resource_url, results) else query = Query.new results = query.subject_with_short_id(resource_id) resource_url = "http://scta.info/resource/" + resource_id create(resource_url, results) end end |
Instance Method Details
#description ⇒ Object
88 89 90 |
# File 'lib/lbp/resource.rb', line 88 def description value(RDF::Vocab::DC11.description).to_s end |
#has_parts ⇒ Object
91 92 93 |
# File 'lib/lbp/resource.rb', line 91 def has_parts values(RDF::Vocab::DC.hasPart) end |
#is_part_of ⇒ Object
94 95 96 |
# File 'lib/lbp/resource.rb', line 94 def is_part_of value(RDF::Vocab::DC.isPartOf) end |
#title ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'lib/lbp/resource.rb', line 80 def title #careful here; title in db is not actualy a uri, but a litteral #to_s method should work, but it might not be correct for this to be initially #instantiated into a resource identifer. # This is why I'm forcing the to_s method in the return value rather than # return the ResourceIdentifer object itself as in the case of type above value(RDF::Vocab::DC11.title).to_s end |
#type ⇒ Object
query for properties global to all resources
77 78 79 |
# File 'lib/lbp/resource.rb', line 77 def type value("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") end |
#value(property) ⇒ Object
should return a single resource identifier; and error if there is more than one property for this value
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/lbp/resource.rb', line 65 def value(property) # should return a single resource identifier; and error if there is more than one property for this value value = @results.dup.filter(:p => RDF::URI(property)) if value.count > 0 value = value.first[:o] ResourceIdentifier.new(value) else nil end end |
#values(property) ⇒ Object
generic query methods for all resources
59 60 61 62 63 |
# File 'lib/lbp/resource.rb', line 59 def values(property) # should return an array of resource identifiers results = self.results.dup.filter(:p => RDF::URI(property)) array = results.map {|m| ResourceIdentifier.new(m[:o])} return array end |