Discourse types are now bnf ark resources
authorymh <ymh.work@gmail.com>
Wed, 19 Oct 2016 18:05:51 +0200
changeset 371 0365fd9977a4
parent 370 d7c5b43d309a
child 372 796ebdbf6a25
Discourse types are now bnf ark resources
server/src/app/Models/Document.php
server/src/tests/Models/DocumentTest.php
server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php
--- a/server/src/app/Models/Document.php	Wed Oct 19 15:55:04 2016 +0200
+++ b/server/src/app/Models/Document.php	Wed Oct 19 18:05:51 2016 +0200
@@ -100,13 +100,13 @@
 
     public function getDiscourseTypes() {
         return array_values(array_filter($this->getTypes(), function($v) {
-            return $v instanceof Literal && $v->getDatatypeUri() === Config::get('corpusparole.olac_discourse_type')['uri'];
+            return $v instanceof Resource && preg_match(config('corpusparole.bnf_ark_url_regexp'), $v->getUri());
         }));
     }
 
     public function getOtherTypes() {
         $res = array_values(array_filter($this->getTypes(), function($v) {
-            return $v instanceof Resource || $v->getDatatypeUri() !== Config::get('corpusparole.olac_discourse_type')['uri'];
+            return !($v instanceof Resource) || !preg_match(config('corpusparole.bnf_ark_url_regexp'), $v->getUri());
         }));
         return $res;
     }
@@ -190,15 +190,14 @@
 
         //delete
         foreach($this->getDiscourseTypes() as $discourseType) {
-            $literalValue = new Literal($discourseType, null, Config::get('corpusparole.olac_discourse_type')['uri']);
-            $this->getProvidedCHO()->delete('dc11:type', $literalValue);
-            $this->currentDelta->getDeletedGraph()->add($this->getProvidedCHO(), 'dc11:type', new Literal($discourseType, null, Config::get('corpusparole.olac_discourse_type')['uri']));
+            $this->getProvidedCHO()->delete('dc11:type', $discourseType);
+            $this->currentDelta->getDeletedGraph()->addResource($this->getProvidedCHO(), 'dc11:type', $discourseType->getUri());
         }
 
         // and re-add them
         foreach($discoursesTypes as $dType) {
-            $this->getProvidedCHO()->add('dc11:type', new Literal($dType, null, Config::get('corpusparole.olac_discourse_type')['uri']));
-            $this->currentDelta->getAddedGraph()->add($this->getProvidedCHO(), 'dc11:type', new Literal($dType, null, Config::get('corpusparole.olac_discourse_type')['uri']));
+            $this->getProvidedCHO()->addResource('dc11:type', $dType);
+            $this->currentDelta->getAddedGraph()->addResource($this->getProvidedCHO(), 'dc11:type', $dType);
         }
 
         $this->clearMemoizationCache();
--- a/server/src/tests/Models/DocumentTest.php	Wed Oct 19 15:55:04 2016 +0200
+++ b/server/src/tests/Models/DocumentTest.php	Wed Oct 19 18:05:51 2016 +0200
@@ -140,7 +140,7 @@
     public function testGetOtherTypes() {
         $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $this->inputGraphes['TEST']);
 
-        $this->assertCount(5, $doc->getOtherTypes(), "types array must be of size 5");
+        $this->assertCount(6, $doc->getOtherTypes(), "types array must be of size 5");
 
         foreach($doc->getTypes() as $type) {
             $this->assertThat(
@@ -156,12 +156,11 @@
     public function testGetDiscourseTypes() {
         $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $this->inputGraphes['TEST']);
 
-        $this->assertCount(3, $doc->getDiscourseTypes(), "types array must be of size 3");
+        $this->assertCount(2, $doc->getDiscourseTypes(), "types array must be of size 3");
 
-        $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $doc->getDiscourseTypes(), "Result contains only literals");
+        $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $doc->getDiscourseTypes(), "Result contains only Resources");
         $type = $doc->getDiscourseTypes()[0];
