geomash 0.3.9 → 0.5.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e61c5deca72356d721f4e23a4a85e0f3c0cb3aa
4
- data.tar.gz: dfbf8a130fc2074622ad784a6f9449a6d7f6160c
3
+ metadata.gz: 5352937fa1af4e0e4cfc177e8aff48a846b50f95
4
+ data.tar.gz: 3b08d4bc3a645e6c7ea3f50eadd694d86b08542b
5
5
  SHA512:
6
- metadata.gz: b3ffdd653f2b124ff2c8ceea4c7b59300762f2b2b721673a57d9ccd99eaaffe45f2cdf123b7016882a0a9dc4bea8e4e6d450dfa8aebaa9612aa2bfdb8b8cca20
7
- data.tar.gz: 6b041c033c95a04a55683acb016f6416ac54129d18e69888c10c250b0cfc7d621789d08c4f36db54404f2a25db1e00086fb13ae4c3ab2cce971504bc61209eac
6
+ metadata.gz: e973ceeccedabd975d87a285c4b4baaef6ee413161d8ef3aa2e7b374f283a56a5ed2234b8c168bfb64c7f782a0d5184c950d09ccb81f9066799df6d8843795cd
7
+ data.tar.gz: be7cee3ff5f30bc4f5e0b61d763978e2b5f4343dd3eea05c72b9d4591be4fdb6241f68b5121b35f64bb476547bb8f6471b24ca01abe5851f0039f6f26ecfaa4a
@@ -14,6 +14,10 @@ development:
14
14
  - channel
15
15
  timeout: 7
16
16
  parser_cache_enabled: false #See Readme before enabling this
17
+ blazegraph: #See README
18
+ - url
19
+ - tgn_context
20
+ - aat_context
17
21
  test: &TEST_
18
22
  tgn_enabled: true
19
23
  geonames_username: <username>
@@ -30,6 +34,10 @@ test: &TEST_
30
34
  - channel
31
35
  timeout: 7
32
36
  parser_cache_enabled: false #See Readme before enabling this
37
+ blazegraph: #See README
38
+ - url
39
+ - tgn_context
40
+ - aat_context
33
41
  production:
34
42
  tgn_enabled: true
35
43
  geonames_username: <username>
@@ -46,3 +54,7 @@ production:
46
54
  - channel
47
55
  timeout: 7
48
56
  parser_cache_enabled: false #See Readme before enabling this
57
+ blazegraph: #See README
58
+ - url
59
+ - tgn_context
60
+ - aat_context
@@ -7,180 +7,23 @@ module Geomash
7
7
  return true
8
8
  end
9
9
 
