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



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/wikidata/entity.rb', line 74

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



66
67
68
# File 'lib/wikidata/entity.rb', line 66

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

#properties(code) ⇒ Object



48
49
50
# File 'lib/wikidata/entity.rb', line 48

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

#property(code) ⇒ Object



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

def property code
  properties(code).first
end

#property_id(code) ⇒ Object



62
63
64
# File 'lib/wikidata/entity.rb', line 62

def property_id code
  property_ids(code).first
end

#property_ids(code) ⇒ Object



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

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

#property_keysObject



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

def property_keys
  hash.claims.keys
end

#property_name(code) ⇒ Object



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

def property_name code
  Wikidata::Item.find(code).title
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