michael-ken 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,6 +23,7 @@ Use GitHub RubyGems:
23
23
  </pre>
24
24
 
25
25
  In your Ruby files add:
26
+
26
27
  <pre>
27
28
  <code>
28
29
  require 'rubygems'
@@ -201,7 +202,9 @@ That's why I now added direct Property/Attribute access, but only on a Type/View
201
202
  type.genre # => #<Property id="/music/artist/genre" expected_type="/music/genre" unique="false" object_type="true">
202
203
  </code>
203
204
  </pre>
205
+
204
206
  The same works for views:
207
+
205
208
  <pre>
206
209
  <code>
207
210
  resource = Ken.get('/en/new_order')
data/Rakefile CHANGED
@@ -10,6 +10,8 @@ begin
10
10
  gem.homepage = "http://github.com/michael/ken"
11
11
  gem.authors = ["michael"]
12
12
  gem.add_dependency('extlib')
13
+ gem.add_dependency('json')
14
+ gem.add_dependency('addressable')
13
15
  # gem.files = FileList["[A-Z]*.*"]
14
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
17
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -4,6 +4,7 @@ require 'rubygems'
4
4
  EXAMPLES_ROOT = Pathname(__FILE__).dirname.expand_path
5
5
  require EXAMPLES_ROOT.parent + 'lib/ken'
6
6
 
7
+ Ken::Logger.new(STDOUT, :info)
7
8
  Ken::Session.new('http://www.freebase.com', 'ma', 'xxxxx')
8
9
 
9
10
  resource = Ken.get('/en/the_police')
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{ken}
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["michael"]
9
- s.date = %q{2009-07-08}
9
+ s.date = %q{2009-07-24}
10
10
  s.email = %q{ma[at]zive[dot]at}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -73,10 +73,16 @@ Gem::Specification.new do |s|
73
73
 
74
74
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
75
75
  s.add_runtime_dependency(%q<extlib>, [">= 0"])
76
+ s.add_runtime_dependency(%q<json>, [">= 0"])
77
+ s.add_runtime_dependency(%q<addressable>, [">= 0"])
76
78
  else
77
79
  s.add_dependency(%q<extlib>, [">= 0"])
80
+ s.add_dependency(%q<json>, [">= 0"])
81
+ s.add_dependency(%q<addressable>, [">= 0"])
78
82
  end
79
83
  else
80
84
  s.add_dependency(%q<extlib>, [">= 0"])
85
+ s.add_dependency(%q<json>, [">= 0"])
86
+ s.add_dependency(%q<addressable>, [">= 0"])
81
87
  end
82
88
  end
data/lib/ken.rb CHANGED
@@ -39,8 +39,8 @@ module Ken
39
39
  # executed. maybe this is fine, maybe not,
40
40
  # this needs to be discussed.
41
41
 
42
- QUERY = query = {
43
- # :id => id, # needs to be updated in instance mehtod
42
+ FETCH_DATA_QUERY = {
43
+ # :id => id, # needs to be merge!d in instance method
44
44
  :name => nil,
45
45
  :"ken:type" => [{
46
46
  :id => nil,
@@ -53,9 +53,36 @@ module Ken
53
53
  :reverse_property => nil,
54
54
  :master_property => nil,
55
55
  }]
56
- }]
56
+ }],
57
+ :"/type/reflect/any_master" => [
58
+ {
59
+ :id => nil,
60
+ :link => nil,
61
+ :name => nil,
62
+ :optional => true
63
+ }
64
+ ],
65
+ :"/type/reflect/any_reverse" => [
66
+ {
67
+ :id => nil,
68
+ :link => nil,
69
+ :name => nil,
70
+ :optional => true
71
+ }
72
+ ],
73
+ :"/type/reflect/any_value" => [
74
+ {
75
+ :link => nil,
76
+ :value => nil,
77
+ :optional => true
78
+ # TODO: support multiple language
79
+ # :lang => "/lang/en",
80
+ # :type => "/type/text"
81
+ }
82
+ ]
57
83
  }
58
84
 
85
+
59
86
  # Executes an Mql Query against the Freebase API and returns the result as
60
87
  # a <tt>Collection</tt> of <tt>Resources</tt>.
61
88
  #
@@ -89,7 +116,7 @@ module Ken
89
116
  # @api public
90
117
  def self.get(id)
91
118
  assert_kind_of 'id', id, String
92
- result = Ken.session.mqlread(QUERY.merge!(:id => id))
119
+ result = Ken.session.mqlread(FETCH_DATA_QUERY.merge!(:id => id))
93
120
  raise ResourceNotFound unless result
94
121
  Ken::Resource.new(result)
95
122
  end
@@ -2,7 +2,7 @@ module Ken
2
2
  class Resource
3
3
  include Extlib::Assertions
4
4
 
5
- FETCH_SCHEMA_QUERY = {
5
+ FETCH_DATA_QUERY = {
6
6
  # :id => id, # needs to be merge!d in instance method
7
7
  :name => nil,
8
8
  :"ken:type" => [{
@@ -12,31 +12,32 @@ module Ken
12
12
  :id => nil,
13
13
  :name => nil,
14
14
  :expected_type => nil,
15
- :unique => nil
15
+ :unique => nil,
16
+ :reverse_property => nil,
17
+ :master_property => nil,
16
18
  }]
17
- }]
18
- }
19
-
20
- FETCH_ATTRIBUTES_QUERY = {
21
- # :id => id # needs to be merg!d in instance method
19
+ }],
22
20
  :"/type/reflect/any_master" => [
23
21
  {
24
22
  :id => nil,
25
23
  :link => nil,
26
- :name => nil
24
+ :name => nil,
25
+ :optional => true
27
26
  }
28
27
  ],
29
28
  :"/type/reflect/any_reverse" => [
30
29
  {
31
30
  :id => nil,
32
31
  :link => nil,
33
- :name => nil
32
+ :name => nil,
33
+ :optional => true
34
34
  }
35
35
  ],
