michael-ken 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  }