[skos] Add a new vocabulary for SEDA 0.2 languages
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Tue, 14 Nov 2017 17:19:25 +0100
changeset 2882 1d5d515a66d0
parent 2877 4fce0fa436c4
child 2883 17067f4de8d1
[skos] Add a new vocabulary for SEDA 0.2 languages that will be used by default. See documentation on how this vocabulary has been built and how to restore previous behaviour. Closes extranet #40281602
cubicweb_seda/dataimport.py
cubicweb_seda/migration/0.12.0_Any.py
cubicweb_seda/migration/data/languages-seda02.csv
doc/vocabulaires.rst
test/test_dataimport.py
--- a/cubicweb_seda/dataimport.py	Tue Nov 14 16:37:01 2017 +0100
+++ b/cubicweb_seda/dataimport.py	Tue Nov 14 17:19:25 2017 +0100
@@ -87,7 +87,7 @@
      'seda_classification_level', (),
      'classification_levels.csv'),
     (u'Langues (ISO-639-3)',
-     ('seda_language_to', 'seda_description_language_to'), (),
+     (), (),
      'languages.csv'),
     (u"Algorithmes d'empreinte",
      'seda_algorithm', 'SEDABinaryDataObject',
@@ -96,6 +96,9 @@
     (u'Catégories de fichier',
      'file_category', (),
      'file_categories.csv'),
+    (u'Langues restreintes (compatible SEDA 0.2)',
+     ('seda_language_to', 'seda_description_language_to'), (),
+     'languages-seda02.csv'),
 )]
 
 
--- a/cubicweb_seda/migration/0.12.0_Any.py	Tue Nov 14 16:37:01 2017 +0100
+++ b/cubicweb_seda/migration/0.12.0_Any.py	Tue Nov 14 17:19:25 2017 +0100
@@ -1,3 +1,5 @@
+from cubicweb_seda.dataimport import import_seda_schemes
+
 rql('SET X compat_list CL + ", RNG" WHERE X compat_list CL')
 commit()
 
@@ -11,3 +13,8 @@
 sync_schema_props_perms('seda_mime_type_to')
 sync_schema_props_perms('seda_format_id_to')
 sync_schema_props_perms('seda_data_object_reference_id')
