server/src/app/Http/Controllers/Api/DiscourseController.php
author ymh <ymh.work@gmail.com>
Fri, 14 Oct 2016 01:02:10 +0200
changeset 329 0a2c2ad49d75
parent 307 07b44a378ad8
child 377 52169c718513
permissions -rw-r--r--
Improvce language visualization. Generalize language node selection, change language query parameters, add resolution of node name (corpus-) to lexvo controler

<?php

namespace CorpusParole\Http\Controllers\Api;

// use CorpusParole\Http\Requests;
use CorpusParole\Http\Controllers\Controller;

use Illuminate\Http\Request;
use EasyRdf\Resource;
use EasyRdf\Literal;

use CorpusParole\Libraries\Sparql\SparqlClient;
use CorpusParole\Services\LexvoResolverInterface;
use CorpusParole\Services\BnfResolverInterface;


class DiscourseController extends Controller
{
    private $sparqlClient = null;

    public function __construct(SparqlClient $sparqlClient) {
        $this->sparqlClient = $sparqlClient;
    }

    /**
     * Display the specified resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {

        $query =  preg_replace('/\s+/', ' ', "SELECT (?o AS ?res) (COUNT(?s) AS ?count) WHERE {
            ?s a <http://www.europeana.eu/schemas/edm/ProvidedCHO>.
            ?s <http://purl.org/dc/elements/1.1/type> ?o.
            FILTER(uri(?o) in (<".implode('>,<', array_keys(config('corpusparole.corpus_discourse_type'))).">))
        }
        GROUP BY ?o
        ORDER BY DESC(?count)");

        $docs = $this->sparqlClient->query($query);

        $discourses = [];

        foreach ($docs as $row) {
            $key = $row->res->getUri();
            $count = $row->count->getValue();
            $label = config('corpusparole.corpus_discourse_type')[$key];
            $discourses[$key] = [
                "label" => $label,
                "count" => $count
            ];
        }

        return response()->json(['discourses' => $discourses ]);

    }

}