1 <?php |
1 <?php |
2 |
2 |
3 namespace CorpusParole\Http\Controllers\Api; |
3 namespace CorpusParole\Http\Controllers\Api; |
4 |
4 |
5 // use Illuminate\Http\Request; |
5 use Illuminate\Http\Request; |
6 // use CorpusParole\Http\Requests; |
|
7 use CorpusParole\Http\Controllers\Controller; |
6 use CorpusParole\Http\Controllers\Controller; |
8 |
7 |
9 use CorpusParole\Libraries\Sparql\SparqlClient; |
8 use Es; |
10 |
|
11 |
9 |
12 class LanguageController extends Controller |
10 class LanguageController extends Controller |
13 { |
11 { |
14 private $sparqlClient = null; |
|
15 |
|
16 public function __construct(SparqlClient $sparqlClient) { |
|
17 $this->sparqlClient = $sparqlClient; |
|
18 } |
|
19 |
|
20 /** |
12 /** |
21 * Display the specified resource. |
13 * Display the specified resource. |
22 * |
14 * |
23 * @return \Illuminate\Http\Response |
15 * @return \Illuminate\Http\Response |
24 */ |
16 */ |
25 public function index() |
17 public function index(Request $request) |
26 { |
18 { |
27 |
19 |
28 $query = "select ?lang (count(?lang) as ?count) where { |
20 $query = [ "match_all" => []]; |
29 ?s a <http://www.europeana.eu/schemas/edm/ProvidedCHO>. |
|
30 ?s <http://purl.org/dc/elements/1.1/language> ?lang |
|
31 } |
|
32 GROUP BY ?lang |
|
33 ORDER BY DESC(?count)"; |
|
34 |
21 |
35 $docs = $this->sparqlClient->query($query); |
22 $esQuery = [ |
|
23 'index' => env('ELASTICSEARCH_INDEX'), |
|
24 'body' => [ |
|
25 "size" => 0, |
|
26 "query" => $query, |
|
27 "aggs" => [ |
|
28 "languages" => [ |
|
29 "terms" => [ "field" => "language", "order" => [ "_count" => "desc" ], "size" => 0 ] |
|
30 ] |
|
31 ] |
|
32 ] |
|
33 ]; |
|
34 |
|
35 $esRes = Es::search($esQuery); |
36 |
36 |
37 $languages = []; |
37 $languages = []; |
38 foreach ($docs as $row) { |
38 |
39 $languages[$row->lang->getUri()] = $row->count->getValue(); |
39 foreach ($esRes['aggregations']['languages']['buckets'] as $b) { |
|
40 $languages[$b['key']] = $b['doc_count']; |
40 } |
41 } |
41 |
42 |
42 return response()->json(['languages' => $languages ]); |
43 return response()->json(['languages' => $languages ]); |
43 |
44 |
44 } |
45 } |