server/src/tests/Libraries/Mergers/CocoonSoundRdfMergerTest.php
changeset 169 8fddc113095e
parent 152 dd6b3adde73b
child 170 31bee084df32
equal deleted inserted replaced
168:17f10b56c079 169:8fddc113095e
    13 
    13 
    14 class CocoonSoundRdfMergerTest extends TestCase
    14 class CocoonSoundRdfMergerTest extends TestCase
    15 {
    15 {
    16 
    16 
    17     const TEST_INPUT_DOCS = [
    17     const TEST_INPUT_DOCS = [
    18         'BASE' => <<<EOT
    18         'BASE' => __DIR__.'/files/CocoonSoundRdfMergerTest/base_doc.ttl',
    19         @prefix ore: <http://www.openarchives.org/ore/terms/> .
    19         'SOURCE' => __DIR__.'/files/CocoonSoundRdfMergerTest/source_doc.ttl',
    20         @prefix edm: <http://www.europeana.eu/schemas/edm/> .
    20         'BASE_NO_SPATIAL' => __DIR__.'/files/CocoonSoundRdfMergerTest/base_no_spatial.ttl',
    21         @prefix dc11: <http://purl.org/dc/elements/1.1/> .
    21         'SOURCE_NO_SPATIAL' => __DIR__.'/files/CocoonSoundRdfMergerTest/source_no_spatial.ttl'
    22         @prefix olac: <http://www.language-archives.org/OLAC/1.1/> .
       
    23         @prefix dc: <http://purl.org/dc/terms/> .
       
    24         @prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
       
    25         @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
       
    26         @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
       
    27         @prefix owl: <http://www.w3.org/2002/07/owl#> .
       
    28 
       
    29         <http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND>
       
    30           a ore:Aggregation ;
       
    31           edm:aggregatedCHO <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND> ;
       
    32           edm:provider "Corpus de la Parole"@fr ;
       
    33           edm:dataProvider <http://viaf.org/viaf/142432638> ;
       
    34           edm:isShownAt <http://corpusdelaparole.huma-num.fr/corpus-app#/detail/crdo-CFPP2000_35_SOUND> ;
       
    35           edm:isShownBy <http://cocoon.huma-num.fr/data/archi/masters/372593.wav> ;
       
    36           edm:rights <http://creativecommons.org/licenses/by-nc-sa/4.0/> ;
       
    37           edm:hasView <http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav>, <http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3> .
       
    38 
       
    39         <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND>
       
    40           a edm:ProvidedCHO ;
       
    41           dc11:identifier "crdo-CFPP2000_35_SOUND" ;
       
    42           dc11:description "Enregistrement issu du Corpus de Français Parlé Parisien des années 2000 (CFPP2000)"@fr, "Enregistrement: Caractéristiques de l'enregistrement; Identifiant : CFPP2000 [03-01] Ozgur_Kilic_H_32_alii_3e; Langue : français; Editeur : Université Paris III – Syled ; Date : 17.11.2010; Lieu de l'enregistrement : au domicile de l’enquêté Özgur KILIÇ ; Enquêteur : Sonia BRANCA-ROSOFF; Quartier(s) concerné(s) : Paris 3e, et 20e (pour l’âge adulte); Transcription : Noalig TANGUY; Anonymisation : Noalig TANGUY; Durée : 0h46’; "@fr, "Enquêteur: Etat civil; Prénom et NOM : Sonia BRANCA-ROSOFF; Sexe : féminin; Lieu de naissance : New-York (USA); Lieu la petite enfance : Bretagne, puis région parisienne, puis de 8 à 16 ans Nice; Date de naissance : 16.12.1947; Situation familiale : mariée, deux enfants; Mobilité géographique : Paris 1967-1971, Aix-en-Provence 1971-1996, Paris 1996-2012; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : Doctorat d’État (sciences du langage) 1987; Travail; Activité actuelle : Enseignante-chercheuse (linguistique française), Université de la Sorbonne Nouvelle-Paris III, Paris; Activités passées : ; Langues; Langue première : français; Parents (profession, lieu de naissance, scolarité…); Mère : née en 1916 à Nice (France), interprète de conférences ; licence d’anglais; Père : né en 1913 à Mananjary (Madagascar), ingénieur.; "@fr, "Enquêté 1: Etat civil; Prénom et NOM fictifs : Özgur KILIÇ ; Sexe : masculin; Lieu de naissance: Paris 11e, France; Lieu la petite enfance : Paris 11e, France; Date de naissance : 07.02.1979; Age au moment de l’enregistrement : 32 ans; Situation familiale : pacsé, deux enfants; Mobilité géographique : 3e, 18e, 20e arrondissements; Relation (parenté, ami, etc) avec Enquêteur : aucune; Relation (parenté, ami, etc) avec autres enquêtés : amis; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire  st Merri 75003 ; Secondaire : Victor Hugo, Turgot 75003, Jean Lurçat 75013 général bac ES Supérieur. Puis St Denis université (cinéma); Travail; Activité actuelle : ingénieur du son pour l'audiovisuel; Activités passées : restauration, assistant son pour l'audiovisuel ; Langues; Langues pratiquées : français, anglais, turc; Parents (profession, lieu de naissance, scolarité…); Mère : psychothérapeute, né a Houilles région parisienne France; Père : professeur d'université, né a Istanbul en Turquie.  ; "@fr, "Enquêté 2: Etat civil; Prénom et NOM fictifs : Michel CHEVRIER; Sexe : masculin; Lieu de naissance : naissance à Boulogne-Billancourt (92); Lieu la petite enfance : rue du Temple, 3e arrondissement, Paris; Date de naissance : 01.06.1979; Age au moment de l’enregistrement : 31 ans; Situation familiale : concubinage; Mobilité géographique : 3e, puis 20e (entre 2005 et 2009) puis Romainville (depuis 2009); Relation (parenté, ami, etc) avec Enquêteur : ; Relation (parenté, ami, etc) avec Enquêté NOM : ; Relation (parenté, ami, etc) avec Enquêté NOM : ; Prénom et NOM réels : ; Réseau par lequel contacté : ; Adresse (si connue) : ; Téléphone (si connu) : ; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire : École à aire ouverte rue St Merri 75003 ; Secondaire (Collège Victor Hugo 75003) puis Lycée Autogéré de Paris (75015) Bac Littéraire. Deux années au CIM (école de jazz) dans le 75018, puis 3 ans au conservatoire du 9eme; Travail; Activité actuelle : Musicien, Compositeur, Professeur de piano jazz ; Activités passées : Musicien; Langues; Langues pratiquées : français, anglais; Parents (profession, lieu de naissance, scolarité…); Mère : ancienne médecin généraliste pneumologue, puis sociologue, née en France; Père : enseignant en sciences de l'éducation à Paris 8 né en Belgique; "@fr, "Enquêté 3: Etat civil; Prénom et NOM fictifs : Benoît DU BREUIL-DE-PONT-EN-AUGE; Sexe : masculin; Lieu de naissance : Paris 14e; Lieu la petite enfance :  Paris 3e; Date de naissance : 28.11.1978; Age au moment de l’enregistrement : 32 ans; Situation familiale : concubinage avéré, avec papier de la mairie tamponné et signé!; Mobilité géographique : à 2 ans vit dans le 9°, puis déménage pour le 3°, est resté dans la même rue pendant 20 ans tout en changeant d'immeuble. Ensuite le 19° pendant 4 ans, puis Pantin 6 mois puis Les Lilas. ; Relation (parenté, ami, etc) avec Enquêteur : aucune; Relation (parenté, ami, etc) avec autres enquêtés : voir Scolarité, Précisions; Prénom et NOM réels : ; Réseau par lequel contacté : ; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [ ] Post-licence [ ] ; Dernier diplôme, avec année d’obtention : CAP; Précisions : Primaire école à aire ouverte (St Merri) dans le 4° avec Augustin, Ôzgur, Michel. Secondaire : collège Victor-Hugo dans le 3° avec Ôzgur ; puis CAP ; Travail; Activité actuelle : ; Activités passées : ébéniste agenceur puis ébéniste restaurateur et enfin constructeur décors (ainsi que de nombreux petits jobs ayant duré moins d'un an); Langues; Langues pratiquées : français; Parents (profession, lieu de naissance, scolarité…); Mère : à la retraite ; secrétaire de rédaction dans un grand journal, baccalauréat ; née à Montrouge; Père : conseiller à travail à pole emploi, né à Boulogne Billancourt, baccalauréat présenté 3 ou 4 fois, puis obtenu par équivalence. ; "@fr, "Enquêté 4: Etat civil; Enquêté 4; Prénom et NOM fictifs : ; Sexe : féminin / masculin; Lieu de naissance : Paris 14e; Lieu de la petite enfance : Paris 4e et 3e ; Date de naissance : 06.12.1976; Age au moment de l’enregistrement : 34 ans; Situation familiale : ; Mobilité géographique : Rue la Bruyère 75009 (1976-1978), Rambuteau 75004 (1978-1987/88) & 75003 (chgt de côté de rue 1988-1998), a quitté Paris de 1998 à 2005 ; Rue Rambuteau 75003 (2006-2010), rue Gossec 75012 (2011); Relation (parenté, ami, etc) avec Enquêteur : aucune; Relation (parenté, ami, etc) avec Enquêté 2 : ami; Relation (parenté, ami, etc) avec Enquêté NOM : ; Réseau par lequel contacté : ; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire : Ecole St Merri 75003. Secondaire : Collège François Couperin 75004, Institut St Pierre Fourier 75012 ; Cours Charlemagne 75014 ; Travail; Activité actuelle : Superviseur Centre d'appels ; Activités passées : Animateur Club Enfant, Réceptionniste ; Langues; Langues pratiquées :; Parents (profession, lieu de naissance, scolarité…); Mère : retraitée, Paris, bac + 1/2 (?) ; Père : Conseiller Pôle Emploi, Paris, bac. ; "@fr, "Enquêté 5: Etat civil; Prénom et NOM fictifs : Étienne SALVEGAS; Sexe : masculin; Lieu de naissance : Paris 12e; Lieu de la petite enfance : Paris 3e Le Marais; Date de naissance :  16.06.1978; Age au moment de l’enregistrement : 32 ans; Situation familiale : marié 1 enfant, 12 ans de vie commune ; Mobilité géographique : 3e (1978-1999) 19e (1999-2002) 9e (2002-2011) ; Relation (parenté, ami, etc) avec Enquêteur : ; Relation (parenté, ami, etc) avec Enquêté 2 : ami ; Relation (parenté, ami, etc) avec Enquêté NOM : ; Prénom et NOM réels : ; Scolarité; Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [ ] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire : Ecole Vertus, rue des Vertus 3ème. Secondaire Collège Montgolfier / Lycée Turgot 3ème. Supérieur Droit Univ. Paris Panthéon Sorbonne ; Travail; Activité actuelle : évènementiel; Activités passées : stagiaire journaliste sportif / relations publiques, accueil, agent de  sécurité, remplacement gardien, réceptionniste hôtellerie.; Langues; Langues pratiquées :; Parents (profession, lieu de naissance, scolarité…); Mère : né à Paris, lycée ; Père : né à Oloron (64), lycée ; "@fr ;
       
    43           dc11:language <http://lexvo.org/id/iso639-3/fra> ;
       
    44           dc11:publisher <http://viaf.org/viaf/142432638> ;
       
    45           dc11:type <http://purl.org/dc/dcmitype/Sound>, "primary_text"^^olac:linguistic-type, "narrative"^^olac:discourse-type, "report"^^olac:discourse-type, "unintelligible_speech"^^olac:discourse-type ;
       
    46           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" ;
       
    47           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
    48           dc11:subject "lexicography"^^olac:linguistic-field, "phonetics"^^olac:linguistic-field, "anthropological_linguistics"^^olac:linguistic-field, "general_linguistics"^^olac:linguistic-field, <http://lexvo.org/id/iso639-3/fra>, "text_and_corpus_linguistics"^^olac:linguistic-field, "phonology"^^olac:linguistic-field, "semantics"^^olac:linguistic-field, "sociolinguistics"^^olac:linguistic-field, "syntax"^^olac:linguistic-field, "typology"^^olac:linguistic-field, "discourse_analysis"^^olac:linguistic-field, "historical_linguistics"^^olac:linguistic-field, "language_documentation"^^olac:linguistic-field, "mathematical_linguistics"^^olac:linguistic-field ;
       
    49           dc11:title "CFPP2000 [03-01] Ozgur_Kilic_H_32_alii_3e Entretien de Ozgur KILIÇ 2"@fr ;
       
    50           dc:accessRights "Freely available for non-commercial use" ;
       
    51           dc:extent "PT48M26S" ;
       
    52           dc:isPartOf <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_LANGUESDEFRANCE>, <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000> ;
       
    53           dc11:source "CFPP2000"@fr ;
       
    54           dc11:coverage "Quartier concerné : 3e"@fr ;
       
    55           olac:depositor <http://viaf.org/viaf/93752300> ;
       
    56           dc11:contributor <http://viaf.org/viaf/93752300>, "Branca-Rosoff, Sonia", "Kiliç Ozgur", "Chevrier Michel", "du-Breuil-de-Pont-en-Auge Benoît", "du-Breuil-de-Pont-en-Auge Augustin", "Salvegas Etienne", "Tanguy Noalig" ;
       
    57           olac:interviewer "Branca-Rosoff, Sonia" ;
       
    58           olac:responder "Kiliç Ozgur", "Chevrier Michel", "du-Breuil-de-Pont-en-Auge Benoît", "du-Breuil-de-Pont-en-Auge Augustin", "Salvegas Etienne" ;
       
    59           olac:transcriber "Tanguy Noalig" ;
       
    60           dc:available "2013-10-12"^^dc:W3CDTF ;
       
    61           dc:created "2010-11-17"^^dc:W3CDTF ;
       
    62           dc:issued "2013-10-12T14:35:57+02:00"^^dc:W3CDTF ;
       
    63           dc:spatial [
       
    64             a edm:Place ;
       
    65             geo:lat "48.83975"^^xsd:float ;
       
    66             geo:long "2.3542"^^xsd:float ;
       
    67             skos:note "FR"^^dc:ISO3166, "France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier"@fr ;
       
    68             owl:sameAs <http://vocab.getty.edu/tgn/7008038>
       
    69           ] .
       
    70 
       
    71         <http://cocoon.huma-num.fr/data/archi/masters/372593.wav>
       
    72           a edm:WebResource ;
       
    73           dc:extent "PT48M26S" ;
       
    74           dc11:format "audio/x-wav"^^dc:IMT ;
       
    75           dc:created "2010-11-17"^^dc:W3CDTF ;
       
    76           dc:accessRights "Freely available for non-commercial use" ;
       
    77           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
    78           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" ;
       
    79           dc:issued "2013-10-12T14:35:57+02:00"^^dc:W3CDTF .
       
    80 
       
    81         <http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav>
       
    82           a edm:WebResource ;
       
    83           dc:extent "PT48M26S" ;
       
    84           dc11:format "audio/x-wav"^^dc:IMT ;
       
    85           edm:isDerivativeOf <http://cocoon.huma-num.fr/data/archi/masters/372593.wav> ;
       
    86           dc:created "2010-11-17"^^dc:W3CDTF ;
       
    87           dc:issued "2013-10-12T14:35:57+02:00"^^dc:W3CDTF ;
       
    88           dc:accessRights "Freely available for non-commercial use" ;
       
    89           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
    90           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" .
       
    91 
       
    92 
       
    93         <http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3>
       
    94           a edm:WebResource ;
       
    95           dc:extent "PT48M26S" ;
       
    96           dc11:format "audio/mpeg"^^dc:IMT ;
       
    97           edm:isDerivativeOf <http://cocoon.huma-num.fr/data/archi/masters/372593.wav> ;
       
    98           dc:created "2010-11-17"^^dc:W3CDTF ;
       
    99           dc:issued "2013-10-12T14:35:57+02:00"^^dc:W3CDTF ;
       
   100           dc:accessRights "Freely available for non-commercial use" ;
       
   101           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
   102           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" .
       
   103 
       
   104 EOT
       
   105         ,
       
   106         'SOURCE' => <<<EOT
       
   107         @prefix ore: <http://www.openarchives.org/ore/terms/> .
       
   108         @prefix edm: <http://www.europeana.eu/schemas/edm/> .
       
   109         @prefix dc11: <http://purl.org/dc/elements/1.1/> .
       
   110         @prefix olac: <http://www.language-archives.org/OLAC/1.1/> .
       
   111         @prefix dc: <http://purl.org/dc/terms/> .
       
   112         @prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
       
   113         @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
       
   114         @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
       
   115         @prefix owl: <http://www.w3.org/2002/07/owl#> .
       
   116 
       
   117         <http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND>
       
   118           a ore:Aggregation ;
       
   119           edm:aggregatedCHO <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND> ;
       
   120           edm:provider "Corpus de la Parole"@fr ;
       
   121           edm:dataProvider <http://viaf.org/viaf/142432638> ;
       
   122           edm:isShownAt <http://corpusdelaparole.huma-num.fr/corpus-app#/detail/crdo-CFPP2000_35_SOUND> ;
       
   123           edm:isShownBy <http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml> ;
       
   124           edm:rights <http://creativecommons.org/licenses/by-nc-sa/4.0/> ;
       
   125           edm:hasView <http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml>, <http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xhtml>, <http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav> .
       
   126 
       
   127         <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND>
       
   128           a edm:ProvidedCHO ;
       
   129           dc11:identifier "crdo-CFPP2000_35_SOUNDsource" ;
       
   130           dc11:description "Enregistrement issu du Corpus de Français Parlé Parisien des années 2000 (CFPP2000)"@fr, "Enregistrement: Caractéristiques de l'enregistrement; Identifiant : CFPP2000 [03-01] Ozgur_Kilic_H_32_alii_3e; Langue : français; Editeur : Université Paris III – Syled ; Date : 17.11.2010; Lieu de l'enregistrement : au domicile de l’enquêté Özgur KILIÇ ; Enquêteur : Sonia BRANCA-ROSOFF; Quartier(s) concerné(s) : Paris 3e, et 20e (pour l’âge adulte); Transcription : Noalig TANGUY; Anonymisation : Noalig TANGUY; Durée : 0h46’; "@fr, "Enquêteur: Etat civil; Prénom et NOM : Sonia BRANCA-ROSOFF; Sexe : féminin; Lieu de naissance : New-York (USA); Lieu la petite enfance : Bretagne, puis région parisienne, puis de 8 à 16 ans Nice; Date de naissance : 16.12.1947; Situation familiale : mariée, deux enfants; Mobilité géographique : Paris 1967-1971, Aix-en-Provence 1971-1996, Paris 1996-2012; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : Doctorat d’État (sciences du langage) 1987; Travail; Activité actuelle : Enseignante-chercheuse (linguistique française), Université de la Sorbonne Nouvelle-Paris III, Paris; Activités passées : ; Langues; Langue première : français; Parents (profession, lieu de naissance, scolarité…); Mère : née en 1916 à Nice (France), interprète de conférences ; licence d’anglais; Père : né en 1913 à Mananjary (Madagascar), ingénieur.; "@fr, "Enquêté 1: Etat civil; Prénom et NOM fictifs : Özgur KILIÇ ; Sexe : masculin; Lieu de naissance: Paris 11e, France; Lieu la petite enfance : Paris 11e, France; Date de naissance : 07.02.1979; Age au moment de l’enregistrement : 32 ans; Situation familiale : pacsé, deux enfants; Mobilité géographique : 3e, 18e, 20e arrondissements; Relation (parenté, ami, etc) avec Enquêteur : aucune; Relation (parenté, ami, etc) avec autres enquêtés : amis; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire  st Merri 75003 ; Secondaire : Victor Hugo, Turgot 75003, Jean Lurçat 75013 général bac ES Supérieur. Puis St Denis université (cinéma); Travail; Activité actuelle : ingénieur du son pour l'audiovisuel; Activités passées : restauration, assistant son pour l'audiovisuel ; Langues; Langues pratiquées : français, anglais, turc; Parents (profession, lieu de naissance, scolarité…); Mère : psychothérapeute, né a Houilles région parisienne France; Père : professeur d'université, né a Istanbul en Turquie.  ; "@fr, "Enquêté 2: Etat civil; Prénom et NOM fictifs : Michel CHEVRIER; Sexe : masculin; Lieu de naissance : naissance à Boulogne-Billancourt (92); Lieu la petite enfance : rue du Temple, 3e arrondissement, Paris; Date de naissance : 01.06.1979; Age au moment de l’enregistrement : 31 ans; Situation familiale : concubinage; Mobilité géographique : 3e, puis 20e (entre 2005 et 2009) puis Romainville (depuis 2009); Relation (parenté, ami, etc) avec Enquêteur : ; Relation (parenté, ami, etc) avec Enquêté NOM : ; Relation (parenté, ami, etc) avec Enquêté NOM : ; Prénom et NOM réels : ; Réseau par lequel contacté : ; Adresse (si connue) : ; Téléphone (si connu) : ; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire : École à aire ouverte rue St Merri 75003 ; Secondaire (Collège Victor Hugo 75003) puis Lycée Autogéré de Paris (75015) Bac Littéraire. Deux années au CIM (école de jazz) dans le 75018, puis 3 ans au conservatoire du 9eme; Travail; Activité actuelle : Musicien, Compositeur, Professeur de piano jazz ; Activités passées : Musicien; Langues; Langues pratiquées : français, anglais; Parents (profession, lieu de naissance, scolarité…); Mère : ancienne médecin généraliste pneumologue, puis sociologue, née en France; Père : enseignant en sciences de l'éducation à Paris 8 né en Belgique; "@fr, "Enquêté 3: Etat civil; Prénom et NOM fictifs : Benoît DU BREUIL-DE-PONT-EN-AUGE; Sexe : masculin; Lieu de naissance : Paris 14e; Lieu la petite enfance :  Paris 3e; Date de naissance : 28.11.1978; Age au moment de l’enregistrement : 32 ans; Situation familiale : concubinage avéré, avec papier de la mairie tamponné et signé!; Mobilité géographique : à 2 ans vit dans le 9°, puis déménage pour le 3°, est resté dans la même rue pendant 20 ans tout en changeant d'immeuble. Ensuite le 19° pendant 4 ans, puis Pantin 6 mois puis Les Lilas. ; Relation (parenté, ami, etc) avec Enquêteur : aucune; Relation (parenté, ami, etc) avec autres enquêtés : voir Scolarité, Précisions; Prénom et NOM réels : ; Réseau par lequel contacté : ; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [ ] Post-licence [ ] ; Dernier diplôme, avec année d’obtention : CAP; Précisions : Primaire école à aire ouverte (St Merri) dans le 4° avec Augustin, Ôzgur, Michel. Secondaire : collège Victor-Hugo dans le 3° avec Ôzgur ; puis CAP ; Travail; Activité actuelle : ; Activités passées : ébéniste agenceur puis ébéniste restaurateur et enfin constructeur décors (ainsi que de nombreux petits jobs ayant duré moins d'un an); Langues; Langues pratiquées : français; Parents (profession, lieu de naissance, scolarité…); Mère : à la retraite ; secrétaire de rédaction dans un grand journal, baccalauréat ; née à Montrouge; Père : conseiller à travail à pole emploi, né à Boulogne Billancourt, baccalauréat présenté 3 ou 4 fois, puis obtenu par équivalence. ; "@fr, "Enquêté 4: Etat civil; Enquêté 4; Prénom et NOM fictifs : ; Sexe : féminin / masculin; Lieu de naissance : Paris 14e; Lieu de la petite enfance : Paris 4e et 3e ; Date de naissance : 06.12.1976; Age au moment de l’enregistrement : 34 ans; Situation familiale : ; Mobilité géographique : Rue la Bruyère 75009 (1976-1978), Rambuteau 75004 (1978-1987/88) & 75003 (chgt de côté de rue 1988-1998), a quitté Paris de 1998 à 2005 ; Rue Rambuteau 75003 (2006-2010), rue Gossec 75012 (2011); Relation (parenté, ami, etc) avec Enquêteur : aucune; Relation (parenté, ami, etc) avec Enquêté 2 : ami; Relation (parenté, ami, etc) avec Enquêté NOM : ; Réseau par lequel contacté : ; Scolarité; Niveau : Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [X] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire : Ecole St Merri 75003. Secondaire : Collège François Couperin 75004, Institut St Pierre Fourier 75012 ; Cours Charlemagne 75014 ; Travail; Activité actuelle : Superviseur Centre d'appels ; Activités passées : Animateur Club Enfant, Réceptionniste ; Langues; Langues pratiquées :; Parents (profession, lieu de naissance, scolarité…); Mère : retraitée, Paris, bac + 1/2 (?) ; Père : Conseiller Pôle Emploi, Paris, bac. ; "@fr, "Enquêté 5: Etat civil; Prénom et NOM fictifs : Étienne SALVEGAS; Sexe : masculin; Lieu de naissance : Paris 12e; Lieu de la petite enfance : Paris 3e Le Marais; Date de naissance :  16.06.1978; Age au moment de l’enregistrement : 32 ans; Situation familiale : marié 1 enfant, 12 ans de vie commune ; Mobilité géographique : 3e (1978-1999) 19e (1999-2002) 9e (2002-2011) ; Relation (parenté, ami, etc) avec Enquêteur : ; Relation (parenté, ami, etc) avec Enquêté 2 : ami ; Relation (parenté, ami, etc) avec Enquêté NOM : ; Prénom et NOM réels : ; Scolarité; Primaire [X] Secondaire [X] ; Supérieur : Licence [X] Post-licence [ ] ; Dernier diplôme, avec année d’obtention : ; Précisions : Primaire : Ecole Vertus, rue des Vertus 3ème. Secondaire Collège Montgolfier / Lycée Turgot 3ème. Supérieur Droit Univ. Paris Panthéon Sorbonne ; Travail; Activité actuelle : évènementiel; Activités passées : stagiaire journaliste sportif / relations publiques, accueil, agent de  sécurité, remplacement gardien, réceptionniste hôtellerie.; Langues; Langues pratiquées :; Parents (profession, lieu de naissance, scolarité…); Mère : né à Paris, lycée ; Père : né à Oloron (64), lycée ; "@fr ;
       
   131           dc11:language <http://lexvo.org/id/iso639-3/fra> ;
       
   132           dc11:publisher <http://viaf.org/viaf/142432638> ;
       
   133           dc11:type "primary_text"^^olac:linguistic-type, "narrative"^^olac:discourse-type, "report"^^olac:discourse-type, "unintelligible_speech"^^olac:discourse-type ;
       
   134           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
   135           dc11:subject "lexicography"^^olac:linguistic-field, "phonetics"^^olac:linguistic-field, "anthropological_linguistics"^^olac:linguistic-field, "general_linguistics"^^olac:linguistic-field, <http://lexvo.org/id/iso639-3/fra>, "text_and_corpus_linguistics"^^olac:linguistic-field, "phonology"^^olac:linguistic-field, "semantics"^^olac:linguistic-field, "sociolinguistics"^^olac:linguistic-field, "syntax"^^olac:linguistic-field, "typology"^^olac:linguistic-field, "discourse_analysis"^^olac:linguistic-field, "historical_linguistics"^^olac:linguistic-field, "language_documentation"^^olac:linguistic-field, "mathematical_linguistics"^^olac:linguistic-field ;
       
   136           dc11:title "CFPP2000 [03-01] Ozgur_Kilic_H_32_alii_3e Entretien de Ozgur KILIÇ 2 (annotations)"@fr ;
       
   137           dc:accessRights "Freely available for non-commercial use" ;
       
   138           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" ;
       
   139           dc:isPartOf <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_LANGUESDEFRANCE>, <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-COLLECTION_CFPP2000> ;
       
   140           dc11:source "CFPP2000"@fr ;
       
   141           dc11:coverage "Quartier concerné : 3e"@fr ;
       
   142           olac:depositor <http://viaf.org/viaf/93752300> ;
       
   143           dc11:contributor <http://viaf.org/viaf/93752300>, "Branca-Rosoff, Sonia", "Kiliç Ozgur", "Chevrier Michel", "du-Breuil-de-Pont-en-Auge Benoît", "du-Breuil-de-Pont-en-Auge Augustin", "Salvegas Etienne", "Tanguy Noalig" ;
       
   144           olac:interviewer "Branca-Rosoff, Sonia" ;
       
   145           olac:responder "Kiliç Ozgur", "Chevrier Michel", "du-Breuil-de-Pont-en-Auge Benoît", "du-Breuil-de-Pont-en-Auge Augustin", "Salvegas Etienne" ;
       
   146           olac:transcriber "Tanguy Noalig" ;
       
   147           dc:available "2013-11-04"^^dc:W3CDTF ;
       
   148           dc:created "2010-11-17"^^dc:W3CDTF ;
       
   149           dc:issued "2013-11-04T22:20:07+01:00"^^dc:W3CDTF ;
       
   150           dc:spatial [
       
   151             a edm:Place ;
       
   152             geo:lat "99.83975"^^xsd:float ;
       
   153             geo:long "25.3542"^^xsd:float ;
       
   154             skos:note "FR"^^dc:ISO3166, "France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier"@fr, "Other place very important"@fr ;
       
   155             owl:sameAs <http://vocab.getty.edu/tgn/1234567890>
       
   156           ] .
       
   157 
       
   158         <http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml>
       
   159           a edm:WebResource ;
       
   160           dc11:format "application/xml"^^dc:IMT ;
       
   161           dc:created "2010-11-17"^^dc:W3CDTF ;
       
   162           dc:issued "2013-11-04T22:20:07+01:00"^^dc:W3CDTF ;
       
   163           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
   164           dc:accessRights "Freely available for non-commercial use" ;
       
   165           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" .
       
   166 
       
   167         <http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xhtml>
       
   168           a edm:WebResource ;
       
   169           dc11:format "application/xhtml+xml"^^dc:IMT ;
       
   170           dc:created "2010-11-17"^^dc:W3CDTF ;
       
   171           dc:issued "2013-11-04T22:20:07+01:00"^^dc:W3CDTF ;
       
   172           dc:license <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
       
   173           dc:accessRights "Freely available for non-commercial use" ;
       
   174           dc11:rights "Copyright (c) 2012 Université d'Orléans/LLL" .
       
   175 
       
   176 EOT
       
   177     ];
    22     ];
   178 
    23 
   179     const TEST_INPUT_ID = "crdo-ESLO1_ENT_019";
    24     const TEST_INPUT_ID = "crdo-ESLO1_ENT_019";
   180     const TEST_GRAPH_URI = "http://corpusdelaparole.huma-num.fr/corpus/res/crdo-ESLO1_ENT_019";
    25     const TEST_GRAPH_URI = "http://corpusdelaparole.huma-num.fr/corpus/res/crdo-ESLO1_ENT_019";
   181     const TEST_CHO_URI = "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-ESLO1_ENT_019";
    26     const TEST_CHO_URI = "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-ESLO1_ENT_019";
   182 
    27 
   183 
    28 
   184     private $inputGraphes = [];
    29     private $inputGraphes = [];
   185     private $resGraph;
    30     private $resGraph;
   186     private $merger;
       
   187 
    31 
   188     function __construct(string $name = null) {
    32     function __construct(string $name = null) {
   189         parent::__construct($name);
    33         parent::__construct($name);
   190     }
    34     }
   191 
    35 
   192     public function setUp() {
    36     public function setUp() {
   193         parent::setUp();
    37         parent::setUp();
   194 
    38 
   195         foreach(CocoonSoundRdfMergerTest::TEST_INPUT_DOCS as $key => $inputDoc) {
    39         foreach(CocoonSoundRdfMergerTest::TEST_INPUT_DOCS as $key => $inputDoc) {
   196             $this->inputGraphes[$key] = new Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", $inputDoc);
    40             $this->inputGraphes[$key] = new Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", file_get_contents($inputDoc));
   197         }
    41         }
   198 
    42 
   199         $this->merger = new CocoonSoundRdfMerger();
       
   200         $this->resGraph = $this->merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
   201     }
    43     }
   202 
    44 
   203     public function tearDown() {
    45     public function tearDown() {
   204         parent::tearDown();
    46         parent::tearDown();
   205     }
    47     }
   209      *
    51      *
   210      * @return void
    52      * @return void
   211      */
    53      */
   212     public function testInit()
    54     public function testInit()
   213     {
    55     {
       
    56         $merger = new CocoonSoundRdfMerger();
       
    57         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
    58 
   214         $this->assertTrue(true);
    59         $this->assertTrue(true);
   215         //echo $this->resGraph->serialise('turtle');
    60         //echo $this->resGraph['NORMAL']->serialise('turtle');
   216     }
    61     }
   217 
    62 
   218     /**
    63     /**
   219      * test the result graph.
    64      * test the result graph.
   220      *
    65      *
   221      * @return void
    66      * @return void
   222      */
    67      */
   223     public function testResGraph() {
    68     public function testResGraph() {
   224         $this->assertNotNull($this->resGraph, "Res graph must not be null");
    69         $merger = new CocoonSoundRdfMerger();
   225         $this->assertEquals("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", $this->resGraph->getUri(), "graph uri must be equals to http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND");
    70         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
    71 
       
    72         $this->assertNotNull($this->resGraph['NORMAL'], "Res graph must not be null");
       
    73         $this->assertEquals("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", $this->resGraph['NORMAL']->getUri(), "graph uri must be equals to http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND");
   226     }
    74     }
   227 
    75 
   228     /**
    76     /**
   229      * test the merged Aggregation
    77      * test the merged Aggregation
   230      *
    78      *
   231      * @return void
    79      * @return void
   232      */
    80      */
   233     public function testAggregationResource() {
    81     public function testAggregationResource() {
   234         $aggregationResList = $this->resGraph->allOfType('http://www.openarchives.org/ore/terms/Aggregation');
    82         $merger = new CocoonSoundRdfMerger();
       
    83         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
    84 
       
    85         $aggregationResList = $this->resGraph['NORMAL']->allOfType('http://www.openarchives.org/ore/terms/Aggregation');
   235         $this->assertCount(1, $aggregationResList, "Only one Aggregation node");
    86         $this->assertCount(1, $aggregationResList, "Only one Aggregation node");
   236         $aggregationRes = $aggregationResList[0];
    87         $aggregationRes = $aggregationResList[0];
   237 
    88 
   238         $this->assertEquals("http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND",$aggregationRes->getUri(),"Aggregation node uri must be http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND");
    89         $this->assertEquals("http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND",$aggregationRes->getUri(),"Aggregation node uri must be http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND");
   239 
    90 
   240         $singleValuesRes = [
    91         $singleValuesRes = [
   241             'http://www.europeana.eu/schemas/edm/aggregatedCHO' => ['size'=>1, 'val' => $this->resGraph->resource("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND")],
    92             'http://www.europeana.eu/schemas/edm/aggregatedCHO' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND")],
   242             'http://www.europeana.eu/schemas/edm/provider' => ['size'=>1, 'val' => new Literal("Corpus de la Parole", "fr", null)],
    93             'http://www.europeana.eu/schemas/edm/provider' => ['size'=>1, 'val' => new Literal("Corpus de la Parole", "fr", null)],
   243             'http://www.europeana.eu/schemas/edm/dataProvider' => ['size'=>1, 'val' => $this->resGraph->resource("http://viaf.org/viaf/142432638")],
    94             'http://www.europeana.eu/schemas/edm/dataProvider' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://viaf.org/viaf/142432638")],
   244             'http://www.europeana.eu/schemas/edm/isShownAt' => ['size'=>1, 'val' => $this->resGraph->resource("http://corpusdelaparole.huma-num.fr/corpus-app#/detail/crdo-CFPP2000_35_SOUND")],
    95             'http://www.europeana.eu/schemas/edm/isShownAt' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://corpusdelaparole.huma-num.fr/corpus-app#/detail/crdo-CFPP2000_35_SOUND")],
   245             'http://www.europeana.eu/schemas/edm/isShownBy' => ['size'=>1, 'val' => $this->resGraph->resource("http://cocoon.huma-num.fr/data/archi/masters/372593.wav")],
    96             'http://www.europeana.eu/schemas/edm/isShownBy' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/data/archi/masters/372593.wav")],
   246             'http://www.europeana.eu/schemas/edm/rights' => ['size'=>1, 'val' => $this->resGraph->resource("http://creativecommons.org/licenses/by-nc-sa/4.0/")],
    97             'http://www.europeana.eu/schemas/edm/rights' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://creativecommons.org/licenses/by-nc-sa/4.0/")],
   247             'http://www.europeana.eu/schemas/edm/hasView' => ['size' => 4, 'val' => [
    98             'http://www.europeana.eu/schemas/edm/hasView' => ['size' => 4, 'val' => [
   248                 $this->resGraph->resource("http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav"),
    99                 $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav"),
   249                 $this->resGraph->resource("http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3"),
   100                 $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3"),
   250                 $this->resGraph->resource("http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml"),
   101                 $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml"),
   251                 $this->resGraph->resource("http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xhtml")
   102                 $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xhtml")
   252             ]]
   103             ]]
   253         ];
   104         ];
   254 
   105 
   255         foreach($singleValuesRes as $property => $resVal) {
   106         foreach($singleValuesRes as $property => $resVal) {
   256             $resList = $aggregationRes->all($this->inputGraphes['BASE']->resource($property));
   107             $resList = $aggregationRes->all($this->inputGraphes['BASE']->resource($property));
   269      * test web resources
   120      * test web resources
   270      *
   121      *
   271      * @return void
   122      * @return void
   272      */
   123      */
   273     public function testWebResources() {
   124     public function testWebResources() {
   274         $webResList = $this->resGraph->allOfType('http://www.europeana.eu/schemas/edm/WebResource');
   125         $merger = new CocoonSoundRdfMerger();
       
   126         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
   127 
       
   128         $webResList = $this->resGraph['NORMAL']->allOfType('http://www.europeana.eu/schemas/edm/WebResource');
   275 
   129 
   276         $this->assertCount(5, $webResList, "Must have 5 webResource");
   130         $this->assertCount(5, $webResList, "Must have 5 webResource");
   277     }
   131     }
   278 
   132 
   279 
   133 
   280     /**
   134     /**
   281     * Test one to one mapping spatial info
   135     * Test one to one mapping spatial info
   282     *
   136     *
   283     * @return void
   137     * @return void
   284     */
   138     */
       
   139 
   285     public function testProvidedCHOSpatial() {
   140     public function testProvidedCHOSpatial() {
   286         $providedCHO = $this->resGraph->get('edm:ProvidedCHO', '^rdf:type');
   141         $merger = new CocoonSoundRdfMerger();
       
   142         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
   143 
       
   144         $providedCHO = $this->resGraph['NORMAL']->get('edm:ProvidedCHO', '^rdf:type');
   287 
   145 
   288         $this->assertNotNull($providedCHO);
   146         $this->assertNotNull($providedCHO);
   289 
   147 
   290         $spatials = $providedCHO->all($this->resGraph->resource('http://purl.org/dc/terms/spatial'));
   148         $spatials = $providedCHO->all($this->resGraph['NORMAL']->resource('http://purl.org/dc/terms/spatial'));
   291 
   149 
   292         $this->assertCount(1, $spatials, "Must have only one spatial node");
   150         $this->assertCount(1, $spatials, "Must have only one spatial node");
   293         $spatial = $spatials[0];
   151         $spatial = $spatials[0];
   294         $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
   152         $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
   295         $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");
   153         $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");
   316         $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
   174         $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
   317         $this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
   175         $this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
   318     }
   176     }
   319 
   177 
   320 
   178 
       
   179     public function testProvidedCHOSpatialNoSource() {
       
   180         $merger = new CocoonSoundRdfMerger();
       
   181         $this->resGraph['NO_SPATIAL_SRC'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE_NO_SPATIAL']);
       
   182         $providedCHO = $this->resGraph['NO_SPATIAL_SRC']->get('edm:ProvidedCHO', '^rdf:type');
       
   183 
       
   184         //print($this->resGraph['NO_SPATIAL_SRC']->dump('ttl'));
       
   185 
       
   186         $this->assertNotNull($providedCHO);
       
   187 
       
   188         $spatials = $providedCHO->all($this->resGraph['NO_SPATIAL_SRC']->resource('http://purl.org/dc/terms/spatial'));
       
   189 
       
   190         $this->assertCount(1, $spatials, "Must have only one spatial node");
       
   191         $spatial = $spatials[0];
       
   192         $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
       
   193         $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");
       
   194 
       
   195         $lats = $spatial->all('geo:lat');
       
   196         $this->assertCount(1, $lats, "One latitude");
       
   197         $this->assertInstanceOf("EasyRdf\Literal", $lats[0], "Latitude must be a litteral");
       
   198         $this->assertEquals(Literal::create("48.83975", null, 'xsd:float'), $lats[0], "lat must be '48.83975'^^xsd:float");
       
   199 
       
   200         $longs = $spatial->all('geo:long');
       
   201         $this->assertCount(1, $longs, "One longitude");
       
   202         $this->assertInstanceOf("EasyRdf\Literal", $longs[0], "Longitude must be a litteral");
       
   203         $this->assertEquals(Literal::create("2.3542", null, 'xsd:float'), $longs[0], "long must be '2.3542'^^xsd:float");
       
   204 
       
   205         $notes = $spatial->all('skos:note');
       
   206         $this->assertCount(2, $notes, "2 notes");
       
   207         $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $notes, "Notes mus be only literals");
       
   208         $this->assertEquals(Literal::create("FR", null, "dc:ISO3166"), $notes[0], "notes contains 'FR'^^dc:ISO3166");
       
   209         $this->assertEquals(Literal::create("France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier", "fr", null), $notes[1], "notes contains 'France, Centre, Loiret, Orléans'@fr");
       
   210 
       
   211         $sameas = $spatial->all('owl:sameAs');
       
   212         $this->assertCount(1, $sameas, "1 same as");
       
   213         $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
       
   214         $this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
       
   215     }
       
   216 
       
   217     public function testProvidedCHOSpatialNoBase() {
       
   218         $merger = new CocoonSoundRdfMerger();
       
   219         $this->resGraph['NO_SPATIAL_BASE'] = $merger->mergeGraph($this->inputGraphes['BASE_NO_SPATIAL'], $this->inputGraphes['SOURCE']);
       
   220 
       
   221         $providedCHO = $this->resGraph['NO_SPATIAL_BASE']->get('edm:ProvidedCHO', '^rdf:type');
       
   222 
       
   223         //print($this->resGraph['NO_SPATIAL_SRC']->dump('ttl'));
       
   224 
       
   225         $this->assertNotNull($providedCHO);
       
   226 
       
   227         $spatials = $providedCHO->all($this->resGraph['NO_SPATIAL_BASE']->resource('http://purl.org/dc/terms/spatial'));
       
   228 
       
   229         $this->assertCount(1, $spatials, "Must have only one spatial node");
       
   230         $spatial = $spatials[0];
       
   231         $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
       
   232         $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");
       
   233 
       
   234         $lats = $spatial->all('geo:lat');
       
   235         $this->assertCount(1, $lats, "One latitude");
       
   236         $this->assertInstanceOf("EasyRdf\Literal", $lats[0], "Latitude must be a litteral");
       
   237         $this->assertEquals(Literal::create("99.83975", null, 'xsd:float'), $lats[0], "lat must be '99.83975'^^xsd:float");
       
   238 
       
   239         $longs = $spatial->all('geo:long');
       
   240         $this->assertCount(1, $longs, "One longitude");
       
   241         $this->assertInstanceOf("EasyRdf\Literal", $longs[0], "Longitude must be a litteral");
       
   242         $this->assertEquals(Literal::create("25.3542", null, 'xsd:float'), $longs[0], "long must be '25.3542'^^xsd:float");
       
   243 
       
   244         $notes = $spatial->all('skos:note');
       
   245         $this->assertCount(3, $notes, "3 notes");
       
   246         $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $notes, "Notes mus be only literals");
       
   247         $this->assertEquals(Literal::create("FR", null, "dc:ISO3166"), $notes[0], "notes contains 'FR'^^dc:ISO3166");
       
   248         $this->assertEquals(Literal::create("France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier", "fr", null), $notes[1], "notes contains 'France, Centre, Loiret, Orléans'@fr");
       
   249         $this->assertEquals(Literal::create("Other place very important", "fr", null), $notes[2], "notes contains 'Other place very important'@fr");
       
   250 
       
   251         $sameas = $spatial->all('owl:sameAs');
       
   252         $this->assertCount(1, $sameas, "1 same as");
       
   253         $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
       
   254         $this->assertEquals('http://vocab.getty.edu/tgn/1234567890', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/1234567890");
       
   255     }
       
   256 
       
   257 
   321     /**
   258     /**
   322      * Test one to one mapping
   259      * Test one to one mapping
   323      *
   260      *
   324      * @return void
   261      * @return void
   325      */
   262      */
   326     public function testProvidedCHOSingleproperty() {
   263     public function testProvidedCHOSingleproperty() {
       
   264         $merger = new CocoonSoundRdfMerger();
       
   265         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
   327 
   266 
   328         $properties = [
   267         $properties = [
   329             "http://purl.org/dc/elements/1.1/title",
   268             "http://purl.org/dc/elements/1.1/title",
   330             "http://purl.org/dc/elements/1.1/identifier",
   269             "http://purl.org/dc/elements/1.1/identifier",
   331             "http://purl.org/dc/terms/extent",
   270             "http://purl.org/dc/terms/extent",
   332             "http://purl.org/dc/terms/available",
   271             "http://purl.org/dc/terms/available",
   333             "http://purl.org/dc/terms/created",
   272             "http://purl.org/dc/terms/created",
   334             "http://purl.org/dc/terms/issued"
   273             "http://purl.org/dc/terms/issued"
   335         ];
   274         ];
   336 
   275 
   337         $providedCHO = $this->resGraph->get('edm:ProvidedCHO', '^rdf:type');
   276         $providedCHO = $this->resGraph['NORMAL']->get('edm:ProvidedCHO', '^rdf:type');
   338         $baseNode = $this->inputGraphes['BASE']->get('edm:ProvidedCHO', '^rdf:type');
   277         $baseNode = $this->inputGraphes['BASE']->get('edm:ProvidedCHO', '^rdf:type');
   339 
   278 
   340         $this->assertNotNull($providedCHO);
   279         $this->assertNotNull($providedCHO);
   341         $this->assertNotNull($baseNode);
   280         $this->assertNotNull($baseNode);
   342 
   281 
   343         foreach ($properties as $prop) {
   282         foreach ($properties as $prop) {
   344             $outputValuesStr = [];
   283             $outputValuesStr = [];
   345             foreach($providedCHO->all($this->resGraph->resource($prop)) as $outputValue) {
   284             foreach($providedCHO->all($this->resGraph['NORMAL']->resource($prop)) as $outputValue) {
   346                 array_push($outputValuesStr, strval($outputValue));
   285                 array_push($outputValuesStr, strval($outputValue));
   347             }
   286             }
   348             $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop");
   287             $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop");
   349             foreach ($baseNode->all($this->inputGraphes['BASE']->resource($prop)) as $value) {
   288             foreach ($baseNode->all($this->inputGraphes['BASE']->resource($prop)) as $value) {
   350                 $this->assertContains(strval($value), $outputValuesStr, "$prop not found in output graph");
   289                 $this->assertContains(strval($value), $outputValuesStr, "$prop not found in output graph");
   352         }
   291         }
   353 
   292 
   354     }
   293     }
   355 
   294 
   356     public function testRightsWebResource() {
   295     public function testRightsWebResource() {
       
   296         $merger = new CocoonSoundRdfMerger();
       
   297         $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);
       
   298 
   357         $properties = [
   299         $properties = [
   358             "http://purl.org/dc/elements/1.1/rights",
   300             "http://purl.org/dc/elements/1.1/rights",
   359             'http://purl.org/dc/terms/license',
   301             'http://purl.org/dc/terms/license',
   360             'http://purl.org/dc/terms/accessRights',
   302             'http://purl.org/dc/terms/accessRights',
   361         ];
   303         ];
   362 
   304 
   363         $webResourceList = $this->resGraph->all('edm:WebResource', '^rdf:type');
   305         $webResourceList = $this->resGraph['NORMAL']->all('edm:WebResource', '^rdf:type');
   364 
   306 
   365         //just check that they have all these resources.
   307         //just check that they have all these resources.
   366         //TODO: check that the same rights are kept (difficult)
   308         //TODO: check that the same rights are kept (difficult)
   367         foreach ($webResourceList as $webResource) {
   309         foreach ($webResourceList as $webResource) {
   368             foreach ($properties as $prop) {
   310             foreach ($properties as $prop) {
   369                 $outputValuesStr = [];
   311                 $outputValuesStr = [];
   370                 foreach($webResource->all($this->resGraph->resource($prop)) as $outputValue) {
   312                 foreach($webResource->all($this->resGraph['NORMAL']->resource($prop)) as $outputValue) {
   371                     array_push($outputValuesStr, strval($outputValue));
   313                     array_push($outputValuesStr, strval($outputValue));
   372                 }
   314                 }
   373                 $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop");
   315                 $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop");
   374             }
   316             }
   375         }
   317         }