Class: Wikidata::Entity

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/wikidata/entity.rb

Direct Known Subclasses

Item

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ Entity

Returns a new instance of Entity.



8
9
10
11
# File 'lib/wikidata/entity.rb', line 8

def initialize hash
  @hash = Hashie::Mash.new hash
  @_properties = {}
end

Instance Attribute Details

#hashObject

Returns the value of attribute hash.



5
6
7
# File 'lib/wikidata/entity.rb', line 5

def hash
  @hash
end

Class Method Details

.entity_id(attribute) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/wikidata/entity.rb', line 66

def entity_id attribute
  return unless attribute.mainsnak.datavalue
  attribute.mainsnak.datavalue.value.tap do |h|
    case h['entity-type']
      when 'item'
        return "Q#{h['numeric-id']}"
      else
        return nil
    end
  end
end

Instance Method Details

#idObject



13
14
15
16
# File 'lib/wikidata/entity.rb', line 13

def id
  return hash['id'] if hash['id']
  return hash['title'] if hash['title']
end

#inspectObject



58
59
60
# File 'lib/wikidata/entity.rb', line 58

def inspect
  "<#{self.class} id: #{id}, title: \"#{title}\">"
end

#properties(code) ⇒ Object



40
41
42
# File 'lib/wikidata/entity.rb', line 40

def properties code
  @_properties[code] ||= Array(raw_property(code)).map {|a| Wikidata::Property.build a }
end

#property(code) ⇒ Object



50
51
52
# File 'lib/wikidata/entity.rb', line 50

def property code
  properties(code).first
end

#property_id(code) ⇒ Object



54
55
56
# File 'lib/wikidata/entity.rb', line 54

def property_id code
  property_ids(code).first
end

#property_ids(code) ⇒ Object



44
45
46
47
48
# File 'lib/wikidata/entity.rb', line 44

def property_ids code
  Array(raw_property(code)).map do |attribute|
    self.class.entity_id attribute
  end.compact
end

#titleObject



18
19
20
21
22
# File 'lib/wikidata/entity.rb', line 18

def title
  return labels['en'].value if labels && labels['en']
  return sitelinks['en'].value if sitelinks && sitelinks['en']
  hash['title'] if hash['title']
end

#urlObject



24
25
26
# File 'lib/wikidata/entity.rb', line 24

def url
  Wikidata.settings.item.url.gsub(':id', id)
end