server/src/app/Http/Controllers/Api/DiscourseController.php
changeset 160 c77f06ff3e54
child 307 07b44a378ad8
equal deleted inserted replaced
159:dd4ee1d4122c 160:c77f06ff3e54
       
     1 <?php
       
     2 
       
     3 namespace CorpusParole\Http\Controllers\Api;
       
     4 
       
     5 // use Illuminate\Http\Request;
       
     6 // use CorpusParole\Http\Requests;
       
     7 use CorpusParole\Http\Controllers\Controller;
       
     8 
       
     9 use Illuminate\Http\Request;
       
    10 use EasyRdf\Resource;
       
    11 use EasyRdf\Literal;
       
    12 
       
    13 use CorpusParole\Libraries\Sparql\SparqlClient;
       
    14 use CorpusParole\Services\LexvoResolverInterface;
       
    15 use CorpusParole\Services\BnfResolverInterface;
       
    16 
       
    17 
       
    18 class DiscourseController extends Controller
       
    19 {
       
    20     private $sparqlClient = null;
       
    21 
       
    22     public function __construct(SparqlClient $sparqlClient) {
       
    23         $this->sparqlClient = $sparqlClient;
       
    24     }
       
    25 
       
    26     /**
       
    27      * Display the specified resource.
       
    28      *
       
    29      * @return \Illuminate\Http\Response
       
    30      */
       
    31     public function index(Request $request)
       
    32     {
       
    33 
       
    34         $query =  preg_replace('/\s+/', ' ', "select (?o as ?res) (COUNT(?s) as ?count) where {
       
    35             ?s a <http://www.europeana.eu/schemas/edm/ProvidedCHO>.
       
    36             ?s <http://purl.org/dc/elements/1.1/type> ?o.
       
    37             filter(uri(?o) in (<".implode('>,<', array_keys(config('corpusparole.corpus_discourse_type'))).">))
       
    38         }
       
    39         GROUP BY ?o
       
    40         ORDER BY DESC(?count)");
       
    41 
       
    42         $docs = $this->sparqlClient->query($query);
       
    43 
       
    44         $discourses = [];
       
    45 
       
    46         foreach ($docs as $row) {
       
    47             $key = $row->res->getUri();
       
    48             $count = $row->count->getValue();
       
    49             $label = config('corpusparole.corpus_discourse_type')[$key];
       
    50             $discourses[$key] = [
       
    51                 "label" => $label,
       
    52                 "count" => $count
       
    53             ];
       
    54         }
       
    55 
       
    56         return response()->json(['discourses' => $discourses ]);
       
    57 
       
    58     }
       
    59 
       
    60 }