--- a/server/src/app/Libraries/Mappers/CocoonAbstractRdfMapper.php Fri Mar 25 17:03:45 2016 +0100
+++ b/server/src/app/Libraries/Mappers/CocoonAbstractRdfMapper.php Sat Mar 26 00:24:34 2016 +0100
@@ -132,10 +132,12 @@
$collections = $res->all('dc:isPartOf');
foreach($collections as $coll) {
if(CocoonUtils::isResourceCollection($coll)) {
- $collUri = $coll->getUri();
+ $collId = CocoonUtils::getIdFromUri($coll->getUri());
+ $collUri = CocoonUtils::getCorpusUriFromId($collId);
$collectionGraph = new Graph($collUri);
$this->outputGraphes[$collUri] = $collectionGraph;
- $collectionGraph->resource($collUri, 'edm:Collection');
+ $collRes = $collectionGraph->resource($collUri, 'edm:Collection');
+ $collRes->addResource("http://purl.org/dc/terms/isVersionOf",$coll->getUri());
}
}
}
--- a/server/src/app/Libraries/Mappers/CocoonCollectionRdfMapper.php Fri Mar 25 17:03:45 2016 +0100
+++ b/server/src/app/Libraries/Mappers/CocoonCollectionRdfMapper.php Sat Mar 26 00:24:34 2016 +0100
@@ -3,6 +3,8 @@
use EasyRdf\Graph;
+use CorpusParole\Libraries\CocoonUtils;
+
//<http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_ALA_CL> a <http://crdo.risc.cnrs.fr/schemas/Resource> ;
// <http://purl.org/dc/elements/1.1/description> """Cette série d'entretiens semi-dirigés avait comme objectif de susciter un discours
// sur les pratiques linguistiques des locuteurs. Les locuteurs se sont exprimés dans la langue de leur choix.
@@ -66,24 +68,14 @@
return $res->getUri();
}
- /**
- * Build the main outputgraph
- * @return the new empty graph
- */
- protected function buildOutputGraph() {
-
- $outputGraph = new Graph($this->uri);
- $this->outputGraphes[$this->getResourceBaseId()] = $outputGraph;
-
- return $outputGraph;
- }
-
-
protected function mapResource($res, $outputGraph) {
- $resUri = $res->getUri();
+ $resId = CocoonUtils::getIdFromUri($this->getResourceBaseId($res));
+ $resUri = CocoonUtils::getCorpusUriFromId($resId);
$collNode = $outputGraph->resource($resUri, 'edm:Collection');
+ $collNode->addResource('http://purl.org/dc/terms/isVersionOf', $this->getResourceBaseId());
+
$this->addSimpleProperties($collNode, $res);
$this->addDateProperties($collNode, $res, $outputGraph);
$this->addSpatialProperties($collNode, $res, $outputGraph);
--- a/server/src/tests/libraries/Mappers/CocoonCollectionRdfMapperTest.php Fri Mar 25 17:03:45 2016 +0100
+++ b/server/src/tests/libraries/Mappers/CocoonCollectionRdfMapperTest.php Sat Mar 26 00:24:34 2016 +0100
@@ -53,7 +53,6 @@
];
const TEST_INPUT_ID = "crdo-COLLECTION_CFPP2000";
- const TEST_GRAPH_URI = "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000";
private $inputGraphes = [];
private $resGraphes = [];
@@ -66,6 +65,8 @@
public function setUp() {
parent::setUp();
+ $this->testGraphUri = config('corpusparole.corpus_doc_id_base_uri').CocoonCollectionRdfMapperTest::TEST_INPUT_ID;
+
foreach(CocoonCollectionRdfMapperTest::TEST_INPUT_DOCS as $key => $inputDoc) {
$this->inputGraphes[$key] = new Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000", $inputDoc);
$this->mappers[$key] = new CocoonCollectionRdfMapper($this->inputGraphes[$key]);
@@ -99,7 +100,7 @@
//echo var_export($this->resGraphes['BASE']->toRdfPhp());
$this->assertNotNull($this->resGraphes['BASE']);
- $this->assertEquals(CocoonCollectionRdfMapperTest::TEST_GRAPH_URI, $this->resGraphes['BASE']->getUri(), "URIS must be translated");
+ $this->assertEquals($this->testGraphUri, $this->resGraphes['BASE']->getUri(), "URIS must be translated");
}
/**
@@ -112,7 +113,7 @@
$resources = $this->resGraphes['BASE']->allOfType('edm:Collection');
$this->assertCount(1, $resources, "Must found only one resources of type edm:Collection");
- $this->assertEquals(CocoonCollectionRdfMapperTest::TEST_GRAPH_URI,$resources[0]);
+ $this->assertEquals($this->testGraphUri,$resources[0]);
}
/**
@@ -200,4 +201,19 @@
}
+ public function testLinkToCocoonCollection() {
+ $coll = $this->resGraphes['BASE']->get('edm:Collection', '^rdf:type');
+ $sourceNode = $this->inputGraphes['BASE']->get('http://crdo.risc.cnrs.fr/schemas/Resource', '^rdf:type');
+
+ $this->assertNotNull($coll);
+ $this->assertNotNull($sourceNode);
+
+ $versionOfRes = $coll->all("<http://purl.org/dc/terms/isVersionOf>");
+ $this->assertCount(1, $versionOfRes, "Must have only on isVersionOf");
+ $versionOfRes = $versionOfRes[0];
+ $this->assertInstanceOf("EasyRdf\Resource", $versionOfRes, "version Res must be a resource");
+ $this->assertEquals($sourceNode->getUri(), $versionOfRes->getUri(), "versionof res uri must be sams than source");
+
+ }
+
}
--- a/server/src/tests/libraries/Mappers/CocoonSoundRdfMapperTest.php Fri Mar 25 17:03:45 2016 +0100
+++ b/server/src/tests/libraries/Mappers/CocoonSoundRdfMapperTest.php Sat Mar 26 00:24:34 2016 +0100
@@ -573,7 +573,7 @@
if($outputGraph->getUri() == config('corpusparole.corpus_doc_id_base_uri').'crdo-ESLO1_ENT_019') {
continue;
}
- $this->assertContains($outputGraph->getUri(), ['http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_LANGUESDEFRANCE', 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_ESLO1']);
+ $this->assertContains($outputGraph->getUri(), [config('corpusparole.corpus_doc_id_base_uri').'crdo-COLLECTION_LANGUESDEFRANCE', config('corpusparole.corpus_doc_id_base_uri').'crdo-COLLECTION_ESLO1']);
$this->assertEquals($outputGraph->resource($outputGraph->getUri())->type(), 'edm:Collection');
}
}
--- a/server/src/tests/libraries/Mergers/CocoonCollectionRdfMergerTest.php Fri Mar 25 17:03:45 2016 +0100
+++ b/server/src/tests/libraries/Mergers/CocoonCollectionRdfMergerTest.php Sat Mar 26 00:24:34 2016 +0100
@@ -25,8 +25,9 @@
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
- <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000>
+ <%1\$scrdo-COLLECTION_CFPP2000>
a edm:Collection ;
+ dc:isVersionOf <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000> ;
dc11:description "Corpus de Français Parlé Parisien des années 2000."@fr, "Le Corpus de Français Parlé Parisien (CFPP2000) est composé d'un ensemble d'interviews non directives sur les quartiers de Paris et de la proche banlieue. Les entretiens, transcrits en orthographe et alignés au tour de parole, sont disponibles sur le net ; ils sont librement employables en échange de la mention dans la bibliographie des travaux qui en seraient tirés d'une part de l'adresse du site: http://cfpp2000.univ-paris3.fr/ et d'autre part du document de présentation suivant : Branca-Rosoff S., Fleury S., Lefeuvre F., Pires M., 2012, \"Discours sur la ville. Présentation du Corpus de Français Parlé Parisien des années 2000 (CFPP2000)\". En février 2013, ce corpus comprenait environ 550 000 mots. Un certain nombre d'outils en ligne, notamment un concordancier et des outils textométriques permettent de mener des requêtes lexicales et grammaticales. CFPP2000 est particulièrement destiné à des analyses sur le français oral. Le projet sous-jacent au corpus est par ailleurs l'étude des modifications et des variations qui interviennent dans ce qu'on peut considérer comme un parisien véhiculaire en tension entre le pôle du standard et le pôle du vernaculaire. Par ailleurs, il comporte des activités linguistiques diversifiées (description de quartier, anecdotes, argumentationâ¦) et on peut par conséquent travailler sur la syntaxe propre à ces différentes utilisations du langage. Il permet enfin d'opposer dialogues (entre enquêteur et enquêtés) et multilogues (où la présence de plusieurs enquêtés favorise le passage à un registre familier). CFPP2000 est constitué d'interviews longues (d'une heure en moyenne) intégralement transcrites. Il est donc utilisable pour examiner les singularités qui reviennent à l'idiolecte propre à une personne donnée, par opposition aux variantes diffusées dans des groupes plus larges (quartiers, groupes socio-culturels, classe d'âge, etc.). Le corpus constitue enfin un ensemble de témoignages intéressants sur les représentations de Paris et de sa proche banlieue qui est susceptible d'intéresser des analystes du discours, des sociologues, ou tout simplement des curieux de la ville."@fr ;
dc11:language <http://lexvo.org/id/iso639-3/gsw> ;
dc11:publisher <http://viaf.org/viaf/142432638>, "Fédération CLESTHIA", <http://viaf.org/viaf/154862993> ;
@@ -68,8 +69,9 @@
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
- <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000>
+ <%1\$scrdo-COLLECTION_CFPP2000>
a edm:Collection ;
+ dc:isVersionOf <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000> ;
dc11:title "Other title"@fr ;
dc:created "start=1988; end=1989"^^dc:Period ;
dc:issued "2013-04-12T22:20:23+02:00"^^dc:W3CDTF ;
@@ -86,7 +88,6 @@
];
const TEST_INPUT_ID = "crdo-COLLECTION_CFPP2000";
- const TEST_GRAPH_URI = "http://corpusdelaparole.huma-num.fr/corpus/res/crdo-COLLECTION_CFPP2000";
const TEST_CHO_URI = "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000";
@@ -101,8 +102,9 @@
public function setUp() {
parent::setUp();
+ $this->testGraphUri = config('corpusparole.corpus_doc_id_base_uri').CocoonCollectionRdfMergerTest::TEST_INPUT_ID;
foreach(CocoonCollectionRdfMergerTest::TEST_INPUT_DOCS as $key => $inputDoc) {
- $this->inputGraphes[$key] = new Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000", $inputDoc);
+ $this->inputGraphes[$key] = new Graph(config('corpusparole.corpus_doc_id_base_uri')."crdo-COLLECTION_CFPP2000", sprintf($inputDoc, config('corpusparole.corpus_doc_id_base_uri')));
}
$this->merger = new CocoonCollectionRdfMerger();
@@ -131,9 +133,11 @@
*/
public function testResGraph() {
$this->assertNotNull($this->resGraph, "Res graph must not be null");
- $this->assertEquals("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000", $this->resGraph->getUri(), "graph uri must be equals to http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND");
+ $this->assertEquals(config('corpusparole.corpus_doc_id_base_uri')."crdo-COLLECTION_CFPP2000", $this->resGraph->getUri(), "graph uri must be equals to ".config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND");
}
+
+
/**
* test the merged Aggregation
*
@@ -144,7 +148,7 @@
$this->assertCount(1, $collectionResList, "Only one Collection node");
$collectionRes = $collectionResList[0];
- $this->assertEquals("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000",$collectionRes->getUri(),"Collection node uri must be http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000");
+ $this->assertEquals(config('corpusparole.corpus_doc_id_base_uri')."crdo-COLLECTION_CFPP2000",$collectionRes->getUri(),"Collection node uri must be ".config('corpusparole.corpus_doc_id_base_uri')."crdo-COLLECTION_CFPP2000");
$singleValuesRes = [
'http://purl.org/dc/elements/1.1/title' => ['size'=>1, 'val' => new Literal("Corpus de Français Parlé Parisien des années 2000 (CFPP)", "fr", null)],
@@ -211,6 +215,20 @@
$this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
}
+ public function testLinkToCocoonCollection() {
+ $coll = $this->resGraph->get('edm:Collection', '^rdf:type');
+
+ $this->assertNotNull($coll);
+
+ $versionOfRes = $coll->all("<http://purl.org/dc/terms/isVersionOf>");
+ $this->assertCount(1, $versionOfRes, "Must have only on isVersionOf");
+ $versionOfRes = $versionOfRes[0];
+ $this->assertInstanceOf("EasyRdf\Resource", $versionOfRes, "version Res must be a resource");
+ $this->assertEquals(CocoonCollectionRdfMergerTest::TEST_CHO_URI, $versionOfRes->getUri(), "versionof res uri must be sams than source");
+
+ }
+
+
}