# HG changeset patch # User ymh # Date 1476893151 -7200 # Node ID 0365fd9977a41e8a23c2525fcdc9671d8936a7f4 # Parent d7c5b43d309a4324b01f3ddcd32c914f6001c7fc Discourse types are now bnf ark resources diff -r d7c5b43d309a -r 0365fd9977a4 server/src/app/Models/Document.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(); diff -r d7c5b43d309a -r 0365fd9977a4 server/src/tests/Models/DocumentTest.php --- 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"); diff -r d7c5b43d309a -r 0365fd9977a4 server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php --- 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() {