diff -r 95dfb40ff3d2 -r dd6b3adde73b server/src/tests/libraries/Mergers/CocoonTextRdfMergerTest.php --- a/server/src/tests/libraries/Mergers/CocoonTextRdfMergerTest.php Tue Apr 12 13:42:04 2016 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,452 +0,0 @@ - << . - @prefix edm: . - @prefix dc11: . - @prefix olac: . - @prefix dc: . - @prefix geo: . - @prefix xsd: . - @prefix skos: . - @prefix owl: . - - - a ore:Aggregation ; - edm:aggregatedCHO ; - edm:provider "Corpus de la Parole"@fr ; - edm:dataProvider "Laboratoire de langues et civilisations à tradition orale" ; - edm:isShownAt ; - edm:isShownBy ; - edm:rights ; - edm:hasView , . - - - a edm:ProvidedCHO ; - dc:identifier "crdo-UVE_MOCIKA_SOUND" ; - dc11:description "Voilà pourquoi le bernard-l'hermite, aujourd'hui, se cache dans les coquilles vides qu'il trouve, alors que le crabe de cocotier n'a pas honte de se promener tout nu."@fr ; - dc11:language ; - dc11:publisher "Laboratoire de langues et civilisations à tradition orale" ; - dc11:rights "Copyright (c) Moyse-Faurie, Claire" ; - dc11:type , "primary_text"^^olac:linguistic-type, "narrative"^^olac:discourse-type, ; - dc:license ; - dc11:subject , , ; - dc11:title "The two hermit crabs and the coconut crab"@en ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" ; - dc:extent "PT2M35S" ; - edm:isGatheredInto , ; - olac:depositor ; - dc11:contributor , "Idakote, Félicien" ; - olac:researcher ; - olac:speaker "Idakote, Félicien" ; - dc:available "2010-10-23"^^dc:W3CDTF ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:modified "2012-03-25"^^dc:W3CDTF ; - dc:spatial [ - a edm:Place ; - geo:lat "-20.46667"^^xsd:float ; - geo:long "166.65"^^xsd:float ; - skos:note "NC"^^dc:ISO3166, "New Caledonia, Ohnyat (Ouvéa)" ; - owl:sameAs - ] . - - - a edm:WebResource ; - dc:extent "PT2M35S" ; - dc11:format "audio/x-wav"^^dc:IMT ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - - - - a edm:WebResource ; - dc:extent "PT2M35S" ; - dc11:format "audio/x-wav"^^dc:IMT ; - edm:isDerivativeOf ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - - - - a edm:WebResource ; - dc:extent "PT2M35S" ; - dc11:format "audio/mpeg"^^dc:IMT ; - edm:isDerivativeOf ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - -EOT - , - 'SOUND_NO_MOD' => << . - @prefix edm: . - @prefix dc11: . - @prefix olac: . - @prefix dc: . - @prefix geo: . - @prefix xsd: . - @prefix skos: . - @prefix owl: . - - - a ore:Aggregation ; - edm:aggregatedCHO ; - edm:provider "Corpus de la Parole"@fr ; - edm:dataProvider "Laboratoire de langues et civilisations à tradition orale" ; - edm:isShownAt ; - edm:isShownBy ; - edm:rights ; - edm:hasView , . - - - a edm:ProvidedCHO ; - dc:identifier "crdo-UVE_MOCIKA_SOUND" ; - dc11:description "Voilà pourquoi le bernard-l'hermite, aujourd'hui, se cache dans les coquilles vides qu'il trouve, alors que le crabe de cocotier n'a pas honte de se promener tout nu."@fr ; - dc11:language ; - dc11:publisher "Laboratoire de langues et civilisations à tradition orale" ; - dc11:rights "Copyright (c) Moyse-Faurie, Claire" ; - dc11:type , "primary_text"^^olac:linguistic-type, "narrative"^^olac:discourse-type, ; - dc:license ; - dc11:subject , , ; - dc11:title "The two hermit crabs and the coconut crab"@en ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" ; - dc:extent "PT2M35S" ; - edm:isGatheredInto , ; - olac:depositor ; - dc11:contributor , "Idakote, Félicien" ; - olac:researcher ; - olac:speaker "Idakote, Félicien" ; - dc:available "2010-10-23"^^dc:W3CDTF ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:spatial [ - a edm:Place ; - geo:lat "-20.46667"^^xsd:float ; - geo:long "166.65"^^xsd:float ; - skos:note "NC"^^dc:ISO3166, "New Caledonia, Ohnyat (Ouvéa)" ; - owl:sameAs - ] . - - - a edm:WebResource ; - dc:extent "PT2M35S" ; - dc11:format "audio/x-wav"^^dc:IMT ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - - - - a edm:WebResource ; - dc:extent "PT2M35S" ; - dc11:format "audio/x-wav"^^dc:IMT ; - edm:isDerivativeOf ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - - - - a edm:WebResource ; - dc:extent "PT2M35S" ; - dc11:format "audio/mpeg"^^dc:IMT ; - edm:isDerivativeOf ; - dc:created "1997-08-29"^^dc:W3CDTF ; - dc:issued "2010-10-23T00:08:27+02:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - -EOT - , - 'TEXT' => << . - @prefix edm: . - @prefix dc11: . - @prefix olac: . - @prefix dc: . - @prefix skos: . - - - a ore:Aggregation ; - edm:aggregatedCHO ; - edm:provider "Corpus de la Parole"@fr ; - edm:dataProvider ; - edm:isShownAt ; - edm:isShownBy ; - edm:rights ; - edm:hasView , . - - - a edm:ProvidedCHO ; - dc:identifier "crdo-UVE_MOCIKA_SOUND" ; - dc11:description "Voilà pourquoi le bernard-l'hermite, aujourd'hui, se cache dans les coquilles vides qu'il trouve, alors que le crabe de cocotier n'a pas honte de se promener tout nu."@fr ; - dc11:language ; - dc11:publisher ; - dc11:rights "Copyright (c) Moyse-Faurie, Claire" ; - dc11:type "primary_text"^^olac:linguistic-type, , "narrative"^^olac:discourse-type ; - dc:license ; - dc11:subject ; - dc11:title "The two hermit crabs and the coconut crab"@en ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" ; - edm:isGatheredInto , ; - dc:alternative "Les deux bernard-l'hermite et le crabe de cocotier"@fr ; - olac:depositor ; - dc11:contributor , "Moyse-Faurie, Claire", "Idakote, Félicien" ; - olac:researcher "Moyse-Faurie, Claire" ; - olac:speaker "Idakote, Félicien" ; - dc:available "2011-02-05"^^dc:W3CDTF ; - dc:issued "2011-02-05T23:22:23+01:00"^^dc:W3CDTF ; - dc:modified "2002-02-20"^^dc:W3CDTF ; - dc:spatial [ - a edm:Place ; - skos:note "NC"^^dc:ISO3166, "New Caledonia, Ohnyat (Ouvéa)" - ] . - - - a edm:WebResource ; - dc11:format "application/xml"^^dc:IMT ; - dc:issued "2011-02-05T23:22:23+01:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - - - - a edm:WebResource ; - dc11:format "application/xhtml+xml"^^dc:IMT ; - dc:issued "2011-02-05T23:22:23+01:00"^^dc:W3CDTF ; - dc:license ; - dc:accessRights "Freely available for non-commercial use" ; - dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" . - -EOT - ]; - - - private $inputGraphes = []; - private $resGraph = []; - - function __construct(string $name = null) { - parent::__construct($name); - } - - public function setUp() { - parent::setUp(); - - foreach(CocoonTextRdfMergerTest::TEST_INPUT_DOCS as $key => $inputDoc) { - $this->inputGraphes[$key] = new Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", $inputDoc); - } - - $merger = new CocoonTextRdfMerger(); - $this->resGraph['SOUND_TEXT'] = $merger->mergeGraph($this->inputGraphes['SOUND'], $this->inputGraphes['TEXT']); - $merger = new CocoonSoundRdfMerger(); - $this->resGraph['TEXT_SOUND'] = $merger->mergeGraph($this->inputGraphes['TEXT'], $this->inputGraphes['SOUND']); - $merger = new CocoonTextRdfMerger(); - $this->resGraph['SOUND_NO_MOD_TEXT'] = $merger->mergeGraph($this->inputGraphes['SOUND_NO_MOD'], $this->inputGraphes['TEXT']); - $merger = new CocoonSoundRdfMerger(); - $this->resGraph['TEXT_SOUND_NO_MOD'] = $merger->mergeGraph($this->inputGraphes['TEXT'], $this->inputGraphes['SOUND_NO_MOD']); - } - - public function tearDown() { - parent::tearDown(); - } - - /** - * Just test that the construct and setup are ok - * - * @return void - */ - public function testInit() - { - $this->assertTrue(true); - //echo $this->resGraph->serialise('turtle'); - } - - /** - * Test merge modified merge TEXT into SOUND - * - * @return void - */ - public function testModifiedSoundText() { - - $resGraph = $this->resGraph["SOUND_TEXT"]; - - $providedCHO = $resGraph->get('edm:ProvidedCHO', '^rdf:type'); - $baseNode = $this->inputGraphes['SOUND']->get('edm:ProvidedCHO', '^rdf:type'); - $this->assertNotNull($providedCHO); - $this->assertNotNull($baseNode); - - $outputValuesStr = []; - foreach($providedCHO->all($resGraph->resource("http://purl.org/dc/terms/modified")) as $outputValue) { - array_push($outputValuesStr, strval($outputValue)); - } - $this->assertNotEmpty($outputValuesStr, "we must found some values to test http://purl.org/dc/terms/modified"); - foreach ($baseNode->all($this->inputGraphes['SOUND']->resource("http://purl.org/dc/terms/modified")) as $value) { - $this->assertContains(strval($value), $outputValuesStr, "http://purl.org/dc/terms/modified not found in output graph"); - } - - } - - /** - * Test one to one mapping - * - * @return void - */ - public function testModifiedTextSound() { - - $resGraph = $this->resGraph["TEXT_SOUND"]; - - $providedCHO = $resGraph->get('edm:ProvidedCHO', '^rdf:type'); - $baseNode = $this->inputGraphes['SOUND']->get('edm:ProvidedCHO', '^rdf:type'); - $this->assertNotNull($providedCHO); - $this->assertNotNull($baseNode); - - $outputValuesStr = []; - foreach($providedCHO->all($resGraph->resource("http://purl.org/dc/terms/modified")) as $outputValue) { - array_push($outputValuesStr, strval($outputValue)); - } - $this->assertNotEmpty($outputValuesStr, "we must found some values to test http://purl.org/dc/terms/modified"); - foreach ($baseNode->all($this->inputGraphes['SOUND']->resource("http://purl.org/dc/terms/modified")) as $value) { - $this->assertContains(strval($value), $outputValuesStr, "http://purl.org/dc/terms/modified not found in output graph"); - } - - } - - /** - * Test one to one mapping - * - * @return void - */ - public function testSoundNoModifiedText() { - - $resGraph = $this->resGraph["SOUND_NO_MOD_TEXT"]; - - $providedCHO = $resGraph->get('edm:ProvidedCHO', '^rdf:type'); - $baseNode = $this->inputGraphes['TEXT']->get('edm:ProvidedCHO', '^rdf:type'); - $this->assertNotNull($providedCHO); - $this->assertNotNull($baseNode); - - $outputValuesStr = []; - foreach($providedCHO->all($resGraph->resource("http://purl.org/dc/terms/modified")) as $outputValue) { - array_push($outputValuesStr, strval($outputValue)); - } - $this->assertNotEmpty($outputValuesStr, "we must found some values to test http://purl.org/dc/terms/modified"); - // must contain the TEXT modified value (since SOUND has none) - foreach ($baseNode->all($this->inputGraphes['TEXT']->resource("http://purl.org/dc/terms/modified")) as $value) { - $this->assertContains(strval($value), $outputValuesStr, "http://purl.org/dc/terms/modified not found in output graph"); - } - - } - - - /** - * Test one to one mapping - * - * @return void - */ - public function testTextSoundNoModified() { - - $resGraph = $this->resGraph["TEXT_SOUND_NO_MOD"]; - - $providedCHO = $resGraph->get('edm:ProvidedCHO', '^rdf:type'); - $baseNode = $this->inputGraphes['TEXT']->get('edm:ProvidedCHO', '^rdf:type'); - $this->assertNotNull($providedCHO); - $this->assertNotNull($baseNode); - - $outputValuesStr = []; - foreach($providedCHO->all($resGraph->resource("http://purl.org/dc/terms/modified")) as $outputValue) { - array_push($outputValuesStr, strval($outputValue)); - } - $this->assertNotEmpty($outputValuesStr, "we must found some values to test http://purl.org/dc/terms/modified"); - // must contain the TEXT modified value (since SOUND has none) - foreach ($baseNode->all($this->inputGraphes['TEXT']->resource("http://purl.org/dc/terms/modified")) as $value) { - $this->assertContains(strval($value), $outputValuesStr, "http://purl.org/dc/terms/modified not found in output graph"); - } - - } - - - public function testRightsWebResource() { - $properties = [ - "http://purl.org/dc/elements/1.1/rights", - 'http://purl.org/dc/terms/license', - 'http://purl.org/dc/terms/accessRights', - ]; - - $resGraph = $this->resGraph["SOUND_TEXT"]; - $webResourceList = $resGraph->all('edm:WebResource', '^rdf:type'); - - //just check that they have all these resources. - //TODO: check that the same rights are kept (difficult) - foreach ($webResourceList as $webResource) { - foreach ($properties as $prop) { - $outputValuesStr = []; - foreach($webResource->all($resGraph->resource($prop)) as $outputValue) { - array_push($outputValuesStr, strval($outputValue)); - } - $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop"); - } - } - } - - public function testRightDifferent() { - $resGraph = $this->resGraph["SOUND_TEXT"]; - - $aggregationRes = $resGraph->get('ore:Aggregation', '^rdf:type'); - - $license = $aggregationRes->get(''); - - $this->assertNotNull($license, "The licence must not be null"); - $this->assertInstanceOf("EasyRdf\Resource", $license, "Licence must be a resource"); - $this->assertEquals(config('corpusparole.corpus_doc_default_cc_rights'), $license->getUri(), "License must be default licence"); - } - - public function testRightSame() { - $resGraph = $this->resGraph["SOUND_NO_MOD_TEXT"]; - - $aggregationRes = $resGraph->get('ore:Aggregation', '^rdf:type'); - - $license = $aggregationRes->get(''); - - $this->assertNotNull($license, "The licence must not be null"); - $this->assertInstanceOf("EasyRdf\Resource", $license, "Licence must be a resource"); - $this->assertEquals('http://creativecommons.org/licenses/by-nc-sa/4.0/', $license->getUri(), "License must be default licence"); - } - - - -}