+
+rql('DELETE CS scheme_relation_type RT WHERE '
+    'RT name IN ("seda_language_to", "seda_description_language_to")')
+commit()
+import_seda_schemes(cnx)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb_seda/migration/data/languages-seda02.csv	Tue Nov 14 17:19:25 2017 +0100
@@ -0,0 +1,156 @@
+#;$id;libellé SEDA;libellé SEDA 0.2;libellé anglais
+type;url;string;string;string
+lang;;seda;seda-02;en
+url;skos:Concept;skos:prefLabel;skos:prefLabel;skos:prefLabel
+;;ita;it;Italian
+;;ewe;ee;Ewe
+;;isl;is;Icelandic
+;;afr;af;Afrikaans
+;;ces;cs;Czech
+;;bel;be;Belarusian
+;;lav;lv;Latvian
+;;vie;vi;Vietnamese
+;;amh;am;Amharic
+;;hun;hu;Hungarian
+;;ava;av;Avaric
+;;ssw;ss;Swati
+;;cor;kw;Cornish
+;;ben;bn;Bengali
+;;slv;sl;Slovenian
+;;ipk;ik;Inupiaq
+;;som;so;Somali
+;;rus;ru;Russian
+;;wol;wo;Wolof
+;;kur;ku;Kurdish
+;;san;sa;Sanskrit
+;;smo;sm;Samoan
+;;jav;jv;Javanese
+;;kaz;kk;Kazakh
+;;mal;ml;Malayalam
+;;ori;or;Oriya
+;;aar;aa;Afar
+;;bak;ba;Bashkir
+;;glv;gv;Manx
+;;dan;da;Danish
+;;nau;na;Nauru
+;;asm;as;Assamese
+;;gle;ga;Irish
+;;srd;sc;Sardinian
+;;che;ce;Chechen
+;;ful;ff;Fulah
+;;lub;lu;Luba-Katanga
+;;guj;gu;Gujarati
+;;her;hz;Herero
+;;epo;eo;Esperanto
+;;kin;rw;Kinyarwanda
+;;mlt;mt;Maltese
+;;oji;oj;Ojibwa
+;;ven;ve;Venda
+;;wln;wa;Walloon
+;;kat;ka;Georgian
+;;lat;la;Latin
+;;pli;pi;Pali
+;;mlg;mg;Malagasy
+;;ukr;uk;Ukrainian
+;;yid;yi;Yiddish
+;;lit;lt;Lithuanian
+;;tso;ts;Tsonga
+;;kas;ks;Kashmiri
+;;ara;ar;Arabic
+;;ton;to;Tonga (Tonga Islands)
+;;zul;zu;Zulu
+;;aka;ak;Akan
+;;twi;tw;Twi
+;;fry;fy;Western Frisian
+;;cym;cy;Welsh
+;;ave;ae;Avestan
+;;glg;gl;Galician
+;;tam;ta;Tamil
+;;jpn;ja;Japanese
+;;kau;kr;Kanuri
+;;uzb;uz;Uzbek
+;;ind;id;Indonesian
+;;aze;az;Azerbaijani
+;;mya;my;Burmese
+;;est;et;Estonian
+;;fao;fo;Faroese
+;;cos;co;Corsican
+;;srp;sr;Serbian
+;;tir;ti;Tigrinya
+;;pol;pl;Polish
+;;nep;ne;Nepali
+;;tsn;tn;Tswana
+;;fij;fj;Fijian
+;;deu;de;German
+;;tur;tr;Turkish
+;;slk;sk;Slovak
+;;arg;an;Aragonese
+;;kan;kn;Kannada
+;;cha;ch;Chamorro
+;;cre;cr;Cree
+;;bod;bo;Tibetan
+;;tat;tt;Tatar
+;;grn;gn;Guarani
+;;kor;ko;Korean
+;;ndo;ng;Ndonga
+;;lug;lg;Ganda
+;;oci;oc;Occitan (post 1500)
+;;orm;om;Oromo
+;;bis;bi;Bislama
+;;sqi;sq;Albanian
+;;mkd;mk;Macedonian
+;;ina;ia;Interlingua (International Auxiliary Language Association)
+;;fin;fi;Finnish
+;;run;rn;Rundi
+;;mon;mn;Mongolian
+;;lin;ln;Lingala
+;;urd;ur;Urdu
+;;hau;ha;Hausa
+;;sme;se;Northern Sami
+;;tha;th;Thai
+;;bos;bs;Bosnian
+;;fra;fr;French
+;;snd;sd;Sindhi
+;;tuk;tk;Turkmen
+;;sag;sg;Sango
+;;khm;km;Central Khmer
+;;bul;bg;Bulgarian
+;;roh;rm;Romansh
+;;sna;sn;Shona
+;;iku;iu;Inuktitut
+;;tel;te;Telugu
+;;que;qu;Quechua
+;;tgk;tg;Tajik
+;;mah;mh;Marshallese
+;;kon;kg;Kongo
+;;sun;su;Sundanese
+;;hrv;hr;Croatian
+;;fas;fa;Persian
+;;yor;yo;Yoruba
+;;bam;bm;Bambara
+;;dzo;dz;Dzongkha
+;;tah;ty;Tahitian
+;;ido;io;Ido
+;;chv;cv;Chuvash
+;;mar;mr;Marathi
+;;hye;hy;Armenian
+;;swe;sv;Swedish
+;;nor;no;Norwegian
+;;por;pt;Portuguese
+;;xho;xh;Xhosa
+;;tgl;tl;Tagalog
+;;zho;zh;Chinese
+;;eus;eu;Basque
+;;bre;br;Breton
+;;kom;kv;Komi
+;;hin;hi;Hindi
+;;eng;en;English
+;;hmo;ho;Hiri Motu
+;;aym;ay;Aymara
+;;abk;ab;Abkhazian
+;;lao;lo;Lao
+;;mri;mi;Maori
+;;heb;he;Hebrew
+;;ibo;ig;Igbo
+;;spa;es;Spanish
+;;ell;el;Modern Greek (1453-)
--- a/doc/vocabulaires.rst	Tue Nov 14 16:37:01 2017 +0100
+++ b/doc/vocabulaires.rst	Tue Nov 14 17:19:25 2017 +0100
@@ -67,3 +67,71 @@
 avec les vocabulaires sélectionnés car les valeurs exportées seront
 l'intersection entre les valeurs spécifiées via la catégorie / extension du
 fichier et les valeurs disponibles dans l'un ou l'autre vocabulaire.