36
36
  :"/type/reflect/any_value" => [
37
37
  {
38
38
  :link => nil,
39
- :value => nil
39
+ :value => nil,
40
+ :optional => true
40
41
  # TODO: support multiple language
41
42
  # :lang => "/lang/en",
42
43
  # :type => "/type/text"
@@ -47,8 +48,8 @@ module Ken
47
48
  # initializes a resource using a json result
48
49
  def initialize(data)
49
50
  assert_kind_of 'data', data, Hash
50
- # intialize lazy if there is no type supplied
51
51
  @schema_loaded, @attributes_loaded, @data = false, false, data
52
+ @data_fechted = data["/type/reflect/any_master"] != nil
52
53
  end
53
54
 
54
55
  # resource id
@@ -114,51 +115,49 @@ module Ken
114
115
  def attributes_loaded?
115
116
  @attributes_loaded
116
117
  end
118
+ # returns true if json data is already loaded
119
+ # @api public
120
+ def data_fetched?
121
+ @data_fetched
122
+ end
117
123
 
118
124
  private
119
- # executes the fetch attributes query in order to load the full set if attributes
125
+ # executes the fetch data query in order to load the full set of types, properties and attributes
120
126
  # more info at http://lists.freebase.com/pipermail/developers/2007-December/001022.html
121
127
  # @api private
122
- def fetch_attributes
123
- Ken.session.mqlread(FETCH_ATTRIBUTES_QUERY.merge!(:id => id))
128
+ def fetch_data
129
+ return @data if @data["/type/reflect/any_master"]
130
+ @data = Ken.session.mqlread(FETCH_DATA_QUERY.merge!(:id => id))
124
131
  end
125
132
 
126
133
  # loads the full set of attributes using reflection
127
134
  # information is extracted from master, value and reverse attributes
128
135
  # @api private
129
136
  def load_attributes!
130
- data = @data["ken:attribute"] || fetch_attributes
137
+ fetch_data unless data_fetched?
131
138
  # master & value attributes
132
- raw_attributes = Ken::Util.convert_hash(data["/type/reflect/any_master"])
133
- raw_attributes.merge!(Ken::Util.convert_hash(data["/type/reflect/any_value"]))
139
+ raw_attributes = Ken::Util.convert_hash(@data["/type/reflect/any_master"])
140
+ raw_attributes.merge!(Ken::Util.convert_hash(@data["/type/reflect/any_value"]))
134
141
  @attributes = {}
135
142
  raw_attributes.each_pair do |a, d|
136
143
  properties.select { |p| p.id == a}.each do |p|
137
144
  @attributes[p.id] = Ken::Attribute.create(d, p)
138
145
  end
139
146
  end
140
-
141
147
  # reverse properties
142
- raw_attributes = Ken::Util.convert_hash(data["/type/reflect/any_reverse"])
148
+ raw_attributes = Ken::Util.convert_hash(@data["/type/reflect/any_reverse"])
143
149
  raw_attributes.each_pair do |a, d|
144
150
  properties.select { |p| p.master_property == a}.each do |p|
145
151
  @attributes[p.id] = Ken::Attribute.create(d, p)
146
152
  end
147
153
  end
148
-
149
154
  @attributes_loaded = true
150
155
  end
151
156
 
152
- # executes the fetch schema query in order to load all schema information
153
- # @api private
154
- def fetch_schema
155
- Ken.session.mqlread(FETCH_SCHEMA_QUERY.merge!(:id => id))["ken:type"]
156
- end
157
-
158
157
  # loads the resource's metainfo
159
158
  # @api private
160
159
  def load_schema!
161
- @data["ken:type"] ||= fetch_schema
160
+ fetch_data unless data_fetched?
162
161
  @types = Ken::Collection.new(@data["ken:type"].map { |type| Ken::Type.new(type) })
163
162
  @schema_loaded = true
164
163
  end
@@ -7,7 +7,7 @@
7
7
  "expected_type" : "/location/location",
8
8
  "id" : "/music/artist/origin",
9
9
  "name" : "Place Musical Career Began",
10
- "unique" : null
10
+ "unique" :true
11
11
  },
12
12
  {
13
13
  "expected_type" : "/type/datetime",
@@ -1,940 +1,937 @@
1
1
  {
2
- "id" : "/en/the_police",
3
- "name" : "The Police",
4
- "ken:type" : [
5
- {
6
- "id": "/music/artist",
7
- "name": "Musical Artist",
8
- "properties": [
9
- {
10
- "expected_type": "/location/location",
11
- "id": "/music/artist/origin",
12
- "master_property": null,
13
- "name": "Place Musical Career Began",
14
- "reverse_property": null,
15
- "unique": true
16
- },
17
- {
18
- "expected_type": "/type/datetime",
19
- "id": "/music/artist/active_start",
20
- "master_property": null,
21
- "name": "Active as Musical Artist (start)",
22
- "reverse_property": null,
23
- "unique": true
24
- },
25
- {
26
- "expected_type": "/type/datetime",
27
- "id": "/music/artist/active_end",
28
- "master_property": null,
29
- "name": "Active as Musical Artist (end)",
30
- "reverse_property": null,
31
- "unique": true
32
- },
33
- {
34
- "expected_type": "/music/genre",
35
- "id": "/music/artist/genre",
36
- "master_property": null,
37
- "name": "Musical Genres",
38
- "reverse_property": "/music/genre/artists",
39
- "unique": false
40
- },
41
- {
42
- "expected_type": "/music/record_label",
43
- "id": "/music/artist/label",
44
- "master_property": null,
45
- "name": "Record Labels",
46
- "reverse_property": "/music/record_label/artist",
47
- "unique": null
48
- },
49
- {
50
- "expected_type": "/music/artist",
51
- "id": "/music/artist/similar_artist",
52
- "master_property": null,
53
- "name": "Similar Artists",
54
- "reverse_property": "/music/artist/artist_similar",
55
- "unique": null
56
- },
57
- {
58
- "expected_type": "/common/webpage",
59
- "id": "/music/artist/home_page",
60
- "master_property": null,
61
- "name": "Musical Artist Home Page",
62
- "reverse_property": null,
63
- "unique": null
64
- },
65
- {
66
- "expected_type": "/common/webpage",
67
- "id": "/music/artist/acquire_webpage",
68
- "master_property": null,
69
- "name": "Web Page for Music",
70
- "reverse_property": null,
71
- "unique": null
72
- },
73
- {
74
- "expected_type": "/music/album",
75
- "id": "/music/artist/album",
76
- "master_property": "/music/album/artist",
77
- "name": "Albums",
78
- "reverse_property": null,
79
- "unique": null
80
- },
81
- {
82
- "expected_type": "/music/recording_contribution",
83
- "id": "/music/artist/contribution",
84
- "master_property": "/music/recording_contribution/contributor",
85
- "name": "Album Contributions",
86
- "reverse_property": null,
87
- "unique": null
88
- },
89
- {
90
- "expected_type": "/music/track",
91
- "id": "/music/artist/track",
92
- "master_property": "/music/track/artist",
93
- "name": "Tracks Recorded",
94
- "reverse_property": null,
95
- "unique": null
96
- },
97
- {
98
- "expected_type": "/music/artist",
99
- "id": "/music/artist/artist_similar",
100
- "master_property": "/music/artist/similar_artist",
101
- "name": "Similar Musical Artists",
102
- "reverse_property": null,
103
- "unique": null
104
- },
105
- {
106
- "expected_type": "/music/track_contribution",
107
- "id": "/music/artist/track_contributions",
108
- "master_property": "/music/track_contribution/contributor",
109
- "name": "Track Contributions",
110
- "reverse_property": null,
111
- "unique": null
112
- },
113
- {
114
- "expected_type": "/music/instrument",
115
- "id": "/music/artist/instruments_played",
116
- "master_property": null,
117
- "name": "Instruments Played",
118
- "reverse_property": "/music/instrument/instrumentalists",
119
- "unique": null
120
- },
121
- {
122
- "expected_type": "/music/voice",
123
- "id": "/music/artist/vocal_range",
124
- "master_property": null,
125
- "name": "Vocal Range",
126
- "reverse_property": "/music/voice/singers",
127
- "unique": null
128
- },
129
- {
130
- "expected_type": "/music/concert_tour",
131
- "id": "/music/artist/concert_tours",
132
- "master_property": "/music/concert_tour/artist",
133
- "name": "Concert Tours",
134
- "reverse_property": null,
135
- "unique": false
136
- }
137
- ]
138
- },
139
- {
140
- "id": "/common/topic",
141
- "name": "Topic",
142
- "properties": [
143
- {
144
- "expected_type": "/type/text",
145
- "id": "/common/topic/alias",
146
- "master_property": null,
147
- "name": "Also known as",
148
- "reverse_property": null,
149
- "unique": null
150
- },
151
- {
152
- "expected_type": "/common/document",
153
- "id": "/common/topic/article",
154
- "master_property": null,
155
- "name": "article",
156
- "reverse_property": null,
157
- "unique": null
158
- },
159
- {
160
- "expected_type": "/common/image",
161
- "id": "/common/topic/image",
162
- "master_property": null,
163
- "name": "image",
164
- "reverse_property": "/common/image/appears_in_topic_gallery",
165
- "unique": null
166
- },
167
- {
168
- "expected_type": "/common/webpage",
169
- "id": "/common/topic/webpage",
170
- "master_property": null,
171
- "name": "Web Link(s)",
172
- "reverse_property": null,
173
- "unique": null
174
- }
175
- ]
176
- },
177
- {
178
- "id": "/music/producer",
179
- "name": "Record Producer",
180
- "properties": [
181
- {
182
- "expected_type": "/music/album",
183
- "id": "/music/producer/albums_produced",
184
- "master_property": "/music/album/producer",
185
- "name": "Albums Produced",
186
- "reverse_property": null,
187
- "unique": null
188
- },
189
- {
190
- "expected_type": "/music/track",
191
- "id": "/music/producer/tracks_produced",
192
- "master_property": "/music/track/producer",
193
- "name": "Tracks produced",
194
- "reverse_property": null,
195
- "unique": false
196
- }
197
- ]
198
- },
199
- {
200
- "id": "/music/musical_group",
201
- "name": "Musical Group",
202
- "properties": [{
203
- "expected_type": "/music/group_membership",
204
- "id": "/music/musical_group/member",
205
- "master_property": "/music/group_membership/group",
206
- "name": "Members Of Musical Group",
207
- "reverse_property": null,
208
- "unique": null
209
- }]
210
- },
211
- {
212
- "id": "/broadcast/artist",
213
- "name": "Broadcast Artist",
214
- "properties": [{
215
- "expected_type": "/broadcast/content",
216
- "id": "/broadcast/artist/content",
217
- "master_property": "/broadcast/content/artist",
218
- "name": "Content",
219
- "reverse_property": null,
220
- "unique": null
221
- }]
222
- },
223
- {
224
- "id": "/award/award_winner",
225
- "name": "Award Winner",
226
- "properties": [{
227
- "expected_type": "/award/award_honor",
228
- "id": "/award/award_winner/awards_won",
229
- "master_property": "/award/award_honor/award_winner",
230
- "name": "Awards Won",
231
- "reverse_property": null,
232
- "unique": null
233
- }]
234
- }
235
- ],
236
- "ken:attribute" : {
237
- "/type/reflect/any_master": [
238
- {
239
- "id": "/boot/all_permission",
240
- "link": "/type/object/permission",
241
- "name": "Global Write Permission"
242
- },
243
- {
244
- "id": "/guid/9202a8c04000641f800000000006df25",
245
- "link": "/common/topic/article",
246
- "name": null
247
- },
248
- {
249
- "id": "/music/artist",
250
- "link": "/type/object/type",
251
- "name": "Musical Artist"
252
- },
253
- {
254
- "id": "/common/topic",
255
- "link": "/type/object/type",
256
- "name": "Topic"
257
- },
258
- {
259
- "id": "/guid/9202a8c04000641f8000000003921d3c",
260
- "link": "/common/topic/webpage",
261
- "name": "Discogs entry"
262
- },
263
- {
264
- "id": "/wikipedia/images/en_id/982873",
265
- "link": "/common/topic/image",
266
- "name": null
267
- },
268
- {
269
- "id": "/en/rock_music",
270
- "link": "/music/artist/genre",
271
- "name": "Rock music"
272
- },
273
- {
274
- "id": "/en/ska",
275
- "link": "/music/artist/genre",
276
- "name": "Ska"
277
- },
278
- {
279
- "id": "/en/reggae",
280
- "link": "/music/artist/genre",
281
- "name": "Reggae"
282
- },
283
- {
284
- "id": "/en/london",
285
- "link": "/music/artist/origin",
286
- "name": "London"
287
- },
288
- {
289
- "id": "/music/producer",
290
- "link": "/type/object/type",
291
- "name": "Record Producer"
292
- },
293
- {
294
- "id": "/music/musical_group",
295
- "link": "/type/object/type",
296
- "name": "Musical Group"
297
- },
298
- {
299
- "id": "/guid/9202a8c04000641f80000000072a23e1",
300
- "link": "/common/topic/webpage",
301
- "name": null
302
- },
303
- {
304
- "id": "/en/new_wave",
305
- "link": "/music/artist/genre",
306
- "name": "New Wave"
307
- },
308
- {
309
- "id": "/en/a_m_records",
310
- "link": "/music/artist/label",
311
- "name": "A&amp;M Records"
312
- },
313
- {
314
- "id": "/en/polydor_records",
315
- "link": "/music/artist/label",
316
- "name": "Polydor Records"
317
- },
318
- {
319
- "id": "/en/illegal_records",
320
- "link": "/music/artist/label",
321
- "name": "Illegal Records"
322
- },
323
- {
324
- "id": "/en/post-punk",
325
- "link": "/music/artist/genre",
326
- "name": "Post-punk"
327
- },
328
- {
329
- "id": "/guid/9202a8c04000641f80000000082147dd",
330
- "link": "/common/topic/webpage",
331
- "name": null
332
- },
333
- {
334
- "id": "/wikipedia/images/commons_id/3520500",
335
- "link": "/common/topic/image",
336
- "name": "The Police performing live on August 1, 2007 at Madison Square Garden, New York."
337
- },
338
- {
339
- "id": "/broadcast/artist",
340
- "link": "/type/object/type",
341
- "name": "Broadcast Artist"
342
- },
343
- {
344
- "id": "/en/electric_guitar",
345
- "link": "/music/artist/instruments_played",
346
- "name": "Electric guitar"
347
- },
348
- {
349
- "id": "/en/drum",
350
- "link": "/music/artist/instruments_played",
351
- "name": "Drum"
352
- },
353
- {
354
- "id": "/en/universal_music_group",
355
- "link": "/music/artist/label",
356
- "name": "Universal Music Group"
357
- },
358
- {
359
- "id": "/award/award_winner",
360
- "link": "/type/object/type",
361
- "name": "Award Winner"
362
- },
363
- {
364
- "id": "/en/pop_rock",
365
- "link": "/music/artist/genre",
366
- "name": "Pop rock"
367
- },
368
- {
369
- "id": "/en/sting",
370
- "link": "/music/artist/similar_artist",
371
- "name": "Sting"
372
- }
373
- ],
374
- "/type/reflect/any_reverse": [
375
- {
376
- "id": "/en/outlandos_damour",
377
- "link": "/music/album/artist",
378
- "name": "Outlandos d'Amour"
379
- },
380
- {
381
- "id": "/en/reggatta_de_blanc",
382
- "link": "/music/album/artist",
383
- "name": "Reggatta de Blanc"
384
- },
385
- {
386
- "id": "/en/zenyatta_mondatta",
387
- "link": "/music/album/artist",
388
- "name": "Zenyatta Mondatta"
389
- },
390
- {
391
- "id": "/guid/9202a8c04000641f800000000017dab4",
392
- "link": "/music/album/artist",
393
- "name": "Ghost in the Machine"
394
- },
395
- {
396
- "id": "/guid/9202a8c04000641f8000000002f9e349",
397
- "link": "/music/album/artist",
398
- "name": "Synchronicity"
399
- },
400
- {
401
- "id": "/en/every_breath_you_take_the_singles",
402
- "link": "/music/album/artist",
403
- "name": "Every Breath You Take: The Singles"
404
- },
405
- {
406
- "id": "/guid/9202a8c04000641f8000000002f9e3ca",
407
- "link": "/music/album/artist",
408
- "name": "Greatest Hits"
409
- },
410
- {
411
- "id": "/en/message_in_a_box_the_complete_recordings",
412
- "link": "/music/album/artist",
413
- "name": "Message in a Box: The Complete Recordings"
414
- },
415
- {
416
- "id": "/guid/9202a8c04000641f8000000002f9e2df",
417
- "link": "/music/album/artist",
418
- "name": "Live!"
419
- },
420
- {
421
- "id": "/en/every_breath_you_take_the_classics",
422
- "link": "/music/album/artist",
423
- "name": "Every Breath You Take: The Classics"
424
- },
425
- {
426
- "id": "/guid/9202a8c04000641f8000000002f9e3a7",
427
- "link": "/music/album/artist",
428
- "name": "Their Greatest Hits"
429
- },
430
- {
431
- "id": "/guid/9202a8c04000641f8000000002f9e2cf",
432
- "link": "/music/album/artist",
433
- "name": "Can't Stand Losing You"
434
- },
435
- {
436
- "id": "/en/roxanne_97_puff_daddy_remix",
437
- "link": "/music/album/artist",
438
- "name": "Roxanne '97 (Puff Daddy remix)"
439
- },
440
- {
441
- "id": "/en/roxanne_97",
442
- "link": "/music/album/artist",
443
- "name": "Roxanne '97"
444
- },
445
- {
446
- "id": "/guid/9202a8c04000641f800000000128acd5",
447
- "link": "/music/track/artist",
448
- "name": "Message in a Bottle"
449
- },
450
- {
451
- "id": "/guid/9202a8c04000641f800000000128acdc",
452
- "link": "/music/track/artist",
453
- "name": "Can't Stand Losing You"
454
- },
455
- {
456
- "id": "/guid/9202a8c04000641f800000000128acea",
457
- "link": "/music/track/artist",
458
- "name": "Every Breath You Take"
459
- },
460
- {
461
- "id": "/guid/9202a8c04000641f800000000128acf8",
462
- "link": "/music/track/artist",
463
- "name": "Walking on the Moon"
464
- },
465
- {
466
- "id": "/guid/9202a8c04000641f800000000128ad0d",
467
- "link": "/music/track/artist",
468
- "name": "Every Little Thing She Does Is Magic"
469
- },
470
- {
471
- "id": "/guid/9202a8c04000641f800000000128ad14",
472
- "link": "/music/track/artist",
473
- "name": "De Do Do Do, De Da Da Da"
474
- },
475
- {
476
- "id": "/guid/9202a8c04000641f800000000128ad3e",
477
- "link": "/music/track/artist",
478
- "name": "Don't Stand So Close to Me"
479
- },
480
- {
481
- "id": "/guid/9202a8c04000641f800000000128ad45",
482
- "link": "/music/track/artist",
483
- "name": "Roxanne"
484
- },
485
- {
486
- "id": "/guid/9202a8c04000641f800000000128ad4c",
487
- "link": "/music/track/artist",
488
- "name": "Roxanne '97 (Puff Daddy remix)"
489
- },
490
- {
491
- "id": "/guid/9202a8c04000641f80000000012dba61",
492
- "link": "/music/track/artist",
493
- "name": "Every Breath You Take"
494
- },
495
- {
496
- "id": "/guid/9202a8c04000641f80000000012dde95",
497
- "link": "/music/track/artist",
498
- "name": "Message in a Bottle"
499
- },
500
- {
501
- "id": "/guid/9202a8c04000641f80000000012dde9c",
502
- "link": "/music/track/artist",
503
- "name": "Can't Stand Losing You"
504
- },
505
- {
506
- "id": "/guid/9202a8c04000641f80000000012ddeaa",
507
- "link": "/music/track/artist",
508
- "name": "Every Breath You Take"
509
- },
510
- {
511
- "id": "/guid/9202a8c04000641f80000000012ddeb1",
512
- "link": "/music/track/artist",
513
- "name": "Walking on The Moon"
514
- },
515
- {
516
- "id": "/guid/9202a8c04000641f80000000012ddebf",
517
- "link": "/music/track/artist",
518
- "name": "Every Little Thing She Does Is Magic"
519
- },
520
- {
521
- "id": "/guid/9202a8c04000641f80000000012ddee9",
522
- "link": "/music/track/artist",
523
- "name": "Don't Stand So Close to Me"
524
- },
525
- {
526
- "id": "/guid/9202a8c04000641f80000000012ddef0",
527
- "link": "/music/track/artist",
528
- "name": "Roxanne"
529
- },
530
- {
531
- "id": "/guid/9202a8c04000641f80000000012ddef7",
532
- "link": "/music/track/artist",
533
- "name": "Roxanne '97 (Puff Daddy remix)"
534
- },
535
- {
536
- "id": "/guid/9202a8c04000641f8000000001338a15",
537
- "link": "/music/track/artist",
538
- "name": "Message in a Bottle"
539
- },
540
- {
541
- "id": "/guid/9202a8c04000641f8000000001338a1c",
542
- "link": "/music/track/artist",
543
- "name": "Can't Stand Losing You"
544
- },
545
- {
546
- "id": "/guid/9202a8c04000641f8000000001338a2a",
547
- "link": "/music/track/artist",
548
- "name": "Every Breath You Take"
549
- },
550
- {
551
- "id": "/guid/9202a8c04000641f8000000001338a38",
552
- "link": "/music/track/artist",
553
- "name": "Walking on the Moon"
554
- },
555
- {
556
- "id": "/guid/9202a8c04000641f8000000001338a4d",
557
- "link": "/music/track/artist",
558
- "name": "Every Little Thing She Does Is Magic"
559
- },
560
- {
561
- "id": "/guid/9202a8c04000641f8000000001338a54",
562
- "link": "/music/track/artist",
563
- "name": "De Do Do Do, De Da Da Da"
564
- },
565
- {
566
- "id": "/guid/9202a8c04000641f8000000001338a7e",
567
- "link": "/music/track/artist",
568
- "name": "Don't Stand So Close to Me"
569
- },
570
- {
571
- "id": "/guid/9202a8c04000641f8000000001338a85",
572
- "link": "/music/track/artist",
573
- "name": "Roxanne"
574
- },
575
- {
576
- "id": "/guid/9202a8c04000641f8000000001423459",
577
- "link": "/music/track/artist",
578
- "name": "Don't Stand So Close to Me"
579
- },
580
- {
581
- "id": "/guid/9202a8c04000641f8000000001474145",
582
- "link": "/music/track/artist",
583
- "name": "Message in a Bottle"
584
- },
585
- {
586
- "id": "/guid/9202a8c04000641f800000000147414c",
587
- "link": "/music/track/artist",
588
- "name": "Can't Stand Losing You"
589
- },
590
- {
591
- "id": "/guid/9202a8c04000641f800000000147415a",
592
- "link": "/music/track/artist",
593
- "name": "Every Breath You Take"
594
- },
595
- {
596
- "id": "/guid/9202a8c04000641f8000000001474168",
597
- "link": "/music/track/artist",
598
- "name": "Walking on the Moon"
599
- },
600
- {
601
- "id": "/guid/9202a8c04000641f800000000147417d",
602
- "link": "/music/track/artist",
603
- "name": "Every Little Thing She Does Is Magic"
604
- },
605
- {
606
- "id": "/guid/9202a8c04000641f8000000001474184",
607
- "link": "/music/track/artist",
608
- "name": "De Do Do Do, De Da Da Da"
609
- },
610
- {
611
- "id": "/guid/9202a8c04000641f80000000014741ae",
612
- "link": "/music/track/artist",
613
- "name": "Don't Stand So Close to Me"
614
- },
615
- {
616
- "id": "/guid/9202a8c04000641f80000000014741b5",
617
- "link": "/music/track/artist",
618
- "name": "Roxanne"
619
- },
620
- {
621
- "id": "/guid/9202a8c04000641f80000000014741bc",
622
- "link": "/music/track/artist",
623
- "name": "So Lonely"
624
- },
625
- {
626
- "id": "/guid/9202a8c04000641f8000000001477682",
627
- "link": "/music/track/artist",
628
- "name": "Every Little Thing She Does Is Magic"
629
- },
630
- {
631
- "id": "/guid/9202a8c04000641f80000000014c6e37",
632
- "link": "/music/track/artist",
633
- "name": "Don't Stand So Close"
634
- },
635
- {
636
- "id": "/guid/9202a8c04000641f8000000001555d7d",
637
- "link": "/music/track/artist",
638
- "name": "Walking on the Moon"
639
- },
640
- {
641
- "id": "/guid/9202a8c04000641f8000000001594b89",
642
- "link": "/music/track/artist",
643
- "name": "Message in a Bottle"
644
- },
645
- {
646
- "id": "/guid/9202a8c04000641f8000000001594b90",
647
- "link": "/music/track/artist",
648
- "name": "Can't Stand Losing You"
649
- },
650
- {
651
- "id": "/guid/9202a8c04000641f8000000001594b9e",
652
- "link": "/music/track/artist",
653
- "name": "Every Breath You Take"
654
- },
655
- {
656
- "id": "/guid/9202a8c04000641f8000000001594bac",
657
- "link": "/music/track/artist",
658
- "name": "Walking on the Moon"
659
- },
660
- {
661
- "id": "/guid/9202a8c04000641f8000000001594bc1",
662
- "link": "/music/track/artist",
663
- "name": "Every Little Thing She Does Is Magic"
664
- },
665
- {
666
- "id": "/guid/9202a8c04000641f8000000001594bc8",
667
- "link": "/music/track/artist",
668
- "name": "De Do Do Do De Da Da Da"
669
- },
670
- {
671
- "id": "/guid/9202a8c04000641f80000000015de479",
672
- "link": "/music/track/artist",
673
- "name": "Driven to Tears"
674
- },
675
- {
676
- "id": "/guid/9202a8c04000641f80000000016088e7",
677
- "link": "/music/track/artist",
678
- "name": "Every Breath You Take"
679
- },
680
- {
681
- "id": "/guid/9202a8c04000641f800000000163c1eb",
682
- "link": "/music/track/artist",
683
- "name": "Don't Stand So Close to Me"
684
- },
685
- {
686
- "id": "/guid/9202a8c04000641f800000000166c542",
687
- "link": "/music/track/artist",
688
- "name": "So Lonely"
689
- },
690
- {
691
- "id": "/guid/9202a8c04000641f800000000166ddfa",
692
- "link": "/music/track/artist",
693
- "name": "Synchronicity II"
694
- },
695
- {
696
- "id": "/guid/9202a8c04000641f80000000016a7432",
697
- "link": "/music/track/artist",
698
- "name": "Every Breath You Take"
699
- },
700
- {
701
- "id": "/guid/9202a8c04000641f80000000016f672b",
702
- "link": "/music/track/artist",
703
- "name": "Every Breath You Take"
704
- },
705
- {
706
- "id": "/guid/9202a8c04000641f800000000170d706",
707
- "link": "/music/track/artist",
708
- "name": "Every Breath You Take"
709
- },
710
- {
711
- "id": "/guid/9202a8c04000641f80000000017c7193",
712
- "link": "/music/track/artist",
713
- "name": "Can't Stand Losing You"
714
- },
715
- {
716
- "id": "/guid/9202a8c04000641f80000000017f93ec",
717
- "link": "/music/track/artist",
718
- "name": "Roxanne"
719
- },
720
- {
721
- "id": "/guid/9202a8c04000641f800000000187d519",
722
- "link": "/music/track/artist",
723
- "name": "De Do Do"
724
- },
725
- {
726
- "id": "/guid/9202a8c04000641f80000000018b6033",
727
- "link": "/music/track/artist",
728
- "name": "Every Breath You Take"
729
- },
730
- {
731
- "id": "/guid/9202a8c04000641f80000000018dc967",
732
- "link": "/music/track/artist",
733
- "name": "Don't Stand So Close to Me"
734
- },
735
- {
736
- "id": "/guid/9202a8c04000641f800000000196011e",
737
- "link": "/music/track/artist",
738
- "name": "Every Breath You Take"
739
- },
740
- {
741
- "id": "/guid/9202a8c04000641f80000000019ad096",
742
- "link": "/music/track/artist",
743
- "name": "Every Little Thing She Does Is Magic"
744
- },
745
- {
746
- "id": "/guid/9202a8c04000641f8000000001a3fbb1",
747
- "link": "/music/track/artist",
748
- "name": "Every Breath You Take"
749
- },
750
- {
751
- "id": "/guid/9202a8c04000641f8000000001a51770",
752
- "link": "/music/track/artist",
753
- "name": "Driven to Tears"
754
- },
755
- {
756
- "id": "/guid/9202a8c04000641f8000000001a6f0e0",
757
- "link": "/music/track/artist",
758
- "name": "How Stupid Mr. Bates"
759
- },
760
- {
761
- "id": "/guid/9202a8c04000641f8000000001a6f0ee",
762
- "link": "/music/track/artist",
763
- "name": "I Burn For You"
764
- },
765
- {
766
- "id": "/guid/9202a8c04000641f8000000001a6f118",
767
- "link": "/music/track/artist",
768
- "name": "A Kind of Loving"
769
- },
770
- {
771
- "id": "/guid/9202a8c04000641f8000000001b3c3b5",
772
- "link": "/music/track/artist",
773
- "name": "Roxanne"
774
- },
775
- {
776
- "id": "/guid/9202a8c04000641f8000000001b4384d",
777
- "link": "/music/track/artist",
778
- "name": "Nothing Achieving"
779
- },
780
- {
781
- "id": "/guid/9202a8c04000641f8000000001b8d03f",
782
- "link": "/music/track/artist",
783
- "name": "Roxanne"
784
- },
785
- {
786
- "id": "/guid/9202a8c04000641f8000000001bbfa9a",
787
- "link": "/music/track/artist",
788
- "name": "Fall Out"
789
- },
790
- {
791
- "id": "/guid/9202a8c04000641f8000000001bf6fa1",
792
- "link": "/music/track/artist",
793
- "name": "Every Breath You Take"
794
- },
795
- {
796
- "id": "/guid/9202a8c04000641f8000000001d17cc8",
797
- "link": "/music/track/artist",
798
- "name": "Message in a Bottle"
799
- },
800
- {
801
- "id": "/guid/9202a8c04000641f8000000001d17e96",
802
- "link": "/music/track/artist",
803
- "name": "Every Breath You Take"
804
- },
805
- {
806
- "id": "/guid/9202a8c04000641f8000000001d2d0b8",
807
- "link": "/music/track/artist",
808
- "name": "Message in a Bottle"
809
- },
810
- {
811
- "id": "/guid/9202a8c04000641f8000000001d80ea3",
812
- "link": "/music/track/artist",
813
- "name": "King of Pain"
814
- },
815
- {
816
- "id": "/guid/9202a8c04000641f8000000001d93d32",
817
- "link": "/music/track/artist",
818
- "name": "Every Little Thing She Does Is Magic"
819
- },
820
- {
821
- "id": "/guid/9202a8c04000641f8000000001e3eb1f",
822
- "link": "/music/track/artist",
823
- "name": "Every Little Thing She Does Is Magic"
824
- },
825
- {
826
- "id": "/guid/9202a8c04000641f8000000001ee5178",
827
- "link": "/music/track/artist",
828
- "name": "Message in a Bottle"
829
- },
830
- {
831
- "id": "/guid/9202a8c04000641f8000000001f5a4ad",
832
- "link": "/music/track/artist",
833
- "name": "Every Breath You Take"
834
- },
835
- {
836
- "id": "/guid/9202a8c04000641f8000000001f835c3",
837
- "link": "/music/track/artist",
838
- "name": "Every Breath You Take"
839
- },
840
- {
841
- "id": "/guid/9202a8c04000641f8000000001ff4227",
842
- "link": "/music/track/artist",
843
- "name": "Every Breath You Take"
844
- },
845
- {
846
- "id": "/guid/9202a8c04000641f800000000200cc5e",
847
- "link": "/music/track/artist",
848
- "name": "Every Little Thing She Does Is Magic"
849
- },
850
- {
851
- "id": "/guid/9202a8c04000641f8000000002041324",
852
- "link": "/music/track/artist",
853
- "name": "Every Breath You Take"
854
- },
855
- {
856
- "id": "/guid/9202a8c04000641f800000000206f5f8",
857
- "link": "/music/track/artist",
858
- "name": "Every Breath You Take"
859
- },
860
- {
861
- "id": "/guid/9202a8c04000641f80000000021147c7",
862
- "link": "/music/track/artist",
863
- "name": "Message in a Bottle"
864
- },
865
- {
866
- "id": "/guid/9202a8c04000641f80000000021147ce",
867
- "link": "/music/track/artist",
868
- "name": "Can't Stand Losing You"
869
- },
870
- {
871
- "id": "/guid/9202a8c04000641f80000000021147dc",
872
- "link": "/music/track/artist",
873
- "name": "Every Breath You Take"
874
- }
875
- ],
876
- "/type/reflect/any_value": [
877
- {
878
- "link": "/type/object/name",
879
- "value": "The Police"
880
- },
881
- {
882
- "link": "/type/object/name",
883
- "value": "The Police"
884
- },
885
- {
886
- "link": "/type/object/name",
887
- "value": "The Police"
888
- },
889
- {
890
- "link": "/type/object/name",
891
- "value": "The Police"
892
- },
893
- {
894
- "link": "/type/object/name",
895
- "value": "\u30dd\u30ea\u30b9 (\u30d0\u30f3\u30c9)"
896
- },
897
- {
898
- "link": "/type/object/name",
899
- "value": "The Police"
900
- },
901
- {
902
- "link": "/music/artist/active_start",
903
- "value": "1977-01"
904
- },
905
- {
906
- "link": "/type/object/name",
907
- "value": "The Police"
908
- },
909
- {
910
- "link": "/type/object/name",
911
- "value": "The Police"
912
- },
913
- {
914
- "link": "/type/object/name",
915
- "value": "The Police"
916
- },
917
- {
918
- "link": "/type/object/name",
919
- "value": "The Police"
920
- },
921
- {
922
- "link": "/type/object/name",
923
- "value": "\u05d4\u05e4\u05d5\u05dc\u05d9\u05e1"
924
- },
925
- {
926
- "link": "/common/topic/alias",
927
- "value": "Sting &amp; The Police"
928
- },
929
- {
930
- "link": "/type/object/name",
931
- "value": "\u0e40\u0e14\u0e2d\u0e30 \u0e42\u0e1e\u0e25\u0e34\u0e0b"
932
- },
933
- {
934
- "link": "/music/artist/active_end",
935
- "value": "1986"
936
- }
937
- ],
938
- "id": "/en/the_police"
939
- }
2
+ "/type/reflect/any_master": [
3
+ {
4
+ "id": "/boot/all_permission",
5
+ "link": "/type/object/permission",
6
+ "name": "Global Write Permission"
7
+ },
8
+ {
9
+ "id": "/guid/9202a8c04000641f800000000006df25",
10
+ "link": "/common/topic/article",
11
+ "name": null
12
+ },
13
+ {
14
+ "id": "/music/artist",
15
+ "link": "/type/object/type",
16
+ "name": "Musical Artist"
17
+ },
18
+ {
19
+ "id": "/common/topic",
20
+ "link": "/type/object/type",
21
+ "name": "Topic"
22
+ },
23
+ {
24
+ "id": "/guid/9202a8c04000641f8000000003921d3c",
25
+ "link": "/common/topic/webpage",
26
+ "name": "Discogs entry"
27
+ },
28
+ {
29
+ "id": "/wikipedia/images/en_id/982873",
30
+ "link": "/common/topic/image",
31
+ "name": null
32
+ },
33
+ {
34
+ "id": "/en/rock_music",
35
+ "link": "/music/artist/genre",
36
+ "name": "Rock music"
37
+ },
38
+ {
39
+ "id": "/en/ska",
40
+ "link": "/music/artist/genre",
41
+ "name": "Ska"
42
+ },
43
+ {
44
+ "id": "/en/reggae",
45
+ "link": "/music/artist/genre",
46
+ "name": "Reggae"
47
+ },
48
+ {
49
+ "id": "/en/london",
50
+ "link": "/music/artist/origin",
51
+ "name": "London"
52
+ },
53
+ {
54
+ "id": "/music/producer",
55
+ "link": "/type/object/type",
56
+ "name": "Record Producer"
57
+ },
58
+ {
59
+ "id": "/music/musical_group",
60
+ "link": "/type/object/type",
61
+ "name": "Musical Group"
62
+ },
63
+ {
64
+ "id": "/guid/9202a8c04000641f80000000072a23e1",
65
+ "link": "/common/topic/webpage",
66
+ "name": null
67
+ },
68
+ {
69
+ "id": "/en/new_wave",
70
+ "link": "/music/artist/genre",
71
+ "name": "New Wave"
72
+ },
73
+ {
74
+ "id": "/en/a_m_records",
75
+ "link": "/music/artist/label",
76
+ "name": "A&amp;M Records"
77
+ },
78
+ {
79
+ "id": "/en/polydor_records",
80
+ "link": "/music/artist/label",
81
+ "name": "Polydor Records"
82
+ },
83
+ {
84
+ "id": "/en/illegal_records",
85
+ "link": "/music/artist/label",
86
+ "name": "Illegal Records"
87
+ },
88
+ {
89
+ "id": "/en/post-punk",
90
+ "link": "/music/artist/genre",
91
+ "name": "Post-punk"
92
+ },
93
+ {
94
+ "id": "/guid/9202a8c04000641f80000000082147dd",
95
+ "link": "/common/topic/webpage",
96
+ "name": null
97
+ },
98
+ {
99
+ "id": "/wikipedia/images/commons_id/3520500",
100
+ "link": "/common/topic/image",
101
+ "name": "The Police performing live on August 1, 2007 at Madison Square Garden, New York."
102
+ },
103
+ {
104
+ "id": "/broadcast/artist",
105
+ "link": "/type/object/type",
106
+ "name": "Broadcast Artist"
107
+ },
108
+ {
109
+ "id": "/en/electric_guitar",
110
+ "link": "/music/artist/instruments_played",
111
+ "name": "Electric guitar"
112
+ },
113
+ {
114
+ "id": "/en/drum",
115
+ "link": "/music/artist/instruments_played",
116
+ "name": "Drum"
117
+ },
118
+ {
119
+ "id": "/en/universal_music_group",
120
+ "link": "/music/artist/label",
121
+ "name": "Universal Music Group"
122
+ },
123
+ {
124
+ "id": "/award/award_winner",
125
+ "link": "/type/object/type",
126
+ "name": "Award Winner"
127
+ },
128
+ {
129
+ "id": "/en/pop_rock",
130
+ "link": "/music/artist/genre",
131
+ "name": "Pop rock"
132
+ },
133
+ {
134
+ "id": "/en/sting",
135
+ "link": "/music/artist/similar_artist",
136
+ "name": "Sting"
137
+ }
138
+ ],
139
+ "/type/reflect/any_reverse": [
140
+ {
141
+ "id": "/en/outlandos_damour",
142
+ "link": "/music/album/artist",
143
+ "name": "Outlandos d'Amour"
144
+ },
145
+ {
146
+ "id": "/en/reggatta_de_blanc",
147
+ "link": "/music/album/artist",
148
+ "name": "Reggatta de Blanc"
149
+ },
150
+ {
151
+ "id": "/en/zenyatta_mondatta",
152
+ "link": "/music/album/artist",
153
+ "name": "Zenyatta Mondatta"
154
+ },
155
+ {
156
+ "id": "/guid/9202a8c04000641f800000000017dab4",
157
+ "link": "/music/album/artist",
158
+ "name": "Ghost in the Machine"
159
+ },
160
+ {
161
+ "id": "/guid/9202a8c04000641f8000000002f9e349",
162
+ "link": "/music/album/artist",
163
+ "name": "Synchronicity"
164
+ },
165
+ {
166
+ "id": "/en/every_breath_you_take_the_singles",
167
+ "link": "/music/album/artist",
168
+ "name": "Every Breath You Take: The Singles"
169
+ },
170
+ {
171
+ "id": "/guid/9202a8c04000641f8000000002f9e3ca",
172
+ "link": "/music/album/artist",
173
+ "name": "Greatest Hits"
174
+ },
175
+ {
176
+ "id": "/en/message_in_a_box_the_complete_recordings",
177
+ "link": "/music/album/artist",
178
+ "name": "Message in a Box: The Complete Recordings"
179
+ },
180
+ {
181
+ "id": "/guid/9202a8c04000641f8000000002f9e2df",
182
+ "link": "/music/album/artist",
183
+ "name": "Live!"
184
+ },
185
+ {
186
+ "id": "/en/every_breath_you_take_the_classics",
187
+ "link": "/music/album/artist",
188
+ "name": "Every Breath You Take: The Classics"
189
+ },
190
+ {
191
+ "id": "/guid/9202a8c04000641f8000000002f9e3a7",
192
+ "link": "/music/album/artist",
193
+ "name": "Their Greatest Hits"
194
+ },
195
+ {
196
+ "id": "/guid/9202a8c04000641f8000000002f9e2cf",
197
+ "link": "/music/album/artist",
198
+ "name": "Can't Stand Losing You"
199
+ },
200
+ {
201
+ "id": "/en/roxanne_97_puff_daddy_remix",
202
+ "link": "/music/album/artist",
203
+ "name": "Roxanne '97 (Puff Daddy remix)"
204
+ },
205
+ {
206
+ "id": "/en/roxanne_97",
207
+ "link": "/music/album/artist",
208
+ "name": "Roxanne '97"
209
+ },
210
+ {
211
+ "id": "/guid/9202a8c04000641f800000000128acd5",
212
+ "link": "/music/track/artist",
213
+ "name": "Message in a Bottle"
214
+ },
215
+ {
216
+ "id": "/guid/9202a8c04000641f800000000128acdc",
217
+ "link": "/music/track/artist",
218
+ "name": "Can't Stand Losing You"
219
+ },
220
+ {
221
+ "id": "/guid/9202a8c04000641f800000000128acea",
222
+ "link": "/music/track/artist",
223
+ "name": "Every Breath You Take"
224
+ },
225
+ {
226
+ "id": "/guid/9202a8c04000641f800000000128acf8",
227
+ "link": "/music/track/artist",
228
+ "name": "Walking on the Moon"
229
+ },
230
+ {
231
+ "id": "/guid/9202a8c04000641f800000000128ad0d",
232
+ "link": "/music/track/artist",
233
+ "name": "Every Little Thing She Does Is Magic"
234
+ },
235
+ {
236
+ "id": "/guid/9202a8c04000641f800000000128ad14",
237
+ "link": "/music/track/artist",
238
+ "name": "De Do Do Do, De Da Da Da"
239
+ },
240
+ {
241
+ "id": "/guid/9202a8c04000641f800000000128ad3e",
242
+ "link": "/music/track/artist",
243
+ "name": "Don't Stand So Close to Me"
244
+ },
245
+ {
246
+ "id": "/guid/9202a8c04000641f800000000128ad45",
247
+ "link": "/music/track/artist",
248
+ "name": "Roxanne"
249
+ },
250
+ {
251
+ "id": "/guid/9202a8c04000641f800000000128ad4c",
252
+ "link": "/music/track/artist",
253
+ "name": "Roxanne '97 (Puff Daddy remix)"
254
+ },
255
+ {
256
+ "id": "/guid/9202a8c04000641f80000000012dba61",
257
+ "link": "/music/track/artist",
258
+ "name": "Every Breath You Take"
259
+ },
260
+ {
261
+ "id": "/guid/9202a8c04000641f80000000012dde95",
262
+ "link": "/music/track/artist",
263
+ "name": "Message in a Bottle"
264
+ },
265
+ {
266
+ "id": "/guid/9202a8c04000641f80000000012dde9c",
267
+ "link": "/music/track/artist",
268
+ "name": "Can't Stand Losing You"
269
+ },
270
+ {
271
+ "id": "/guid/9202a8c04000641f80000000012ddeaa",
272
+ "link": "/music/track/artist",
273
+ "name": "Every Breath You Take"
274
+ },
275
+ {
276
+ "id": "/guid/9202a8c04000641f80000000012ddeb1",
277
+ "link": "/music/track/artist",
278
+ "name": "Walking on The Moon"
279
+ },
280
+ {
281
+ "id": "/guid/9202a8c04000641f80000000012ddebf",
282
+ "link": "/music/track/artist",
283
+ "name": "Every Little Thing She Does Is Magic"
284
+ },
285
+ {
286
+ "id": "/guid/9202a8c04000641f80000000012ddee9",
287
+ "link": "/music/track/artist",
288
+ "name": "Don't Stand So Close to Me"
289
+ },
290
+ {
291
+ "id": "/guid/9202a8c04000641f80000000012ddef0",
292
+ "link": "/music/track/artist",
293
+ "name": "Roxanne"
294
+ },
295
+ {
296
+ "id": "/guid/9202a8c04000641f80000000012ddef7",
297
+ "link": "/music/track/artist",
298
+ "name": "Roxanne '97 (Puff Daddy remix)"
299
+ },
300
+ {
301
+ "id": "/guid/9202a8c04000641f8000000001338a15",
302
+ "link": "/music/track/artist",
303
+ "name": "Message in a Bottle"
304
+ },
305
+ {
306
+ "id": "/guid/9202a8c04000641f8000000001338a1c",
307
+ "link": "/music/track/artist",
308
+ "name": "Can't Stand Losing You"
309
+ },
310
+ {
311
+ "id": "/guid/9202a8c04000641f8000000001338a2a",
312
+ "link": "/music/track/artist",
313
+ "name": "Every Breath You Take"
314
+ },
315
+ {
316
+ "id": "/guid/9202a8c04000641f8000000001338a38",
317
+ "link": "/music/track/artist",
318
+ "name": "Walking on the Moon"
319
+ },
320
+ {
321
+ "id": "/guid/9202a8c04000641f8000000001338a4d",
322
+ "link": "/music/track/artist",
323
+ "name": "Every Little Thing She Does Is Magic"
324
+ },
325
+ {
326
+ "id": "/guid/9202a8c04000641f8000000001338a54",
327
+ "link": "/music/track/artist",
328
+ "name": "De Do Do Do, De Da Da Da"
329
+ },
330
+ {
331
+ "id": "/guid/9202a8c04000641f8000000001338a7e",
332
+ "link": "/music/track/artist",
333
+ "name": "Don't Stand So Close to Me"
334
+ },
335
+ {
336
+ "id": "/guid/9202a8c04000641f8000000001338a85",
337
+ "link": "/music/track/artist",
338
+ "name": "Roxanne"
339
+ },
340
+ {
341
+ "id": "/guid/9202a8c04000641f8000000001423459",
342
+ "link": "/music/track/artist",
343
+ "name": "Don't Stand So Close to Me"
344
+ },
345
+ {
346
+ "id": "/guid/9202a8c04000641f8000000001474145",
347
+ "link": "/music/track/artist",
348
+ "name": "Message in a Bottle"
349
+ },
350
+ {
351
+ "id": "/guid/9202a8c04000641f800000000147414c",
352
+ "link": "/music/track/artist",
353
+ "name": "Can't Stand Losing You"
354
+ },
355
+ {
356
+ "id": "/guid/9202a8c04000641f800000000147415a",
357
+ "link": "/music/track/artist",
358
+ "name": "Every Breath You Take"
359
+ },
360
+ {
361
+ "id": "/guid/9202a8c04000641f8000000001474168",
362
+ "link": "/music/track/artist",
363
+ "name": "Walking on the Moon"
364
+ },
365
+ {
366
+ "id": "/guid/9202a8c04000641f800000000147417d",
367
+ "link": "/music/track/artist",
368
+ "name": "Every Little Thing She Does Is Magic"
369
+ },
370
+ {
371
+ "id": "/guid/9202a8c04000641f8000000001474184",
372
+ "link": "/music/track/artist",
373
+ "name": "De Do Do Do, De Da Da Da"
374
+ },
375
+ {
376
+ "id": "/guid/9202a8c04000641f80000000014741ae",
377
+ "link": "/music/track/artist",
378
+ "name": "Don't Stand So Close to Me"
379
+ },
380
+ {
381
+ "id": "/guid/9202a8c04000641f80000000014741b5",
382
+ "link": "/music/track/artist",
383
+ "name": "Roxanne"
384
+ },
385
+ {
386
+ "id": "/guid/9202a8c04000641f80000000014741bc",
387
+ "link": "/music/track/artist",
388
+ "name": "So Lonely"
389
+ },
390
+ {
391
+ "id": "/guid/9202a8c04000641f8000000001477682",
392
+ "link": "/music/track/artist",
393
+ "name": "Every Little Thing She Does Is Magic"
394
+ },
395
+ {
396
+ "id": "/guid/9202a8c04000641f80000000014c6e37",
397
+ "link": "/music/track/artist",
398
+ "name": "Don't Stand So Close"
399
+ },
400
+ {
401
+ "id": "/guid/9202a8c04000641f8000000001555d7d",
402
+ "link": "/music/track/artist",
403
+ "name": "Walking on the Moon"
404
+ },
405
+ {
406
+ "id": "/guid/9202a8c04000641f8000000001594b89",
407
+ "link": "/music/track/artist",
408
+ "name": "Message in a Bottle"
409
+ },
410
+ {
411
+ "id": "/guid/9202a8c04000641f8000000001594b90",
412
+ "link": "/music/track/artist",
413
+ "name": "Can't Stand Losing You"
414
+ },
415
+ {
416
+ "id": "/guid/9202a8c04000641f8000000001594b9e",
417
+ "link": "/music/track/artist",
418
+ "name": "Every Breath You Take"
419
+ },
420
+ {
421
+ "id": "/guid/9202a8c04000641f8000000001594bac",
422
+ "link": "/music/track/artist",
423
+ "name": "Walking on the Moon"
424
+ },
425
+ {
426
+ "id": "/guid/9202a8c04000641f8000000001594bc1",
427
+ "link": "/music/track/artist",
428
+ "name": "Every Little Thing She Does Is Magic"
429
+ },
430
+ {
431
+ "id": "/guid/9202a8c04000641f8000000001594bc8",
432
+ "link": "/music/track/artist",
433
+ "name": "De Do Do Do De Da Da Da"
434
+ },
435
+ {
436
+ "id": "/guid/9202a8c04000641f80000000015de479",
437
+ "link": "/music/track/artist",
438
+ "name": "Driven to Tears"
439
+ },
440
+ {
441
+ "id": "/guid/9202a8c04000641f80000000016088e7",
442
+ "link": "/music/track/artist",
443
+ "name": "Every Breath You Take"
444
+ },
445
+ {
446
+ "id": "/guid/9202a8c04000641f800000000163c1eb",
447
+ "link": "/music/track/artist",
448
+ "name": "Don't Stand So Close to Me"
449
+ },
450
+ {
451
+ "id": "/guid/9202a8c04000641f800000000166c542",
452
+ "link": "/music/track/artist",
453
+ "name": "So Lonely"
454
+ },
455
+ {
456
+ "id": "/guid/9202a8c04000641f800000000166ddfa",
457
+ "link": "/music/track/artist",
458
+ "name": "Synchronicity II"
459
+ },
460
+ {
461
+ "id": "/guid/9202a8c04000641f80000000016a7432",
462
+ "link": "/music/track/artist",
463
+ "name": "Every Breath You Take"
464
+ },
465
+ {
466
+ "id": "/guid/9202a8c04000641f80000000016f672b",
467
+ "link": "/music/track/artist",
468
+ "name": "Every Breath You Take"
469
+ },
470
+ {
471
+ "id": "/guid/9202a8c04000641f800000000170d706",
472
+ "link": "/music/track/artist",
473
+ "name": "Every Breath You Take"
474
+ },
475
+ {
476
+ "id": "/guid/9202a8c04000641f80000000017c7193",
477
+ "link": "/music/track/artist",
478
+ "name": "Can't Stand Losing You"
479
+ },
480
+ {
481
+ "id": "/guid/9202a8c04000641f80000000017f93ec",
482
+ "link": "/music/track/artist",
483
+ "name": "Roxanne"
484
+ },
485
+ {
486
+ "id": "/guid/9202a8c04000641f800000000187d519",
487
+ "link": "/music/track/artist",
488
+ "name": "De Do Do"
489
+ },
490
+ {
491
+ "id": "/guid/9202a8c04000641f80000000018b6033",
492
+ "link": "/music/track/artist",
493
+ "name": "Every Breath You Take"
494
+ },
495
+ {
496
+ "id": "/guid/9202a8c04000641f80000000018dc967",
497
+ "link": "/music/track/artist",
498
+ "name": "Don't Stand So Close to Me"
499
+ },
500
+ {
501
+ "id": "/guid/9202a8c04000641f800000000196011e",
502
+ "link": "/music/track/artist",
503
+ "name": "Every Breath You Take"
504
+ },
505
+ {
506
+ "id": "/guid/9202a8c04000641f80000000019ad096",
507
+ "link": "/music/track/artist",
508
+ "name": "Every Little Thing She Does Is Magic"
509
+ },
510
+ {
511
+ "id": "/guid/9202a8c04000641f8000000001a3fbb1",
512
+ "link": "/music/track/artist",
513
+ "name": "Every Breath You Take"
514
+ },
515
+ {
516
+ "id": "/guid/9202a8c04000641f8000000001a51770",
517
+ "link": "/music/track/artist",
518
+ "name": "Driven to Tears"
519
+ },
520
+ {
521
+ "id": "/guid/9202a8c04000641f8000000001a6f0e0",
522
+ "link": "/music/track/artist",
523
+ "name": "How Stupid Mr. Bates"
524
+ },
525
+ {
526
+ "id": "/guid/9202a8c04000641f8000000001a6f0ee",
527
+ "link": "/music/track/artist",
528
+ "name": "I Burn For You"
529
+ },
530
+ {
531
+ "id": "/guid/9202a8c04000641f8000000001a6f118",
532
+ "link": "/music/track/artist",
533
+ "name": "A Kind of Loving"
534
+ },
535
+ {
536
+ "id": "/guid/9202a8c04000641f8000000001b3c3b5",
537
+ "link": "/music/track/artist",
538
+ "name": "Roxanne"
539
+ },
540
+ {
541
+ "id": "/guid/9202a8c04000641f8000000001b4384d",
542
+ "link": "/music/track/artist",
543
+ "name": "Nothing Achieving"
544
+ },
545
+ {
546
+ "id": "/guid/9202a8c04000641f8000000001b8d03f",
547
+ "link": "/music/track/artist",
548
+ "name": "Roxanne"
549
+ },
550
+ {
551
+ "id": "/guid/9202a8c04000641f8000000001bbfa9a",
552
+ "link": "/music/track/artist",
553
+ "name": "Fall Out"
554
+ },
555
+ {
556
+ "id": "/guid/9202a8c04000641f8000000001bf6fa1",
557
+ "link": "/music/track/artist",
558
+ "name": "Every Breath You Take"
559
+ },
560
+ {
561
+ "id": "/guid/9202a8c04000641f8000000001d17cc8",
562
+ "link": "/music/track/artist",
563
+ "name": "Message in a Bottle"
564
+ },
565
+ {
566
+ "id": "/guid/9202a8c04000641f8000000001d17e96",
567
+ "link": "/music/track/artist",
568
+ "name": "Every Breath You Take"
569
+ },
570
+ {
571
+ "id": "/guid/9202a8c04000641f8000000001d2d0b8",
572
+ "link": "/music/track/artist",
573
+ "name": "Message in a Bottle"
574
+ },
575
+ {
576
+ "id": "/guid/9202a8c04000641f8000000001d80ea3",
577
+ "link": "/music/track/artist",
578
+ "name": "King of Pain"
579
+ },
580
+ {
581
+ "id": "/guid/9202a8c04000641f8000000001d93d32",
582
+ "link": "/music/track/artist",
583
+ "name": "Every Little Thing She Does Is Magic"
584
+ },
585
+ {
586
+ "id": "/guid/9202a8c04000641f8000000001e3eb1f",
587
+ "link": "/music/track/artist",
588
+ "name": "Every Little Thing She Does Is Magic"
589
+ },
590
+ {
591
+ "id": "/guid/9202a8c04000641f8000000001ee5178",
592
+ "link": "/music/track/artist",
593
+ "name": "Message in a Bottle"
594
+ },
595
+ {
596
+ "id": "/guid/9202a8c04000641f8000000001f5a4ad",
597
+ "link": "/music/track/artist",
598
+ "name": "Every Breath You Take"
599
+ },
600
+ {
601
+ "id": "/guid/9202a8c04000641f8000000001f835c3",
602
+ "link": "/music/track/artist",
603
+ "name": "Every Breath You Take"
604
+ },
605
+ {
606
+ "id": "/guid/9202a8c04000641f8000000001ff4227",
607
+ "link": "/music/track/artist",
608
+ "name": "Every Breath You Take"
609
+ },
610
+ {
611
+ "id": "/guid/9202a8c04000641f800000000200cc5e",
612
+ "link": "/music/track/artist",
613
+ "name": "Every Little Thing She Does Is Magic"
614
+ },
615
+ {
616
+ "id": "/guid/9202a8c04000641f8000000002041324",
617
+ "link": "/music/track/artist",
618
+ "name": "Every Breath You Take"
619
+ },
620
+ {
621
+ "id": "/guid/9202a8c04000641f800000000206f5f8",
622
+ "link": "/music/track/artist",
623
+ "name": "Every Breath You Take"
624
+ },
625
+ {
626
+ "id": "/guid/9202a8c04000641f80000000021147c7",
627
+ "link": "/music/track/artist",
628
+ "name": "Message in a Bottle"
629
+ },
630
+ {
631
+ "id": "/guid/9202a8c04000641f80000000021147ce",
632
+ "link": "/music/track/artist",
633
+ "name": "Can't Stand Losing You"
634
+ },
635
+ {
636
+ "id": "/guid/9202a8c04000641f80000000021147dc",
637
+ "link": "/music/track/artist",
638
+ "name": "Every Breath You Take"
639
+ }
640
+ ],
641
+ "/type/reflect/any_value": [
642
+ {
643
+ "link": "/type/object/name",
644
+ "value": "The Police"
645
+ },
646
+ {
647
+ "link": "/type/object/name",
648
+ "value": "The Police"
649
+ },
650
+ {
651
+ "link": "/type/object/name",
652
+ "value": "The Police"
653
+ },
654
+ {
655
+ "link": "/type/object/name",
656
+ "value": "The Police"
657
+ },
658
+ {
659
+ "link": "/type/object/name",
660
+ "value": "ポリス (バンド)"
661
+ },
662
+ {
663
+ "link": "/type/object/name",
664
+ "value": "The Police"
665
+ },
666
+ {
667
+ "link": "/music/artist/active_start",
668
+ "value": "1977-01"
669
+ },
670
+ {
671
+ "link": "/type/object/name",
672
+ "value": "The Police"
673
+ },
674
+ {
675
+ "link": "/type/object/name",
676
+ "value": "The Police"
677
+ },
678
+ {
679
+ "link": "/type/object/name",
680
+ "value": "The Police"
681
+ },
682
+ {
683
+ "link": "/type/object/name",
684
+ "value": "The Police"
685
+ },
686
+ {
687
+ "link": "/type/object/name",
688
+ "value": "הפוליס"
689
+ },
690
+ {
691
+ "link": "/common/topic/alias",
692
+ "value": "Sting &amp; The Police"
693
+ },
694
+ {
695
+ "link": "/type/object/name",
696
+ "value": "เดอะ โพลิซ"
697
+ },
698
+ {
699
+ "link": "/music/artist/active_end",
700
+ "value": "1986"
701
+ }
702
+ ],
703
+ "id": "/en/the_police",
704
+ "ken:type": [
705
+ {
706
+ "id": "/music/artist",
707
+ "name": "Musical Artist",
708
+ "properties": [
709
+ {
710
+ "expected_type": "/location/location",
711
+ "id": "/music/artist/origin",
712
+ "master_property": null,
713
+ "name": "Place Musical Career Began",
714
+ "reverse_property": null,
715
+ "unique": true
716
+ },
717
+ {
718
+ "expected_type": "/type/datetime",
719
+ "id": "/music/artist/active_start",
720
+ "master_property": null,
721
+ "name": "Active as Musical Artist (start)",
722
+ "reverse_property": null,
723
+ "unique": true
724
+ },
725
+ {
726
+ "expected_type": "/type/datetime",
727
+ "id": "/music/artist/active_end",
728
+ "master_property": null,
729
+ "name": "Active as Musical Artist (end)",
730
+ "reverse_property": null,
731
+ "unique": true
732
+ },
733
+ {
734
+ "expected_type": "/music/genre",
735
+ "id": "/music/artist/genre",
736
+ "master_property": null,
737
+ "name": "Musical Genres",
738
+ "reverse_property": "/music/genre/artists",
739
+ "unique": false
740
+ },
741
+ {
742
+ "expected_type": "/music/record_label",
743
+ "id": "/music/artist/label",
744
+ "master_property": null,
745
+ "name": "Record Labels",
746
+ "reverse_property": "/music/record_label/artist",
747
+ "unique": null
748
+ },
749
+ {
750
+ "expected_type": "/music/artist",
751
+ "id": "/music/artist/similar_artist",
752
+ "master_property": null,
753
+ "name": "Similar Artists",
754
+ "reverse_property": "/music/artist/artist_similar",
755
+ "unique": null
756
+ },
757
+ {
758
+ "expected_type": "/common/webpage",
759
+ "id": "/music/artist/home_page",
760
+ "master_property": null,
761
+ "name": "Musical Artist Home Page",
762
+ "reverse_property": null,
763
+ "unique": null
764
+ },
765
+ {
766
+ "expected_type": "/common/webpage",
767
+ "id": "/music/artist/acquire_webpage",
768
+ "master_property": null,
769
+ "name": "Web Page for Music",
770
+ "reverse_property": null,
771
+ "unique": null
772
+ },
773
+ {
774
+ "expected_type": "/music/album",
775
+ "id": "/music/artist/album",
776
+ "master_property": "/music/album/artist",
777
+ "name": "Albums",
778
+ "reverse_property": null,
779
+ "unique": null
780
+ },
781
+ {
782
+ "expected_type": "/music/recording_contribution",
783
+ "id": "/music/artist/contribution",
784
+ "master_property": "/music/recording_contribution/contributor",
785
+ "name": "Album Contributions",
786
+ "reverse_property": null,
787
+ "unique": null
788
+ },
789
+ {
790
+ "expected_type": "/music/track",
791
+ "id": "/music/artist/track",
792
+ "master_property": "/music/track/artist",
793
+ "name": "Tracks Recorded",
794
+ "reverse_property": null,
795
+ "unique": null
796
+ },
797
+ {
798
+ "expected_type": "/music/artist",
799
+ "id": "/music/artist/artist_similar",
800
+ "master_property": "/music/artist/similar_artist",
801
+ "name": "Similar Musical Artists",
802
+ "reverse_property": null,
803
+ "unique": null
804
+ },
805
+ {
806
+ "expected_type": "/music/track_contribution",
807
+ "id": "/music/artist/track_contributions",
808
+ "master_property": "/music/track_contribution/contributor",
809
+ "name": "Track Contributions",
810
+ "reverse_property": null,
811
+ "unique": null
812
+ },
813
+ {
814
+ "expected_type": "/music/instrument",
815
+ "id": "/music/artist/instruments_played",
816
+ "master_property": null,
817
+ "name": "Instruments Played",
818
+ "reverse_property": "/music/instrument/instrumentalists",
819
+ "unique": null
820
+ },
821
+ {
822
+ "expected_type": "/music/voice",
823
+ "id": "/music/artist/vocal_range",
824
+ "master_property": null,
825
+ "name": "Vocal Range",
826
+ "reverse_property": "/music/voice/singers",
827
+ "unique": null
828
+ },
829
+ {
830
+ "expected_type": "/music/concert_tour",
831
+ "id": "/music/artist/concert_tours",
832
+ "master_property": "/music/concert_tour/artist",
833
+ "name": "Concert Tours",
834
+ "reverse_property": null,
835
+ "unique": false
836
+ }
837
+ ]
838
+ },
839
+ {
840
+ "id": "/common/topic",
841
+ "name": "Topic",
842
+ "properties": [
843
+ {
844
+ "expected_type": "/type/text",
845
+ "id": "/common/topic/alias",
846
+ "master_property": null,
847
+ "name": "Also known as",
848
+ "reverse_property": null,
849
+ "unique": null
850
+ },
851
+ {
852
+ "expected_type": "/common/document",
853
+ "id": "/common/topic/article",
854
+ "master_property": null,
855
+ "name": "article",
856
+ "reverse_property": null,
857
+ "unique": null
858
+ },
859
+ {
860
+ "expected_type": "/common/image",
861
+ "id": "/common/topic/image",
862
+ "master_property": null,
863
+ "name": "image",
864
+ "reverse_property": "/common/image/appears_in_topic_gallery",
865
+ "unique": null
866
+ },
867
+ {
868
+ "expected_type": "/common/webpage",
869
+ "id": "/common/topic/webpage",
870
+ "master_property": null,
871
+ "name": "Web Link(s)",
872
+ "reverse_property": null,
873
+ "unique": null
874
+ }
875
+ ]
876
+ },
877
+ {
878
+ "id": "/music/producer",
879
+ "name": "Record Producer",
880
+ "properties": [
881
+ {
882
+ "expected_type": "/music/album",
883
+ "id": "/music/producer/albums_produced",
884
+ "master_property": "/music/album/producer",
885
+ "name": "Albums Produced",
886
+ "reverse_property": null,
887
+ "unique": null
888
+ },
889
+ {
890
+ "expected_type": "/music/track",
891
+ "id": "/music/producer/tracks_produced",
892
+ "master_property": "/music/track/producer",
893
+ "name": "Tracks produced",
894
+ "reverse_property": null,
895
+ "unique": false
896
+ }
897
+ ]
898
+ },
899
+ {
900
+ "id": "/music/musical_group",
901
+ "name": "Musical Group",
902
+ "properties": [{
903
+ "expected_type": "/music/group_membership",
904
+ "id": "/music/musical_group/member",
905
+ "master_property": "/music/group_membership/group",
906
+ "name": "Members Of Musical Group",
907
+ "reverse_property": null,
908
+ "unique": null
909
+ }]
910
+ },
911
+ {
912
+ "id": "/broadcast/artist",
913
+ "name": "Broadcast Artist",
914
+ "properties": [{
915
+ "expected_type": "/broadcast/content",
916
+ "id": "/broadcast/artist/content",
917
+ "master_property": "/broadcast/content/artist",
918
+ "name": "Content",
919
+ "reverse_property": null,
920
+ "unique": null
921
+ }]
922
+ },
923
+ {
924
+ "id": "/award/award_winner",
925
+ "name": "Award Winner",
926
+ "properties": [{
927
+ "expected_type": "/award/award_honor",
928
+ "id": "/award/award_winner/awards_won",
929
+ "master_property": "/award/award_honor/award_winner",
930
+ "name": "Awards Won",
931
+ "reverse_property": null,
932
+ "unique": null
933
+ }]
934
+ }
935
+ ],
936
+ "name": "The Police"
940
937
  }