server/src/app/Http/Controllers/Api/DiscourseController.php
changeset 160 c77f06ff3e54
child 307 07b44a378ad8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/server/src/app/Http/Controllers/Api/DiscourseController.php	Sun May 08 14:21:22 2016 +0200
@@ -0,0 +1,60 @@
+<?php
+
+namespace CorpusParole\Http\Controllers\Api;
+
+// use Illuminate\Http\Request;
+// 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 ]);
+
+    }
+
+}