+
+Vocabulaires de contrôle des langues
+------------------------------------
+
+En l'état 2 vocabulaires sont fournis pour les langues : l'un correspond à la
+liste ISO-639-3 et contient plus de 7000 langues ; l'autre est une restriction
+de ce vocabulaire ne contenant que des langues dont le code à deux lettres est
+autorisé par la version 0.2 du SEDA. Celui-ci a été construit par extraction des
+codes ISO-639-3 de SEDA 1 puis filtrage sur les libellés spécifiés dans le
+schéma SEDA 0.2 et insertion du code à deux lettres correspondant.
+
+À l'issue de ce traitement automatique, les langues suivantes présentes en SEDA
+0.2 n'était pas représentées dans le vocabulaire ainsi créé :
+
+* Bihari languages
+* Bokmål, Norwegian; Norwegian Bokmål
+* Catalan; Valencian
+* Chichewa; Chewa; Nyanja
+* Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic
+* Divehi; Dhivehi; Maldivian
+* Dutch; Flemish
+* Gaelic; Scottish Gaelic
+* Greek, Modern (1453-)
+* Haitian; Haitian Creole
+* Interlingue; Occidental
+* Kalaallisut; Greenlandic
+* Kikuyu; Gikuyu
+* Kirghiz; Kyrgyz
+* Kuanyama; Kwanyama
+* Limburgan; Limburger; Limburgish
+* Luxembourgish; Letzeburgesch
+* Malay
+* Navajo; Navaho
+* Ndebele, North; North Ndebele
+* Ndebele, South; South Ndebele
+* Norwegian Nynorsk; Nynorsk, Norwegian
+* Ossetian; Ossetic
+* Panjabi; Punjabi
+* Pushto; Pashto
+* Romanian; Moldavian; Moldovan
+* Sichuan Yi; Nuosu
+* Sinhala; Sinhalese
+* Sotho, Southern
+* Spanish; Castilian
+* Swahili
+* Uighur; Uyghur
+* Volapük
+* Zhuang; Chuang
+
+Les codes pour l'espagnol et le grec moderne ont été ajoutés manuellement, les
+autres ont été ignorées pour le moment.
+
+Si vous souhaitez utiliser le vocabulaire complet, c'est possible en tapant les
+commandes suivantes dans un *shell cubicweb* : ::
+
+  rql('DELETE CS scheme_relation_type RT WHERE '
+      'RT name IN ("seda_language_to", "seda_description_language_to")')
+  rql('SET CS scheme_relation_type RT WHERE '
+      'CS name "Langues (ISO-639-3)", '
+      'RT name IN ("seda_language_to", "seda_description_language_to")')
+  commit()
+
+sachant qu'en faisant ceci vous risquez de générer des profils SEDA 0.2
+invalides car utilisant des codes à deux lettres inconnus de cette version du
+SEDA. Il faudrait pour palier à ce problème retirer du vocabulaire la langue
+'seda-02' fournissant un code non supporté et améliorer la gestion de ce genre
+d'erreur dans l'application.
+
--- a/test/test_dataimport.py	Tue Nov 14 16:37:01 2017 +0100
+++ b/test/test_dataimport.py	Tue Nov 14 17:19:25 2017 +0100
@@ -25,7 +25,7 @@
     def test_import_seda_schemes(self):
         with self.admin_access.cnx() as cnx:
             dataimport.import_seda_schemes(cnx, lcsv_import=dataimport.lcsv_check)
-            self.assertEqual(len(cnx.find('ConceptScheme')), 19)
+            self.assertEqual(len(cnx.find('ConceptScheme')), 20)
 
 
 if __name__ == '__main__':