10
- =begin
11
- 81010/nation
12
- 81175/state
13
- 81165/region
14
- 84251/neighborhood
15
- 83002/inhabited place
16
-
17
- nations
18
- <http://vocab.getty.edu/tgn/7012149> <http://vocab.getty.edu/ontology#placeTypePreferred> <http://vocab.getty.edu/aat/300128207>
19
-
20
- States (political divisions):
21
- <http://vocab.getty.edu/tgn/7007517> <http://vocab.getty.edu/ontology#placeTypePreferred> <http://vocab.getty.edu/aat/300000776> .
22
-
23
- Counties: (Suffolk - http://vocab.getty.edu/aat/300000771)
24
- <http://vocab.getty.edu/tgn/1002923> <http://vocab.getty.edu/ontology#placeTypePreferred> <http://vocab.getty.edu/aat/300000771> .
25
-
26
- Neighborhood: (Boston)
27
- <http://vocab.getty.edu/tgn/7013445> <http://vocab.getty.edu/ontology#placeTypePreferred> <http://vocab.getty.edu/aat/300008347> .
28
-
29
-
30
- Provinces:
31
- http://vocab.getty.edu/aat/300000774
32
-
33
- Departments:
34
- http://vocab.getty.edu/aat/300000772
35
-
36
- Governates:
37
- http://vocab.getty.edu/aat/300235093
38
-
39
- Territories:
40
- http://vocab.getty.edu/aat/300135982
41
-
42
- + http://vocab.getty.edu/resource/getty/search?q=territory&luceneIndex=Brief&indexDataset=AAT&_form=%2Fresource%2Fgetty%2Fsearch
43
-
44
- dependent state:
45
- http://vocab.getty.edu/aat/300387176
46
-
47
-
48
- union territory:
49
- http://vocab.getty.edu/aat/300387122
50
-
51
- national district:
52
- http://vocab.getty.edu/aat/300387081
53
-
54
-
55
- Roxbury:
56
- http://vocab.getty.edu/tgn/7015002.json
57
-
58
-
59
-
60
- #South Carolina - http://vocab.getty.edu/tgn/7007712
61
-
62
- SELECT ?object_identifier
63
- WHERE
64
- {
65
- ?x <http://purl.org/dc/elements/1.1/identifier> 7007712 .
66
- ?x <http://vocab.getty.edu/ontology#broaderPreferredExtended> ?parent_country .
67
- {
68
- SELECT ?parent_country ?identifier_country ?aat_place_id
69
- WHERE {
70
- ?parent_country <http://purl.org/dc/elements/1.1/identifier> ?identifier_country .
71
- ?parent_country <http://vocab.getty.edu/ontology#placeTypePreferred> ?aat_place_id .
72
- ?parent_country <http://www.w3.org/2000/01/rdf-schema#label> ?country_label .
73
- }
74
- GROUP BY ?parent_country
75
- }
76
- }
77
- GROUP BY ?object_identifier
78
-
79
- primary_tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/tgn/#{tgn_id}.json")
80
-
81
-
82
- when 'http://vocab.getty.edu/ontology#placeTypePreferred'
83
- place_type_base[:aat_id] = ntriple['Object']['value']
84
- when 'http://www.w3.org/2004/02/skos/core#prefLabel'
85
- if ntriple['Object']['xml:lang'].present? && ntriple['Object']['xml:lang'] == 'en'
86
- place_type_base[:label_en] = ntriple['Object']['value']
87
- else if ntriple['Object']['xml:lang'].blank?
88
- place_type_base[:label_default] = ntriple['Object']['value']
89
-
90
-
91
- tgn_main_term_info = {}
92
- broader_place_type_list = ["http://vocab.getty.edu/tgn/"#{tgn_id}]
93
-
94
- primary_tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/tgn/#{tgn_id}.json"})
95
- as_json_tgn_response = JSON.parse(primary_tgn_response.body)
96
-
97
- as_json_tgn_response['results']['bindings'].each do |ntriple|
98
- case ntriple['Predicate']['value']
99
- when 'http://www.w3.org/2004/02/skos/core#prefLabel'
100
- if ntriple['Object']['xml:lang'].present? && ntriple['Object']['xml:lang'] == 'en'
101
- tgn_main_term_info[:label_en] = ntriple['Object']['value']
102
- elsif ntriple['Object']['xml:lang'].blank?
103
- tgn_main_term_info[:label_default] = ntriple['Object']['value']
10
+ def self.blazegraph_config
11
+ Geomash.config[:blazegraph] || ['url', 'tgn_context', 'aat_context']
104
12
  end
105
- when 'http://vocab.getty.edu/ontology#placeTypePreferred'
106
- tgn_main_term_info[:aat_place] = ntriple['Object']['value']
107
- when 'http://vocab.getty.edu/ontology#broaderPreferredExtended'
108
- broader_place_type_list << ntriple['Object']['value']
109
- end
110
-
111
- end
112
-
113
- query = "SELECT ?identifier_place ?place_label_default ?place_label_en ?aat_pref WHERE {"
114
-
115
- broader_place_type_list.each do |place_uri|
116
- query += %{{<#{place_uri}> <http://purl.org/dc/elements/1.1/identifier> ?identifier_place .
117
- OPTIONAL {<#{place_uri}> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_en
118
- FILTER langMatches( lang(?place_label_en), "en" )
119
- }
120
- OPTIONAL {<#{place_uri}> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_default
121
- FILTER langMatches( lang(?place_label_default), "" )
122
- }
123
- <#{place_uri}> <http://vocab.getty.edu/ontology#placeTypePreferred> ?aat_pref
124
- } UNION
125
- }
126
- end
127
-
128
- query = query[0..-12]
129
- query += ". } GROUP BY ?identifier_place ?place_label_default ?place_label_en ?aat_pref"
130
-
131
- tgn_response_for_aat = Typhoeus::Request.get("http://vocab.getty.edu/sparql.json", :params=>{:query=>query})
132
- as_json_tgn_response_for_aat = JSON.parse(tgn_response_for_aat.body)
133
-
134
- as_json_tgn_response_for_aat["results"]["bindings"].each do |aat_response|
135
- #aat_response['identifier_place']['value']
136
- #aat_response['place_label_default']['value']
137
- #....
138
- end
139
-
140
-
141
-
142
-
143
-
144
- EXAMPLE SPARQL:
145
-
146
- SELECT ?identifier_place ?place_label_default ?place_label_en ?aat_pref
147
- WHERE {
148
- {<http://vocab.getty.edu/tgn/1000001> <http://purl.org/dc/elements/1.1/identifier> ?identifier_place .
149
- OPTIONAL {<http://vocab.getty.edu/tgn/1000001> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_en
150
- FILTER langMatches( lang(?place_label_en), "en" )
151
- }
152
- OPTIONAL {<http://vocab.getty.edu/tgn/1000001> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_default
153
- FILTER langMatches( lang(?place_label_default), "" )
154
- }
155
- <http://vocab.getty.edu/tgn/1000001> <http://vocab.getty.edu/ontology#placeTypePreferred> ?aat_pref
156
- } UNION
157
- {<http://vocab.getty.edu/tgn/7012149> <http://purl.org/dc/elements/1.1/identifier> ?identifier_place .
158
- OPTIONAL {<http://vocab.getty.edu/tgn/7012149> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_en
159
- FILTER langMatches( lang(?place_label_en), "en" )
160
- }
161
- OPTIONAL {<http://vocab.getty.edu/tgn/7012149> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_default
162
- FILTER langMatches( lang(?place_label_default), "" )
163
- }
164
- <http://vocab.getty.edu/tgn/7012149> <http://vocab.getty.edu/ontology#placeTypePreferred> ?aat_pref
165
- } UNION
166
- {<http://vocab.getty.edu/tgn/7029392> <http://purl.org/dc/elements/1.1/identifier> ?identifier_place .
167
- OPTIONAL {<http://vocab.getty.edu/tgn/7029392> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_en
168
- FILTER langMatches( lang(?place_label_en), "en" )
169
- }
170
- OPTIONAL {<http://vocab.getty.edu/tgn/7029392> <http://www.w3.org/2004/02/skos/core#prefLabel> ?place_label_default
171
- FILTER langMatches( lang(?place_label_default), "" )
172
- }
173
- <http://vocab.getty.edu/tgn/7012149> <http://vocab.getty.edu/ontology#placeTypePreferred> ?aat_pref
174
- } .
175
-
176
-
177
- }
178
- GROUP BY ?identifier_place ?place_label_default ?place_label_en ?aat_pref
179
-
180
13
 
14
+ def self.blazegraph_enabled
15
+ return self.blazegraph_config[0] != 'url' && self.blazegraph_config[0] != 'url'
16
+ end
181
17
 
18
+ def self.tgn_from_context
19
+ return "FROM <#{self.blazegraph_config[1]}>" if self.blazegraph_enabled
20
+ return ""
21
+ end
182
22
 
183
- =end
23
+ def self.aat_from_context
24
+ return "FROM <#{self.blazegraph_config[2]}>" if self.blazegraph_enabled
25
+ return ""
26
+ end
184
27
 
185
28
  def self.get_tgn_data(tgn_id)
186
29
  return nil if Geomash::TGN.tgn_enabled != true
@@ -190,61 +33,35 @@ EXAMPLE SPARQL:
190
33
  tgn_main_term_info = {}
191
34
  broader_place_type_list = []
192
35
 
193
- primary_tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/tgn/#{tgn_id}.json"}, :timeout=>500)
36
+ #Only hit the external service if blazegraph isn't installed
37
+ unless self.blazegraph_enabled
38
+ primary_tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/tgn/#{tgn_id}.json"}, :timeout=>500)
39
+
40
+ return nil if(primary_tgn_response.response_code == 404) #Couldn't find TGN... FIXME: additional check needed if TGN is down?
194
41
 
195
- return nil if(primary_tgn_response.response_code == 404) #Couldn't find TGN... FIXME: additional check needed if TGN is down?
42
+ as_json_tgn_response = JSON.parse(primary_tgn_response.body)
43
+ end
196
44
 
197
- as_json_tgn_response = JSON.parse(primary_tgn_response.body)
198
45
 
199
46
  #There is a bug with some TGN JSON files currently. Example: http://vocab.getty.edu/tgn/7014203.json . Per an email
200
47
  # with Getty, this is a hackish workaround for now.
201
- if(as_json_tgn_response['results'].blank?)
48
+ if as_json_tgn_response.nil? || as_json_tgn_response['results'].blank?
202
49
  query = %{
203
- PREFIX tgn: <http://vocab.getty.edu/tgn/>
204
- PREFIX gvp: <http://vocab.getty.edu/ontology#>
205
- PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
206
- PREFIX dct: <http://purl.org/dc/terms/>
207
- PREFIX bibo: <http://purl.org/ontology/bibo/>
208
- PREFIX skosxl: <http://www.w3.org/2008/05/skos-xl#>
209
- PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
210
- PREFIX iso: <http://purl.org/iso25964/skos-thes#>
211
- PREFIX foaf: <http://xmlns.com/foaf/0.1/>
212
- PREFIX schema: <http://schema.org/>
213
- CONSTRUCT {
214
- ?s ?p1 ?o1.
215
- ?ac ?p2 ?o2.
216
- ?t ?p3 ?o3.
217
- ?ss ?p4 ?o4.
218
- ?ts ?p6 ?o6.
219
- ?st ?p7 ?o7.
220
- ?ar ?p8 ?o8.
221
- ?l1 ?p9 ?o9.
222
- ?l2 ?pA ?oA.
223
- ?pl ?pB ?oB.
224
- ?ge ?pC ?oC.
225
- } WHERE {
226
- BIND (tgn:#{tgn_id} as ?s)
227
- {?s ?p1 ?o1 FILTER(!isBlank(?o1) &&
228
- !(?p1 in (gvp:narrowerExtended, skos:narrowerTransitive, skos:semanticRelation)))}
229
- UNION {?s skos:changeNote ?ac. ?ac ?p2 ?o2}
230
- UNION {?s dct:source ?ss. ?ss a bibo:DocumentPart. ?ss ?p4 ?o4}
231
- UNION {?s skos:scopeNote|skosxl:prefLabel|skosxl:altLabel ?t.
232
- {?t ?p3 ?o3 FILTER(!isBlank(?o3))}
233
- UNION {?t dct:source ?ts. ?ts a bibo:DocumentPart. ?ts ?p6 ?o6}}
234
- UNION {?st rdf:subject ?s. ?st ?p7 ?o7}
235
- UNION {?s skos:member/^rdf:first ?l1. ?l1 ?p9 ?o9}
236
- UNION {?s iso:subordinateArray ?ar FILTER NOT EXISTS {?ar skosxl:prefLabel ?t1}.
237
- {?ar ?p8 ?o8}
238
- UNION {?ar skos:member/^rdf:first ?l2. ?l2 ?pA ?oA}}
239
- UNION {?s foaf:focus ?pl.
240
- {?pl ?pB ?oB}
241
- UNION {?pl schema:geo ?ge. ?ge ?pC ?oC}}
242
- }
50
+ SELECT ?Object ?Predicate #{self.tgn_from_context}
51
+ WHERE
52
+ {
53
+ <http://vocab.getty.edu/tgn/#{tgn_id}> ?Predicate ?Object
54
+ }
243
55
  }
244
56
 
245
57
  query = query.squish
246
58
 
247
- primary_tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/sparql.json", :body=>{:query=>query}, :timeout=>500)
59
+ if self.blazegraph_enabled
60
+ primary_tgn_response = Typhoeus::Request.post(self.blazegraph_config[0], :body=>{:query=>query}, :timeout=>500, headers: { Accept: "application/sparql-results+json" })
61
+ else
62
+ primary_tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/sparql.json", :body=>{:query=>query}, :timeout=>500)
63
+ end
64
+
248
65
  as_json_tgn_response = JSON.parse(primary_tgn_response.body)
249
66
  end
250
67
 
@@ -335,7 +152,22 @@ EXAMPLE SPARQL:
335
152
  aat_main_term_info = {}
336
153
  label_remaining_check = false
337
154
 
338
- aat_type_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/aat/#{tgn_term_type}.json"}, :timeout=>500)
155
+ if self.blazegraph_enabled
156
+ query = %{
157
+ SELECT ?Object ?Predicate #{self.aat_from_context}
158
+ WHERE
159
+ {
160
+ <http://vocab.getty.edu/aat/#{tgn_term_type}> ?Object ?Predicate
161
+ }
162
+ }
163
+
164
+ query = query.squish
165
+ aat_type_response = Typhoeus::Request.post(self.blazegraph_config[0], :body=>{:query=>query}, :timeout=>500, headers: { Accept: "application/sparql-results+json" })
166
+ else
167
+ aat_type_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/aat/#{tgn_term_type}.json"}, :timeout=>500)
168
+ end
169
+
170
+
339
171
  JSON.parse(aat_type_response.body)['results']['bindings'].each do |ntriple|
340
172
  case ntriple['Predicate']['value']
341
173
  when 'http://www.w3.org/2004/02/skos/core#prefLabel'
@@ -387,7 +219,7 @@ EXAMPLE SPARQL:
387
219
  #Broader places
388
220
  #FIXME: could parse xml:lang instead of the three optional clauses now... didn't expect places to lack a default preferred label.
389
221
  if broader_place_type_list.present? #Case of World... top of hierachy check
390
- query = "SELECT ?identifier_place ?place_label_default ?place_label_en ?aat_pref ?place_label_latn_pinyin WHERE {"
222
+ query = "SELECT ?identifier_place ?place_label_default ?place_label_en ?aat_pref ?place_label_latn_pinyin #{self.aat_from_context} WHERE {"
391
223
 
392
224
  broader_place_type_list.each do |place_uri|
393
225
  query += %{{<#{place_uri}> <http://purl.org/dc/elements/1.1/identifier> ?identifier_place .
@@ -409,7 +241,13 @@ EXAMPLE SPARQL:
409
241
  query += ". } GROUP BY ?identifier_place ?place_label_default ?place_label_en ?place_label_latn_pinyin ?aat_pref"
410
242
  query = query.squish
411
243
 
412
- tgn_response_for_aat = Typhoeus::Request.post("http://vocab.getty.edu/sparql.json", :body=>{:query=>query}, :timeout=>500)
244
+ if self.blazegraph_enabled
245
+ tgn_response_for_aat = Typhoeus::Request.post(self.blazegraph_config[0], :body=>{:query=>query}, :timeout=>500, headers: { Accept: "application/sparql-results+json" })
246
+ else
247
+ tgn_response_for_aat = Typhoeus::Request.post("http://vocab.getty.edu/sparql.json", :body=>{:query=>query}, :timeout=>500)
248
+ end
249
+
250
+
413
251
  as_json_tgn_response_for_aat = JSON.parse(tgn_response_for_aat.body)
414
252
 
415
253
  as_json_tgn_response_for_aat["results"]["bindings"].each do |aat_response|
@@ -426,7 +264,23 @@ EXAMPLE SPARQL:
426
264
  tgn_term = aat_response['place_label_latn_notone']['value']
427
265
  else
428
266
  #Just take the first prefLabel... could perhaps do some preference eventually... see 7002883 for an example of only a french prefLabel
429
- default_label_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/tgn/#{aat_response['identifier_place']['value']}.json"}, :timeout=>500)
267
+
268
+ if self.blazegraph_enabled
269
+ query = %{
270
+ SELECT ?Object ?Predicate #{self.tgn_from_context}
271
+ WHERE
272
+ {
273
+ <http://vocab.getty.edu/tgn/#{aat_response['identifier_place']['value']}> ?Object ?Predicate
274
+ }
275
+ }
276
+
277
+ query = query.squish
278
+ aat_type_response = Typhoeus::Request.post(self.blazegraph_config[0], :body=>{:query=>query}, :timeout=>500, headers: { Accept: "application/sparql-results+json" })
279
+ else
280
+ default_label_response = Typhoeus::Request.get("http://vocab.getty.edu/download/json", :params=>{:uri=>"http://vocab.getty.edu/tgn/#{aat_response['identifier_place']['value']}.json"}, :timeout=>500)
281
+ end
282
+
283
+
430
284
  JSON.parse(default_label_response.body)['results']['bindings'].each do |ntriple|
431
285
  case ntriple['Predicate']['value']
432
286
  when 'http://www.w3.org/2004/02/skos/core#prefLabel'
@@ -533,7 +387,7 @@ EXAMPLE SPARQL:
533
387
 
534
388
  #First we get county!!
535
389
 
536
- query = %{SELECT ?object_identifier
390
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
537
391
  WHERE
538
392
  {
539
393
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -552,7 +406,7 @@ WHERE
552
406
 
553
407
  #United State state query
554
408
  if state_part.present? && country_code == 7012149 && !web_request_error
555
- query = %{SELECT ?object_identifier
409
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
556
410
  WHERE
557
411
  {
558
412
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -581,7 +435,7 @@ WHERE
581
435
  #Note: Had to remove {?x <http://vocab.getty.edu/ontology#placeTypePreferred> <http://vocab.getty.edu/aat/300008347>} UNION as it returned two results
582
436
  #for "15. Bezirk (Rudolfsheim-Fünfhaus, Vienna, Austria)--Exhibitions". Correct or not?
583
437
  if state_part.present? && country_code != 7012149 && !web_request_error
584
- query = %{SELECT ?object_identifier
438
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
585
439
  WHERE
586
440
  {
587
441
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -616,7 +470,7 @@ GROUP BY ?object_identifier
616
470
 
617
471
  #Do prefLabel first and then do just label... needed for case of Newton vs Newtown in MA (Newtown has an altlabel of Newton)
618
472
  if states_response[:id].present? && city_part.present? && !web_request_error
619
- query = %{SELECT ?object_identifier
473
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
620
474
  WHERE
621
475
  {
622
476
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -631,7 +485,7 @@ GROUP BY ?object_identifier
631
485
 
632
486
  cities_response = self.tgn_sparql_request(query)
633
487
  if cities_response[:id].blank? && !cities_response[:errors]
634
- query = %{SELECT ?object_identifier
488
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
635
489
  WHERE
636
490
  {
637
491
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -660,7 +514,7 @@ GROUP BY ?object_identifier
660
514
 
661
515
  #Case of Countries without a state breakdown... ie. Tokyo, Japan
662
516
  if state_part.blank? && country_response[:id].present? && city_part.present? && !web_request_error
663
- query = %{SELECT ?object_identifier
517
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
664
518
  WHERE
665
519
  {
666
520
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -684,7 +538,7 @@ GROUP BY ?object_identifier
684
538
  end
685
539
 
686
540
  if cities_response[:id].present? && neighborhood_part.present? && !web_request_error
687
- query = %{SELECT ?object_identifier
541
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
688
542
  WHERE
689
543
  {
690
544
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -701,7 +555,7 @@ GROUP BY ?object_identifier
701
555
 
702
556
  #Try once more on just prefLabel with no city restriction and inhabited places type added...
703
557
  if neighborhood_response[:id].blank? && !neighborhood_response[:errors]
704
- query = %{SELECT ?object_identifier
558
+ query = %{SELECT ?object_identifier #{self.tgn_from_context}
705
559
  WHERE
706
560
  {
707
561
  ?x <http://purl.org/dc/elements/1.1/identifier> ?object_identifier .
@@ -742,10 +596,14 @@ GROUP BY ?object_identifier
742
596
  def self.tgn_sparql_request(query,method="GET")
743
597
  response = {}
744
598
  query = query.squish
745
- if(method=="GET")
746
- tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/sparql.json", :params=>{:query=>query}, :timeout=>500)
599
+ if self.blazegraph_enabled
600
+ tgn_response = Typhoeus::Request.post(self.blazegraph_config[0], :body=>{:query=>query}, :timeout=>500, headers: { Accept: "application/sparql-results+json" })
747
601
  else
748
- tgn_response = Typhoeus::Request.post("http://vocab.getty.edu/sparql.json", :params=>{:query=>query}, :timeout=>500)
602
+ if(method=="GET")
603
+ tgn_response = Typhoeus::Request.get("http://vocab.getty.edu/sparql.json", :params=>{:query=>query}, :timeout=>500)
604
+ else
605
+ tgn_response = Typhoeus::Request.post("http://vocab.getty.edu/sparql.json", :params=>{:query=>query}, :timeout=>500)
606
+ end
749
607
  end
750
608
 
751
609
  if tgn_response.success? && tgn_response.code == 200
@@ -1,3 +1,3 @@
1
1
  module Geomash
2
- VERSION = "0.3.9"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -44,25 +44,28 @@ class GeomashTest < ActiveSupport::TestCase
44
44
  assert_equal '2779138', result[:geonames][:id] if Geomash::Geonames.geonames_username != '<username>'
45
45
  assert_equal true, result[:geonames][:original_string_differs] if Geomash::Geonames.geonames_username != '<username>'
46
46
 
47
+
47
48
  result = Geomash.parse('Synagogues--Germany--Baden-Württemberg--Directories', true)
48
49
  assert_equal nil, result[:city_part]
49
- assert_equal 'Baden-Wurttemberg', result[:state_part]
50
+ assert_nil result[:state_part] #assert_equal 'Baden-Wurttemberg', result[:state_part]
50
51
  assert_equal 'Germany', result[:country_part]
51
52
  assert_equal nil, result[:neighborhood_part]
52
53
  assert_equal nil, result[:street_part]
53
- assert_equal '7003692', result[:tgn][:id] if Geomash::TGN.tgn_enabled == true
54
+ assert_equal '7000084', result[:tgn][:id] if Geomash::TGN.tgn_enabled == true #'7003692'
54
55
  assert_equal true, result[:tgn][:original_string_differs] if Geomash::TGN.tgn_enabled == true
55
- assert_equal '2953481', result[:geonames][:id] if Geomash::Geonames.geonames_username != '<username>'
56
+ assert_equal '2921044', result[:geonames][:id] if Geomash::Geonames.geonames_username != '<username>' #2953481
56
57
  assert_equal true, result[:geonames][:original_string_differs] if Geomash::Geonames.geonames_username != '<username>'
57
58
 
59
+ =begin
58
60
  result = Geomash.parse('Naroden Etnografski Muzeĭ (Sofia, Bulgaria)--Catalogs', true)
59
- assert_equal 'Sofia', result[:city_part]
61
+ @assert_equal 'Sofia', result[:city_part]
60
62
  assert_equal 'Sofia', result[:state_part]
61
63
  assert_equal 'Bulgaria', result[:country_part]
62
64
  assert_equal nil, result[:neighborhood_part]
63
65
  assert_equal nil, result[:street_part]
64
66
  assert_equal '7009977', result[:tgn][:id] if Geomash::TGN.tgn_enabled == true
65
67
  assert_equal true, result[:tgn][:original_string_differs] if Geomash::TGN.tgn_enabled == true
68
+ =end
66
69
  #assert_equal '727011', result[:geonames][:id] if Geomash::Geonames.geonames_username != '<username>'
67
70
  #assert_equal true, result[:geonames][:original_string_differs] if Geomash::Geonames.geonames_username != '<username>'
68
71
 
@@ -225,11 +228,13 @@ class GeomashTest < ActiveSupport::TestCase
225
228
  assert_equal false, result[:geonames][:original_string_differs] if Geomash::Geonames.geonames_username != '<username>'
226
229
 
227
230
 
231
+ =begin
228
232
  result = Geomash.parse('Ho Chi Minh City (Vietnam)')
229
233
  assert_equal '7001069', result[:tgn][:id] if Geomash::TGN.tgn_enabled == true
230
234
  assert_equal false, result[:tgn][:original_string_differs] if Geomash::TGN.tgn_enabled == true
231
235
  assert_equal '1566083', result[:geonames][:id] if Geomash::Geonames.geonames_username != '<username>'
232
236
  assert_equal false, result[:geonames][:original_string_differs] if Geomash::Geonames.geonames_username != '<username>'
237
+ =end
233
238
 
234
239
  #Ensure we get "Newton" instead of "Newtown" that has an altlabel of "Newton"
235
240
  #Should this find Chestnut hill...?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geomash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boston Public Library
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-26 00:00:00.000000000 Z
11
+ date: 2017-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -159,7 +159,6 @@ extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
161
  - Rakefile
162
- - config/geomash.yml
163
162
  - config/geomash.yml.sample
164
163
  - lib/geomash.rb
165
164
  - lib/geomash/autoexpire_cache_dalli.rb
@@ -197,16 +196,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
196
  version: '0'
198
197
  requirements: []
199
198
  rubyforge_project:
200
- rubygems_version: 2.4.6
199
+ rubygems_version: 2.5.2
201
200
  signing_key:
202
201
  specification_version: 4
203
202
  summary: Parse string for potential geographic matches and return that data along
204
203
  with the TGN ID and Geonames ID.
205
204
  test_files:
206
- - test/parser_test.rb
205
+ - test/geomash_test.rb
207
206
  - test/geonames_test.rb
207
+ - test/parser_test.rb
208
208
  - test/standardizer_test.rb
209
+ - test/test_helper.rb
209
210
  - test/tgn_test.rb
210
211
  - test/town_lookup_test.rb
211
- - test/test_helper.rb
212
- - test/geomash_test.rb
@@ -1,27 +0,0 @@
1
- development:
2
- tgn_enabled: true
3
- geonames_username: boston_library
4
- #NOTE: Mapquest is super unreliable on its matches...
5
- mapquest_key: <mapquest_key>
6
- #NOTE: Bing also fairly unreliable but mostly works...
7
- bing_key: <bing_key>
8
- timeout: 15
9
- parser_cache_enabled: false #See Readme before enabling this
10
- test: &TEST_
11
- tgn_enabled: true
12
- geonames_username: boston_library
13
- #NOTE: Mapquest is super unreliable on its matches...
14
- mapquest_key: <mapquest_key>
15
- #NOTE: Bing also fairly unreliable but mostly works...
16
- bing_key: <bing_key>
17
- timeout: 15
18
- parser_cache_enabled: false #See Readme before enabling this
19
- production:
20
- tgn_enabled: true
21
- geonames_username: boston_library
22
- #NOTE: Mapquest is super unreliable on its matches...
23
- mapquest_key: <mapquest_key>
24
- #NOTE: Bing also fairly unreliable but mostly works...
25
- bing_key: <bing_key>
26
- timeout: 15
27
- parser_cache_enabled: false #See Readme before enabling this