-        $this->assertEquals("narrative", $type->getValue(), "discourse type is narrative");
-        $this->assertEquals("http://www.language-archives.org/OLAC/1.1/discourse-type", $type->getDatatypeUri(), "discourse type url");
+        $this->assertEquals("http://ark.bnf.fr/ark:/12148/cb11932135w", $type->getUri(), "discourse type is cb11932135w");
     }
 
     public function testCloneDocument() {
@@ -188,14 +187,14 @@
 
     public function testUpdateDiscourseTypes() {
 
-        $newDiscourseTypes = ['oratory','dialogue','narrative', 'formulaic', 'ludic'];
+        $newDiscourseTypes = ["http://ark.bnf.fr/ark:/12148/cb11932135w" , "http://ark.bnf.fr/ark:/12148/cb13319048g", "http://ark.bnf.fr/ark:/12148/cb11949715t" , "http://ark.bnf.fr/ark:/12148/cb119783362"];
 
         $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $this->inputGraphes['TEST']);
-        $this->assertCount(3, $doc->getDiscourseTypes(), "types array must be of size 3");
+        $this->assertCount(2, $doc->getDiscourseTypes(), "types array must be of size 2");
 
         $doc->updateDiscourseTypes($newDiscourseTypes);
 
-        $this->assertCount(5, $doc->getDiscourseTypes(), "types array must be of size 5");
+        $this->assertCount(4, $doc->getDiscourseTypes(), "types array must be of size 4");
 
         $discourseTypes = $doc->getDiscourseTypes();
         foreach($newDiscourseTypes as $dt) {
@@ -206,7 +205,7 @@
 
     public function testUpdateDiscourseTypesDelta() {
 
-        $newDiscourseTypes = ['oratory','dialogue','narrative', 'formulaic', 'ludic'];
+        $newDiscourseTypes = ["http://ark.bnf.fr/ark:/12148/cb11932135w" , "http://ark.bnf.fr/ark:/12148/cb13319048g", "http://ark.bnf.fr/ark:/12148/cb11949715t" , "http://ark.bnf.fr/ark:/12148/cb119783362"];
 
         $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $this->inputGraphes['TEST']);
 
@@ -221,13 +220,13 @@
         $this->assertEquals(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $delta->getDeletedGraph()->getUri(), "uri of deleted graph must be ok");
         $this->assertEquals(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $delta->getAddedGraph()->getUri(), "uri of added graph must be ok");
 
-        $this->assertEquals(3, $delta->getDeletedGraph()->countTriples(), "deleted graph must have only 3 triples");
-        $this->assertEquals(5, $delta->getAddedGraph()->countTriples(), "deleted graph must have only 5 triples");
+        $this->assertEquals(2, $delta->getDeletedGraph()->countTriples(), "deleted graph must have only 2 triples");
+        $this->assertEquals(4, $delta->getAddedGraph()->countTriples(), "deleted graph must have only 4 triples");
 
-        $resQueryDiscourseType = $delta->getAddedGraph()->allLiterals($doc->getProvidedCHO(), 'dc11:type');
+        $resQueryDiscourseType = $delta->getAddedGraph()->allResources($doc->getProvidedCHO(), 'dc11:type');
         foreach($resQueryDiscourseType as $dt) {
-            $this->assertInstanceOf(EasyRdf\Literal::class, $dt, "This must be a litteral");
-            $this->assertEquals('http://www.language-archives.org/OLAC/1.1/discourse-type', $dt->getDatatypeUri(), "The type of the Litteral must be correct");
+            $this->assertInstanceOf(EasyRdf\Resource::class, $dt, "This must be a Resource");
+            $this->assertRegexp(config('corpusparole.bnf_ark_url_regexp'), $dt->getUri(), "The resource uri must be bnf ark");
         }
         foreach($newDiscourseTypes as $dt) {
             $this->assertContains($dt, $resQueryDiscourseType, "all discourse types must be in result list");
--- a/server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php	Wed Oct 19 15:55:04 2016 +0200
+++ b/server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php	Wed Oct 19 18:05:51 2016 +0200
@@ -210,7 +210,8 @@
     public function testSave() {
 
         $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-ALA_738", $this->graph);
-        $doc->updateDiscourseTypes(['oratory','drama','narrative']);
+        $updatedDiscourseTypes = ["http://ark.bnf.fr/ark:/12148/cb13319048g", "http://ark.bnf.fr/ark:/12148/cb11949715t" , "http://ark.bnf.fr/ark:/12148/cb119783362"];
+        $doc->updateDiscourseTypes($updatedDiscourseTypes);
 
         $res = $this->documentRepository->save($doc);
 
@@ -220,18 +221,19 @@
 
         $discoursesTypes = $res->getDiscourseTypes();
 
-        $this->assertCount(3, $discoursesTypes, "types array must be of size 1");
+        $this->assertCount(3, $discoursesTypes, "types array must be of size 3");
 
-        $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $discoursesTypes, "Result contains only literals");
+        $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $discoursesTypes, "Result contains only resources");
 
         $newDiscoursesTypes = [];
         foreach($discoursesTypes as $dt) {
-            array_push($newDiscoursesTypes, $dt->getValue());
-            $this->assertContains($dt->getValue(),['oratory','drama','narrative'],'Value in [oratory,drama,narrative]');
-            $this->assertEquals("http://www.language-archives.org/OLAC/1.1/discourse-type", $dt->getDatatypeUri(), "discourse type url");
+            array_push($newDiscoursesTypes, $dt->getUri());
+            $this->assertContains($dt->getUri(), $updatedDiscourseTypes,"Value in ".print_r($updatedDiscourseTypes, true));
         }
         sort($newDiscoursesTypes);
-        $this->assertEquals(['drama', 'narrative', 'oratory'], $newDiscoursesTypes, "array type must the same");
+        sort($updatedDiscourseTypes);
+
+        $this->assertEquals($updatedDiscourseTypes, $newDiscoursesTypes, "array type must the same");
     }
 
     public function testCount() {