# HG changeset patch # User Chloe Laisne # Date 1476640197 -19800 # Node ID 766af1228b05dcaedef5290e49a1a842aa28835a # Parent 4a3899b6a7edfce0c31e3d9a07e0368497f804a2# Parent 8a29098c8273b56910ad735a67e3bbd3a400fe52 Merge diff -r 4a3899b6a7ed -r 766af1228b05 .hgignore --- a/.hgignore Sun Oct 16 22:23:31 2016 +0530 +++ b/.hgignore Sun Oct 16 23:19:57 2016 +0530 @@ -35,6 +35,7 @@ ^server/src/public/css ^server/src/public/js/vendor ^server/src/public/fonts +^server/src/public/corpus-app ^server/bo_client/.dir-locals.el$ ^server/bo_client/.projectile$ ^server/bo_client/node_modules diff -r 4a3899b6a7ed -r 766af1228b05 build/build_rpm.sh --- a/build/build_rpm.sh Sun Oct 16 22:23:31 2016 +0530 +++ b/build/build_rpm.sh Sun Oct 16 23:19:57 2016 +0530 @@ -1,6 +1,6 @@ #!/usr/bin/env bash -pushd /vagrant/root/var/www/corpusdelaparole/corpus/ +pushd /vagrant/root/var/www/corpusdelaparole/corpus-back/ echo "---> Launching composer" php composer.phar install --ignore-platform-reqs -o echo "---> Composer done" diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/README.md --- a/cms/app-client/README.md Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/README.md Sun Oct 16 23:19:57 2016 +0530 @@ -7,16 +7,11 @@ You will need the following things properly installed on your computer. -* [Git](http://git-scm.com/) * [Node.js](http://nodejs.org/) (with NPM) -* [Bower](http://bower.io/) -* [Ember CLI](http://www.ember-cli.com/) * [PhantomJS](http://phantomjs.org/) ## Installation -* `git clone ` this repository -* change into the new directory * `npm install` * `bower install` diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/adapters/application.js --- a/cms/app-client/app/adapters/application.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/adapters/application.js Sun Oct 16 23:19:57 2016 +0530 @@ -9,11 +9,13 @@ export default RESTAdapter.extend({ - namespace: ENV.rootURL.replace(/\/$/,"")+'/api/v1', + namespace: (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,"")+'/api/v1', buildURL: function(modelName, id) { if(modelName === 'transcript') { - return this.urlPrefix() + '/documents/' + id + '/' + modelName; + return this.urlPrefix() + '/documents/' + encodeURIComponent(encodeURIComponent(id)) + '/' + modelName; + } else if (modelName === 'document' && id) { + return this.urlPrefix() + '/documents/' + encodeURIComponent(encodeURIComponent(id)) ; } return this._super(...arguments); }, diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/components/discourses-component.js --- a/cms/app-client/app/components/discourses-component.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/components/discourses-component.js Sun Oct 16 23:19:57 2016 +0530 @@ -18,9 +18,10 @@ didRender: function() { var self = this; - var baseURL = ENV.rootURL.replace(/\/$/,"")+'/api/v1/stats'; + var baseURL = (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,"")+'/api/v1/stats'; - d3.json(baseURL + "/discourses", function(discourses) { + d3.json(baseURL + "/discourses", function(data) { + var discourses = data['discourses']; var array = Object.keys(discourses).map(function (key) { return discourses[key].count; }); var oldMin = Math.min(...array), oldMax = Math.max(...array); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/components/visu-langues.js --- a/cms/app-client/app/components/visu-langues.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/components/visu-langues.js Sun Oct 16 23:19:57 2016 +0530 @@ -15,13 +15,14 @@ didInsertElement: function(){ var self = this; - var baseurl = ENV.rootURL.replace(/\/$/,"")+'/api/v1'; + var baseurl = (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,"")+'/api/v1'; - d3.json(baseurl+"/stats/languages", function(languages) { + d3.json(baseurl+"/stats/languages", function(data) { var margin = { top: 30, right: 0, bottom: 0, left: 0 }; var width = Ember.$('#' + self.get('elementId')).width(); var height = Ember.$('#' + self.get('elementId')).height() - margin.top - margin.bottom; + var languages = data['languages']; var array = Object.keys(languages).map(function (key) { return languages[key]; }); var oldMin = Math.min(...array), oldMax = Math.max(...array); @@ -75,6 +76,8 @@ d._children = d.children; if(d.children) { d.value = d.children.reduce(function(p, v) { return p + accumulate(v); }, 0); + } else if (d.values) { + d.value = d.values.reduce(function(p, v) { return p + (languages[v] ? languages[v] : 0); }, 0); } else { d.value = languages[d.id] ? languages[d.id] : 0; } @@ -88,10 +91,14 @@ function getCount(node, count = 0) { var c = languages[node.id]; if(typeof c === 'undefined') { - node._children.forEach(function(child) { - count = getCount(child, count); - }); - return count; + if(node._children) { + node._children.forEach(function(child) { + count = getCount(child, count); + }); + } else if(node.values) { + count = node.values.reduce(function(p, v) { return p + (languages[v] ? languages[v] : 0); }, count); + } + return count; } else { return count + c; } diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/controllers/application.js --- a/cms/app-client/app/controllers/application.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/controllers/application.js Sun Oct 16 23:19:57 2016 +0530 @@ -9,9 +9,9 @@ }), queryParams: ['location', 'date', 'notice', { - language: 'langue', - discourse: 'discours', - theme: 'thematique' + language: 'language', + discourse: 'discourse', + theme: 'theme' }], date: [], @@ -71,7 +71,7 @@ } }); if(!this.arraysEqual(this.get('date').toArray(), intervals)) { - this.set('date', intervals); + this.set('date', intervals); } }), @@ -93,14 +93,14 @@ return true; }, - + itemObserver: Ember.observer('player.item', function() { var self = this; this.store.findRecord('document', this.get('player').get('item'), { reload: true }).then(function(model){ self.get('player').set('model', model); if (self.get('player').get('model').get('transcript')) { - self.store.findRecord('transcript', encodeURIComponent(self.get('player').get('item'))).then(function(model) { + self.store.findRecord('transcript', self.get('player').get('item')).then(function(model) { self.get('player').set('transcript', model); }); } else { @@ -122,7 +122,7 @@ }), noticeModelObserver: Ember.observer('noticeModel', function() { if (!this.get('noticeModel')) { - this.set('notice', null); + this.set('notice', null); } }), diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/models/document.js --- a/cms/app-client/app/models/document.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/models/document.js Sun Oct 16 23:19:57 2016 +0530 @@ -7,7 +7,7 @@ uri: DS.attr('string'), issued: DS.attr('date'), title: DS.attr('string'), - language: DS.attr('string'), + languages: DS.attr({ defaultValue: function() { return []; } }), publisher: DS.attr('string'), transcript_url: DS.attr('string'), transcript: DS.attr({ defaultValue: function() { return {}; } }), diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/serializers/geostat.js --- a/cms/app-client/app/serializers/geostat.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/serializers/geostat.js Sun Oct 16 23:19:57 2016 +0530 @@ -4,7 +4,7 @@ normalizeResponse: function(store, primaryModelClass, payload) { var data = []; - Object.keys(payload).forEach(function(key) { + Object.keys(payload['geostats']).forEach(function(key) { data.push({ 'id': key, 'type': 'geostat', @@ -18,4 +18,4 @@ }; } -}); \ No newline at end of file +}); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/serializers/theme.js --- a/cms/app-client/app/serializers/theme.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/serializers/theme.js Sun Oct 16 23:19:57 2016 +0530 @@ -4,13 +4,14 @@ normalizeResponse: function(store, primaryModelClass, payload) { var data = []; - Object.keys(payload).forEach(function(key) { + var themes = payload['themes']; + Object.keys(themes).forEach(function(key) { data.push({ 'id': key, 'type': 'theme', 'attributes': { - 'label': payload[key].label, - 'count': payload[key].count + 'label': themes[key].label, + 'count': themes[key].count } }); }); @@ -19,4 +20,4 @@ }; } -}); \ No newline at end of file +}); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/services/constants.js --- a/cms/app-client/app/services/constants.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/services/constants.js Sun Oct 16 23:19:57 2016 +0530 @@ -83,8 +83,9 @@ }; const LANGUAGES_TREEMAP = { - "name": "Global", - "children": [ +// "id": "corpus-global", + "name": "Global", + "children": [ { "id": "http://lexvo.org/id/iso639-3/fra", "name": "Français", @@ -107,15 +108,17 @@ }, { "id": "http://lexvo.org/id/iso639-3/und", - "name": "Undetermined", + "name": "Indéterminée", }, { + "id": "corpus-regionals", "name": "Langues régionales", // (franccomtois,wallon, champenois, picard, normand, gallo,poitevin-saintongeais [dans ses deux variétés : poitevinet saintongeais], lorrain, bourguignon-morvandiau) "children": [ { - "id": "http://lexvo.org/id/iso639-3/pcd", + "id": "corpus-oil", "name": "Langues d'oïl", + "values": ["http://lexvo.org/id/iso639-3/pcd",] }, { "id": "http://lexvo.org/id/iso639-3/frp", @@ -126,21 +129,23 @@ "name": "Corse", }, { - "name": "Les Creoles", + "id": "corpus-creoles", + "name": "Les Créoles", "children": [ { "id": "http://lexvo.org/id/iso639-3/rcf", - "name": "Creole de la Réunion", + "name": "Créole de la Réunion", }, { "id": "http://lexvo.org/id/iso639-3/gcf", - "name": "Creole de la Guadeloupe", + "name": "Créole de la Guadeloupe", } ] } ] }, { + "id": "corpus-non-territorials", "name": "Langues non territoriales", "children": [ { @@ -178,6 +183,7 @@ ] }, { + "id": "corpus-guyane", "name": "Guyane", "children": [ { @@ -207,6 +213,7 @@ ] }, { + "id": "corpus-mayotte", "name": "Mayotte", "children": [ { @@ -220,6 +227,7 @@ ] }, { + "id": "corpus-polynesia", "name": "Polynésie française", "children": [ { @@ -229,6 +237,7 @@ ] }, { + "id": "corpus-wallis-futuna", "name": "Wallis et Futuna", "children": [ { @@ -242,6 +251,7 @@ ] }, { + "id": "corpus-new-caledonia", "name": "Nouvelle-Calédonie", "children": [ { diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/templates/components/notice-component.hbs --- a/cms/app-client/app/templates/components/notice-component.hbs Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/templates/components/notice-component.hbs Sun Oct 16 23:19:57 2016 +0530 @@ -13,7 +13,7 @@ Langue - {{ doc-language url=item.language class="language"}}Share + {{#each item.languages as |lang index|}}{{if index ", "}}{{ doc-language url=lang class="language"}}Share{{/each}} Sujet{{#if (if-operator item.computedSubjects.length '>' 1)}}s{{/if}} diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/templates/components/player-component.hbs --- a/cms/app-client/app/templates/components/player-component.hbs Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/templates/components/player-component.hbs Sun Oct 16 23:19:57 2016 +0530 @@ -28,7 +28,7 @@

{{ item.title }} - {{doc-language class="language" url=item.language}} + {{#each model.languages as |lang index|}}{{if index ", "}}{{doc-language url=lang class="language"}}{{/each}}

{{item.publishers_disp}} diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/templates/components/playlist-component.hbs --- a/cms/app-client/app/templates/components/playlist-component.hbs Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/templates/components/playlist-component.hbs Sun Oct 16 23:19:57 2016 +0530 @@ -26,7 +26,7 @@ {{ document.title }}

{{document.publishers_disp}} - {{doc-language class="language" url=document.language}} + {{#each model.languages as |lang index|}}{{if index ", "}}{{doc-language url=lang class="language"}}{{/each}}
{{/each}} diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/app/templates/tabs/detail.hbs --- a/cms/app-client/app/templates/tabs/detail.hbs Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/app/templates/tabs/detail.hbs Sun Oct 16 23:19:57 2016 +0530 @@ -4,7 +4,7 @@

Titre {{model.title}}

-

Langue {{doc-language url=model.language}}

+

Langue {{#each model.languages as |lang index|}}{{if index ", "}}{{doc-language url=lang}}{{/each}}

Enregistré le {{model.modified}}

Interviewer {{model.publishers_disp}}

Description {{model.description}}

diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/config/environment.js --- a/cms/app-client/config/environment.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/config/environment.js Sun Oct 16 23:19:57 2016 +0530 @@ -14,13 +14,12 @@ } }, APP: { - baseStatic: '' + backRootURL: '/corpus/', // Here you can pass flags/options to your application instance // when it is created } }; if (environment === 'development') { - ENV.APP.baseStatic = ''; ENV.contentSecurityPolicy = { 'default-src': "'none'", 'script-src': "'self' *", @@ -37,9 +36,13 @@ ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; ENV.APP.rootElement = '#ember-testing'; + ENV.APP.backRootURL = '/'; } + if (environment === 'production') { - ENV.APP.baseStatic = '/modules/corpus/app-client/'; + ENV.rootURL = '/corpus-app/'; + ENV.APP.backRootURL = '/corpus-back/'; } + return ENV; -}; \ No newline at end of file +}; diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/config.js --- a/cms/app-client/mirage/config.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/config.js Sun Oct 16 23:19:57 2016 +0530 @@ -13,7 +13,7 @@ */ // this.urlPrefix = ''; // make this `http://localhost:8080`, for example, if your API is on a different server // this.namespace = ''; // make this `api`, for example, if your API is namespaced - this.namespace = ENV.rootURL.replace(/\/$/,'')+'/api/v1'; + this.namespace = (ENV.APP.backRootURL || ENV.rootURL).replace(/\/$/,'')+'/api/v1'; // this.timing = 400; // delay for each request, automatically set to 0 during testing this.get('/documents', function({ documents }) { @@ -21,12 +21,12 @@ }); this.get('/documents/:id', ({documents}, request) => { - let id = decodeURIComponent(request.params.id); + let id = decodeURIComponent(decodeURIComponent(request.params.id)); return documents.find(id); }); this.get('/documents/:id/transcript', ({transcripts}, request) => { - let id = decodeURIComponent(request.params.id); + let id = decodeURIComponent(decodeURIComponent(request.params.id)); return transcripts.find(id).transcript; }); @@ -44,7 +44,7 @@ var langIds = decodeURIComponent(request.params.ids); var resMap = _.reduce(langIds.split(','), function(res, id) { var fullId = id; - if(!_.startsWith(fullId, constants.LEXVO_BASE_URL)) { + if(!_.startsWith(fullId, constants.LEXVO_BASE_URL) && !_.startsWith(fullId, constants.LANGUAGES_NODE_PREFIX)) { fullId = constants.LEXVO_BASE_URL + id; } var lexvoRes = lexvos.find(fullId); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/fixtures/documents.js --- a/cms/app-client/mirage/fixtures/documents.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/fixtures/documents.js Sun Oct 16 23:19:57 2016 +0530 @@ -3,7 +3,7 @@ "id": "11280.100/crdo-UVE_MOCIKA_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-UVE_MOCIKA_SOUND", "title": "The two hermit crabs and the coconut crab", - "language": "http://lexvo.org/id/iso639-3/uve", + "languages": [ "http://lexvo.org/id/iso639-3/uve" ], "modified": "2002-02-20", "issued": "2010-10-23T00:08:27+02:00", "publishers": [ @@ -82,7 +82,7 @@ "id": "11280.100/crdo-CFPP2000_11_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-CFPP2000_11_SOUND", "title": "Entretien de Louise Liotard et de Jeane Mallet 1", - "language": "http://lexvo.org/id/iso639-3/fra", + "languages": [ "http://lexvo.org/id/iso639-3/fra" ], "modified": "2013-04-23T21:40:30+02:00", "issued": "2013-04-23T21:40:30+02:00", "publishers": [ @@ -274,7 +274,7 @@ "id": "11280.100/crdo-FRA_PK_IV_10_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-FRA_PK_IV_10_SOUND", "title": "Le jour des petits (B)", - "language": "http://lexvo.org/id/iso639-3/fra", + "languages": ["http://lexvo.org/id/iso639-3/fra"], "modified": "2007-11-06", "issued": "2010-10-27T10:41:51+02:00", "publishers": [ @@ -534,7 +534,7 @@ "id": "11280.100/crdo-FSL-CUC023_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-FSL-CUC023_SOUND", "title": "Corpus LS-Colin sur plusieurs genres discursifs (Josette Bouchauveau et Henri Attia)", - "language": "http://lexvo.org/id/iso639-3/fra", + "languages": ["http://lexvo.org/id/iso639-3/fra", "http://lexvo.org/id/iso639-3/fsl"], "modified": "2008-06-14", "issued": "2015-02-03T21:13:34+01:00", "publishers": [ @@ -791,7 +791,7 @@ "id": "11280.100/crdo-NEE_KHIAAK_KO_AK_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-NEE_KHIAAK_KO_AK_SOUND", "title": "Tale of the hen and the rooster", - "language": "http://lexvo.org/id/iso639-3/fra", + "languages": ["http://lexvo.org/id/iso639-3/fra", "http://lexvo.org/id/iso639-3/nee"], "modified": "2004-12-09", "issued": "2010-10-26T19:21:17+02:00", "publishers": [ @@ -892,7 +892,7 @@ "id": "11280.100/crdo-ESLO1_ENT_047", "uri": "https://hdl.handle.net/11280.100/crdo-ESLO1_ENT_047", "title": "ESLO1: entretien 047", - "language": "http://lexvo.org/id/iso639-3/fra", + "languages": ["http://lexvo.org/id/iso639-3/fra"], "modified": "2014-11-04", "issued": "2014-12-05T15:05:08+01:00", "publishers": [ @@ -1026,7 +1026,7 @@ "id": "11280.100/crdo-09-CAYCHAX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-CAYCHAX_SOUND", "title": "ALLOc : Caychax : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:16:38+02:00", "issued": "2010-10-25T18:16:38+02:00", "publishers": [ @@ -1148,7 +1148,7 @@ "id": "11280.100/crdo-09-DUN_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-DUN_SOUND", "title": "ALLOc : Dun : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:18:23+02:00", "issued": "2010-10-25T18:18:23+02:00", "publishers": [ @@ -1270,7 +1270,7 @@ "id": "11280.100/crdo-09-LABASTIDE-DE-LORDAT_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-LABASTIDE-DE-LORDAT_SOUND", "title": "ALLOc : La Bastide-de-Lordat : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:20:08+02:00", "issued": "2010-10-25T18:20:08+02:00", "publishers": [ @@ -1392,7 +1392,7 @@ "id": "11280.100/crdo-09-LOUBENS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-LOUBENS_SOUND", "title": "ALLOc : Loubens : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:21:23+02:00", "issued": "2010-10-25T18:21:23+02:00", "publishers": [ @@ -1514,7 +1514,7 @@ "id": "11280.100/crdo-09-MERENS-LES-VALS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-MERENS-LES-VALS_SOUND", "title": "ALLOc : Mérens-les-Vals : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:22:24+02:00", "issued": "2010-10-25T18:22:24+02:00", "publishers": [ @@ -1636,7 +1636,7 @@ "id": "11280.100/crdo-09-MONTSEGUR_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-MONTSEGUR_SOUND", "title": "ALLOc : Montségur : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:23:14+02:00", "issued": "2010-10-25T18:23:14+02:00", "publishers": [ @@ -1758,7 +1758,7 @@ "id": "11280.100/crdo-09-PRAYOLS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-PRAYOLS_SOUND", "title": "ALLOc : Prayols : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:24:06+02:00", "issued": "2010-10-25T18:24:06+02:00", "publishers": [ @@ -1870,7 +1870,7 @@ "id": "11280.100/crdo-09-QUERIGUT_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-QUERIGUT_SOUND", "title": "ALLOc : Quérigut : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:24:56+02:00", "issued": "2010-10-25T18:24:56+02:00", "publishers": [ @@ -1992,7 +1992,7 @@ "id": "11280.100/crdo-09-SIGUER_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-SIGUER_SOUND", "title": "ALLOc : Siguer : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:25:51+02:00", "issued": "2010-10-25T18:25:51+02:00", "publishers": [ @@ -2114,7 +2114,7 @@ "id": "11280.100/crdo-09-ST-MARTIN-D-OYDES_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-ST-MARTIN-D-OYDES_SOUND", "title": "ALLOc : Saint-Martin-d'Oydes : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:26:22+02:00", "issued": "2010-10-25T18:26:22+02:00", "publishers": [ @@ -2236,7 +2236,7 @@ "id": "11280.100/crdo-09-SURBA_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-09-SURBA_SOUND", "title": "ALLOc : Surba : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:26:42+02:00", "issued": "2010-10-25T18:26:42+02:00", "publishers": [ @@ -2358,7 +2358,7 @@ "id": "11280.100/crdo-11-GRAMAZIE_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-11-GRAMAZIE_SOUND", "title": "ALLOc : Gramazie : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:27:39+02:00", "issued": "2010-10-25T18:27:39+02:00", "publishers": [ @@ -2480,7 +2480,7 @@ "id": "11280.100/crdo-11-MOLLEVILLE_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-11-MOLLEVILLE_SOUND", "title": "ALLOc : Molleville : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:28:06+02:00", "issued": "2010-10-25T18:28:06+02:00", "publishers": [ @@ -2602,7 +2602,7 @@ "id": "11280.100/crdo-11-PUIVERT_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-11-PUIVERT_SOUND", "title": "ALLOc : Puivert : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:28:40+02:00", "issued": "2010-10-25T18:28:40+02:00", "publishers": [ @@ -2724,7 +2724,7 @@ "id": "11280.100/crdo-11-RIBOUISSE_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-11-RIBOUISSE_SOUND", "title": "ALLOc : Ribouisse : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:29:32+02:00", "issued": "2010-10-25T18:29:32+02:00", "publishers": [ @@ -2846,7 +2846,7 @@ "id": "11280.100/crdo-11-SONNAC-SUR-L-HERS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-11-SONNAC-SUR-L-HERS_SOUND", "title": "ALLOc : Sonnac-sur-l'Hers : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:29:56+02:00", "issued": "2010-10-25T18:29:56+02:00", "publishers": [ @@ -2963,7 +2963,7 @@ "id": "11280.100/crdo-11-ST-MARTIN-LALANDE_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-11-ST-MARTIN-LALANDE_SOUND", "title": "ALLOc : Saint-Martin-Lalande : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:30:27+02:00", "issued": "2010-10-25T18:30:27+02:00", "publishers": [ @@ -3085,7 +3085,7 @@ "id": "11280.100/crdo-12-AUZITS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-AUZITS_SOUND", "title": "ALLOc : Auzits : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:31:22+02:00", "issued": "2010-10-25T18:31:22+02:00", "publishers": [ @@ -3207,7 +3207,7 @@ "id": "11280.100/crdo-12-JOUELS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-JOUELS_SOUND", "title": "ALLOc : Jouels : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:31:21+02:00", "issued": "2010-10-25T18:31:21+02:00", "publishers": [ @@ -3329,7 +3329,7 @@ "id": "11280.100/crdo-12-LACASSAGNE_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-LACASSAGNE_SOUND", "title": "ALLOc : Lacassagne : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:31:43+02:00", "issued": "2010-10-25T18:31:43+02:00", "publishers": [ @@ -3453,7 +3453,7 @@ "id": "11280.100/crdo-12-LANUEJOULS_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-LANUEJOULS_SOUND", "title": "ALLOc : Lanuéjouls : Parabole", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:32:16+02:00", "issued": "2010-10-25T18:32:16+02:00", "publishers": [ @@ -3575,7 +3575,7 @@ "id": "11280.100/crdo-12-MARNAC1LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC1LEX_SOUND", "title": "ALLOc : Marnac", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:33:17+02:00", "issued": "2010-10-25T18:33:17+02:00", "publishers": [ @@ -3684,7 +3684,7 @@ "id": "11280.100/crdo-12-MARNAC2LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC2LEX_SOUND", "title": "ALLOc : Marnac-2", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:33:43+02:00", "issued": "2010-10-25T18:33:43+02:00", "publishers": [ @@ -3793,7 +3793,7 @@ "id": "11280.100/crdo-12-MARNAC3LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC3LEX_SOUND", "title": "ALLOc : Marnac-3", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:33:51+02:00", "issued": "2010-10-25T18:33:51+02:00", "publishers": [ @@ -3902,7 +3902,7 @@ "id": "11280.100/crdo-12-MARNAC4MORPHO_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC4MORPHO_SOUND", "title": "ALLOc : Marnac-4", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:34:19+02:00", "issued": "2010-10-25T18:34:19+02:00", "publishers": [ @@ -4011,7 +4011,7 @@ "id": "11280.100/crdo-12-MARNAC5MORPHO_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC5MORPHO_SOUND", "title": "ALLOc : Marnac-5", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:35:45+02:00", "issued": "2010-10-25T18:35:45+02:00", "publishers": [ @@ -4120,7 +4120,7 @@ "id": "11280.100/crdo-12-MAYRAN1LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN1LEX_SOUND", "title": "ALLOc : Mayran", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:36:22+02:00", "issued": "2010-10-25T18:36:22+02:00", "publishers": [ @@ -4249,7 +4249,7 @@ "id": "11280.100/crdo-12-MAYRAN2LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN2LEX_SOUND", "title": "ALLOc : Mayran", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:36:52+02:00", "issued": "2010-10-25T18:36:52+02:00", "publishers": [ @@ -4378,7 +4378,7 @@ "id": "11280.100/crdo-12-MAYRAN3LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN3LEX_SOUND", "title": "ALLOc : Mayran-3", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:36:54+02:00", "issued": "2010-10-25T18:36:54+02:00", "publishers": [ @@ -4507,7 +4507,7 @@ "id": "11280.100/crdo-12-MAYRAN4LEX_SOUND", "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN4LEX_SOUND", "title": "ALLOc : Mayran-4", - "language": "http://lexvo.org/id/iso639-3/oci", + "languages": ["http://lexvo.org/id/iso639-3/oci"], "modified": "2010-10-25T18:37:07+02:00", "issued": "2010-10-25T18:37:07+02:00", "publishers": [ @@ -4632,4 +4632,4 @@ ] } } -]; \ No newline at end of file +]; diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/fixtures/lexvos.js --- a/cms/app-client/mirage/fixtures/lexvos.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/fixtures/lexvos.js Sun Oct 16 23:19:57 2016 +0530 @@ -39,5 +39,15 @@ { 'id': "http://lexvo.org/id/iso639-3/aji", 'name': "ajië" }, { 'id': "http://lexvo.org/id/iso639-3/ita", 'name': "italien" }, { 'id': "http://lexvo.org/id/iso639-3/kdk", 'name': "numee" }, - { 'id': "http://lexvo.org/id/iso639-3/nua", 'name': "yuaga" } + { 'id': "http://lexvo.org/id/iso639-3/nua", 'name': "yuaga" }, + { 'id': "corpus-global", 'name': "global" }, + { 'id': "corpus-regionals", 'name': "langues régionales" }, + { 'id': "corpus-oil", 'name': "langues d'oïl" }, + { 'id': "corpus-creoles", 'name': "les créoles" }, + { 'id': "corpus-non-territorials", 'name': "langues non territoriales" }, + { 'id': "corpus-guyane", 'name': "Guyane" }, + { 'id': "corpus-mayotte", 'name': "Mayotte" }, + { 'id': "corpus-polynesia", 'name': "Polynésie française" }, + { 'id': "corpus-wallis-futuna", 'name': "Wallis et Futuna" }, + { 'id': "corpus-new-caledonia", 'name': "Nouvelle-Calédonie" }, ]; diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/datestat.js --- a/cms/app-client/mirage/serializers/datestat.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/serializers/datestat.js Sun Oct 16 23:19:57 2016 +0530 @@ -4,6 +4,6 @@ export default JSONAPISerializer.extend({ serialize(response) { - return _(response.models).map((dateinfo) => { return [dateinfo.id, dateinfo.count];}).object().value(); + return {'datestats': _(response.models).map((dateinfo) => { return [dateinfo.id, dateinfo.count];}).object().value()}; } }); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/discourse.js --- a/cms/app-client/mirage/serializers/discourse.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/serializers/discourse.js Sun Oct 16 23:19:57 2016 +0530 @@ -4,6 +4,6 @@ export default JSONAPISerializer.extend({ serialize(response) { - return _(response.models).map((discourse) => { return [discourse.id, {count: discourse.count, label: discourse.label}];}).object().value(); + return { 'discourses' : _(response.models).map((discourse) => { return [discourse.id, {count: discourse.count, label: discourse.label}];}).object().value()}; } }); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/geostat.js --- a/cms/app-client/mirage/serializers/geostat.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/serializers/geostat.js Sun Oct 16 23:19:57 2016 +0530 @@ -5,6 +5,6 @@ export default JSONAPISerializer.extend({ serialize(response, request) { var map = response.models.find(map => map.id === request.queryParams['area']); - return _(map && map.areas || {}).map((geostat) => { return [geostat.id, geostat.count];}).object().value(); + return {'geostats': _(map && map.areas || {}).map((geostat) => { return [geostat.id, geostat.count];}).object().value()}; } }); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/language.js --- a/cms/app-client/mirage/serializers/language.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/serializers/language.js Sun Oct 16 23:19:57 2016 +0530 @@ -4,6 +4,6 @@ export default JSONAPISerializer.extend({ serialize(response) { - return _(response.models).map((lang) => { return [lang.id, lang.count];}).object().value(); + return {'languages' : _(response.models).map((lang) => { return [lang.id, lang.count];}).object().value()}; } }); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/sparse-document.js --- a/cms/app-client/mirage/serializers/sparse-document.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/serializers/sparse-document.js Sun Oct 16 23:19:57 2016 +0530 @@ -1,17 +1,20 @@ // mirage/serializers/blog-post.js import BaseSerializer from './application'; import _ from 'lodash'; +import utils from './utils'; export default BaseSerializer.extend({ attrs: ['id', 'title', 'language', 'url', 'issued', 'modified', 'publishers', 'mediaArray', 'transcript'], serialize(response, request) { - console.log(request, response); // This is how to call super, as Mirage borrows [Backbone's implementation of extend](http://backbonejs.org/#Model-extend) let json = BaseSerializer.prototype.serialize.apply(this, arguments); - json['documents'] = _.map(json['documents'], function(doc) { + let page = Math.max(parseInt(request.queryParams.page || 1) - 1, 0); + let perPage = parseInt(request.queryParams.perpage || 100); + + json['documents'] = _.map(_.slice(json['documents'], page*perPage, (page+1)*perPage), function(doc) { let res = _.omit(doc, ['publishers', 'mediaArray', 'transcript']); res['publisher'] = doc['publishers'].join(', '); res['duration_ms'] = doc['mediaArray']?doc['mediaArray'][_(Object.keys(doc['mediaArray'])).first()]['extent_ms']:0; @@ -19,7 +22,43 @@ return res; }); + let meta = { + total: response.models.length, + per_page: perPage, + current_page: page+1, + last_page: Math.floor(response.models.length/perPage)+1, + from: page*perPage + 1, + to: Math.min((page+1)*perPage, response.models.length), + prev_page_url: null, + next_page_url: null + }; + + let urlParts = utils.parseUri(request.url); + + if(page>0) { + let prevUrlParts = _.clone(urlParts); + prevUrlParts.queryKey.page = page; + meta.prev_page_url = utils.mergeUri(prevUrlParts); + } + + if(page<(meta.last_page-1)) { + let nextUrlParts = _.clone(urlParts); + nextUrlParts.queryKey.page = page+2; + meta.next_page_url = utils.mergeUri(nextUrlParts); + } + + json['meta'] = meta; + return json; } }); + +// total 3373 +// per_page 15 +// current_page 1 +// last_page 225 +// next_page_url "http://localhost:8000/api/v1/documents?page=2" +// prev_page_url +// from 1 +// to 15 diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/theme.js --- a/cms/app-client/mirage/serializers/theme.js Sun Oct 16 22:23:31 2016 +0530 +++ b/cms/app-client/mirage/serializers/theme.js Sun Oct 16 23:19:57 2016 +0530 @@ -30,7 +30,7 @@ } else { array = response.models; } - return _(array).map((theme) => { return [theme.id, {count: theme.count, label: theme.label}];}).object().value(); + return { 'themes': _(array).map((theme) => { return [theme.id, {count: theme.count, label: theme.label}];}).object().value() }; } }); diff -r 4a3899b6a7ed -r 766af1228b05 cms/app-client/mirage/serializers/utils.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cms/app-client/mirage/serializers/utils.js Sun Oct 16 23:19:57 2016 +0530 @@ -0,0 +1,58 @@ +// taken from http://blog.stevenlevithan.com/archives/parseuri +// parseUri 1.2.2 +// (c) Steven Levithan +// MIT License +import _ from 'lodash'; + +const PARSEURI_DEFAULT_OPTIONS = { + strictMode: false, + key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], + q: { + name: "queryKey", + parser: /(?:^|&)([^&=]*)=?([^&]*)/g + }, + parser: { + strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + } +}; + +export default { + parseUri : function (str, options) { + var o = _.defaultsDeep(options || {}, PARSEURI_DEFAULT_OPTIONS); + var m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), + uri = {}, + i = 14; + + while (i--) { uri[o.key[i]] = m[i] || ""; } + + uri[o.q.name] = {}; + uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { + if ($1) { uri[o.q.name][$1] = $2; } + }); + + return uri; + }, + mergeUri : function(uriParts) { + let res = ""; + if(uriParts.protocol) { + res += uriParts.protocol+":"; + } + if(uriParts.host) { + res += "//" + uriParts.host; + } + if(uriParts.port) { + res += ":" + uriParts.port; + } + if(uriParts.path) { + res += uriParts.path; + } + if(uriParts.queryKey) { + res += "?" + _.map(uriParts.queryKey, function(v,k) { + return k + "=" + v; + }).join("&"); + } + + return res; + } +}; diff -r 4a3899b6a7ed -r 766af1228b05 common/corpus-common-addon/addon/services/resolver-service.js --- a/common/corpus-common-addon/addon/services/resolver-service.js Sun Oct 16 22:23:31 2016 +0530 +++ b/common/corpus-common-addon/addon/services/resolver-service.js Sun Oct 16 23:19:57 2016 +0530 @@ -2,103 +2,115 @@ import _ from 'lodash'; import store from 'corpus-common-addon/utils/store'; +const DEFAULT_DEBOUNCE = 10; + export default Ember.Service.extend({ - promises: null, - queryRegister: null, + promises: null, + queryRegister: null, - storeKeyBase: null, - apiPath: null, - resDocRoot: null, + storeKeyBase: null, + apiPath: null, + resDocRoot: null, - processId: function(id) { return id; }, - - getReturnDictKey: function(id) { return id; }, + processId: function (id) { + return id; + }, - init() { - this._super(...arguments); - this.set('promises', []); - this.set('queryRegister',{}); - this.doQuery = _.debounce(this._doQuery,10); - }, + getReturnDictKey: function (id) { + return id; + }, - env: function() { - return Ember.getOwner(this).resolveRegistration('config:environment'); - }, + init(...args) { + this._super(...args); + this.set('promises', []); + this.set('queryRegister', {}); + this.doQuery = _.debounce(this._doQuery, DEFAULT_DEBOUNCE); + }, + + env: function () { + return Ember.getOwner(this).resolveRegistration('config:environment'); + }, - _getStoreKey: function(id) { - return this.storeKeyBase+':'+id; - }, + _getStoreKey: function (id) { + return this.storeKeyBase + ':' + id; + }, + + _doQuery: function () { + const queryRegister = this.get('queryRegister'); + + this.set('queryRegister', {}); - _doQuery: function() { - var queryRegister = this.get('queryRegister'); - this.set('queryRegister', {}); - var ids = Object.keys(queryRegister).join(','); - if(!ids) { - _.each(queryRegister, (resolve_reject) => { - resolve_reject[0]({}); - }); - } - Ember.$.ajax({ - //TODO Configuration ? - url: this.env().rootURL.replace(/\/$/,'') + this.apiPath +ids, + const ids = Object.keys(queryRegister).join(','); - success: (itemDoc) => { - _.each(queryRegister, (resolve_reject) => { - resolve_reject[0](itemDoc[this.resDocRoot]); - }); - }, - error: (req, status, error) => { - _.each(queryRegister, (resolve_reject) => { - resolve_reject[1](status + ':' + error); - }); - - } - }); - }, + if (!ids) { + _.each(queryRegister, resolveReject=> { + resolveReject[0]({}); + }); + } + Ember.$.ajax({ + // TODO Configuration ? + url: this.env().APP.backRootURL.replace(/\/$/, '') + this.apiPath + ids, - // make the query for the name. - // return a Promise - queryName: function(id) { - var queryRegister = this.get('queryRegister'); - return new Ember.RSVP.Promise(function(resolve, reject) { - queryRegister[id] = [resolve, reject]; - this.doQuery(this); - }.bind(this)); - }, + success: itemDoc=> { + _.each(queryRegister, resolveReject=> { + resolveReject[0](itemDoc[this.resDocRoot]); + }); + }, + error: (req, status, error)=> { + _.each(queryRegister, resolveReject=> { + resolveReject[1](status + ':' + error); + }); - getName: function(id) { - - if(!id) { - return new Ember.RSVP.Promise(function(resolve/*, reject*/) { - resolve(''); - }); - } - - var objectId = this.processId(id); + } + }); + }, - var namePromise = null; - - var storeKey = this._getStoreKey(id); - var name = store.get(storeKey); + // make the query for the name. + // return a Promise + queryName: function (id) { + const queryRegister = this.get('queryRegister'); - if( name !== null) { - namePromise = new Ember.RSVP.Promise(function(resolve/*, reject*/) { - resolve(name); - }); - } else if ( storeKey in this.get('promises')) { - namePromise = this.get('promises')[storeKey]; - } else { - //TODO: handle error !!! - namePromise = this.queryName(objectId) - .then(function(names) { - delete this.get('promises')[storeKey]; - return store.set(storeKey, names[this.getReturnDictKey(objectId)]); - }.bind(this)); - this.get('promises')[storeKey] = namePromise; - } - return namePromise; + return new Ember.RSVP.Promise(function (resolve, reject) { + queryRegister[id] = [resolve, reject]; + this.doQuery(this); + }.bind(this)); + }, + + getName: function (id) { + + if (!id) { + return new Ember.RSVP.Promise(function (resolve/* , reject*/) { + resolve(''); + }); } + const objectId = this.processId(id); + + let namePromise = null; + + const storeKey = this._getStoreKey(id); + const name = store.get(storeKey); + + if (name !== null) { + namePromise = new Ember.RSVP.Promise(function (resolve/* , reject*/) { + resolve(name); + }); + } else if (storeKey in this.get('promises')) { + namePromise = this.get('promises')[storeKey]; + } else { + // handle error !!! + namePromise = this.queryName(objectId) + .then(function (names) { + Reflect.deleteProperty(this.get('promises'), storeKey); + + return store.set(storeKey, names[this.getReturnDictKey(objectId)]); + }.bind(this)); + this.get('promises')[storeKey] = namePromise; + } + + return namePromise; + } + }); diff -r 4a3899b6a7ed -r 766af1228b05 common/corpus-common-addon/addon/utils/constants.js --- a/common/corpus-common-addon/addon/utils/constants.js Sun Oct 16 22:23:31 2016 +0530 +++ b/common/corpus-common-addon/addon/utils/constants.js Sun Oct 16 23:19:57 2016 +0530 @@ -1,6 +1,8 @@ export const LEXVO_BASE_URL = 'http://lexvo.org/id/iso639-3/'; +export const LANGUAGES_NODE_PREFIX = 'corpus-'; + export const VIAF_BASE_URL = 'http://viaf.org/viaf/'; export const BNF_BASE_URL = 'http://data.bnf.fr/'; diff -r 4a3899b6a7ed -r 766af1228b05 common/corpus-common-addon/app/services/bnf-resolver.js --- a/common/corpus-common-addon/app/services/bnf-resolver.js Sun Oct 16 22:23:31 2016 +0530 +++ b/common/corpus-common-addon/app/services/bnf-resolver.js Sun Oct 16 23:19:57 2016 +0530 @@ -4,31 +4,34 @@ export default ResolverService.extend({ - storeKeyBase: 'bnf', - apiPath: '/api/v1/resolvers/bnf/', - resDocRoot: 'bnfids', + storeKeyBase: 'bnf', + apiPath: '/api/v1/resolvers/bnf/', + resDocRoot: 'bnfids', - init() { - this._super(...arguments); - console.log("BNF", this); - }, + init(...args) { + this._super(...args); + }, + + processId: function (id) { + let bnfId = id; - processId: function(id) { - var bnfId = id; - if(id.startsWith(constants.BNF_BASE_URL + constants.BNF_ARK_BASE_ID)) { - bnfId = id.slice((constants.BNF_BASE_URL + constants.BNF_ARK_BASE_ID).length); - } - else if (id.startsWith(constants.BNF_ARK_BASE_URL + constants.BNF_ARK_BASE_ID)) { - bnfId = id.slice((constants.BNF_ARK_BASE_URL + constants.BNF_ARK_BASE_ID).length); - } - else if (id.startsWith(constants.BNF_ARK_BASE_ID)) { - bnfId = id.slice(constants.BNF_ARK_BASE_ID.length); - } - return bnfId; - }, + if (id.startsWith(constants.BNF_BASE_URL + constants.BNF_ARK_BASE_ID)) { + bnfId = id.slice((constants.BNF_BASE_URL + constants.BNF_ARK_BASE_ID).length); + } else if (id.startsWith(constants.BNF_ARK_BASE_URL + constants.BNF_ARK_BASE_ID)) { + bnfId = id.slice((constants.BNF_ARK_BASE_URL + constants.BNF_ARK_BASE_ID).length); + } else if (id.startsWith(constants.BNF_ARK_BASE_ID)) { + bnfId = id.slice(constants.BNF_ARK_BASE_ID.length); + } - getReturnDictKey: function(id) { return constants.BNF_ARK_BASE_ID+id; }, + return bnfId; + }, - getLabel: function(id) { return this.getName(id); } + getReturnDictKey: function (id) { + return constants.BNF_ARK_BASE_ID + id; + }, + + getLabel: function (id) { + return this.getName(id); + } }); diff -r 4a3899b6a7ed -r 766af1228b05 common/corpus-common-addon/lib/commands/dl-fixtures.js --- a/common/corpus-common-addon/lib/commands/dl-fixtures.js Sun Oct 16 22:23:31 2016 +0530 +++ b/common/corpus-common-addon/lib/commands/dl-fixtures.js Sun Oct 16 23:19:57 2016 +0530 @@ -78,7 +78,7 @@ }, dl_documents_ids: function(commandOptions, rawArgs, ui) { - var nextPageUrl = commandOptions.url; + var nextPageUrl = commandOptions.url+"?sort=_graph"; var pageIndex = 1; var ids = commandOptions.extra?_.map(commandOptions.extra.split(','), function(id) { return { id: id};}):[]; @@ -96,7 +96,7 @@ err.res = res; return deferred.reject(err); } - nextPageUrl = body.next_page_url; + nextPageUrl = body.meta.next_page_url; pageIndex++; ids = _.reduce( diff -r 4a3899b6a7ed -r 766af1228b05 common/corpus-common-addon/tests/dummy/config/environment.js --- a/common/corpus-common-addon/tests/dummy/config/environment.js Sun Oct 16 22:23:31 2016 +0530 +++ b/common/corpus-common-addon/tests/dummy/config/environment.js Sun Oct 16 23:19:57 2016 +0530 @@ -16,6 +16,7 @@ APP: { // Here you can pass flags/options to your application instance // when it is created + backRootURL: '/' } }; @@ -30,6 +31,7 @@ if (environment === 'test') { // Testem prefers this... ENV.rootURL = '/'; + ENV.APP.backRootURL = '/'; ENV.locationType = 'none'; // keep test console output quieter diff -r 4a3899b6a7ed -r 766af1228b05 dev/README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/README.md Sun Oct 16 23:19:57 2016 +0530 @@ -0,0 +1,31 @@ +# REMIE Provisioning + +## Bootstraping + +* Copier ubuntu-bootstrap sur le serveur + +* executer le script (sudo): `sudo ./ubuntu-bootstrap.sh`. Ce script installe l'agent puppet et ces dépendances. + +* ajouter l'utilisateur courant au groupe `puppet` + +## Installation +* On prépare sur le serveur un répertoire où les fichiers d'installation seron copiés. Par exemple : +```bash +sudo mkdir -p /var/lib/puppet/provision && sudo chown puppet:puppet /var/lib/puppet/provision && sudo chmod g+sw /var/lib/puppet/provision +``` + +* Copier les fichiers sur le serveur : `rsync --exclude='.git' --exclude='.hg*' -aviuPz provisioning/ :/var/lib/puppet/provision/` + + +## configuration +* copier le template de fichier de configuration dans `/etc/puppet/hiera/custom.yaml`. +```bash +mkdir -p /etc/puppet/hiera && sudo cp /var/lib/puppet/provision/custom.yaml.tmpl /etc/puppet/hiera/custom.yaml +``` + +* complêter le fichier de configuration. Le fichier template contient le minimum de paramêtres nécessaire pour avoir un système fonctionnel. +* dans le fichiet `/var/lib/puppet/provision/hiera.yaml`, mettre la ligne ` :datadir: "/etc/puppet/hiera"` + + +## execution +* dans le répertoire `/var/lib/puppet/provision` lancer la commande `sudo puppet apply --debug default.pp --modulepath=modules --hiera_config=hiera.yaml` diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/manifests/apache.pp --- a/dev/provisioning/modules/sysconfig/manifests/apache.pp Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/manifests/apache.pp Sun Oct 16 23:19:57 2016 +0530 @@ -65,7 +65,7 @@ ] $corpus_folders = [ "/var/www/corpusdelaparole", - "/var/www/corpusdelaparole/corpus", + "/var/www/corpusdelaparole/corpus-back", "/var/www/corpusdelaparole/drupal" ] diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/manifests/corpus.pp --- a/dev/provisioning/modules/sysconfig/manifests/corpus.pp Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/manifests/corpus.pp Sun Oct 16 23:19:57 2016 +0530 @@ -16,12 +16,12 @@ notify => Service['httpd'] } - file { "/var/www/corpusdelaparole/corpus/.env": + file { "/var/www/corpusdelaparole/corpus-back/.env": ensure => file, owner => 'apache', group => 'apache', content => template("sysconfig/corpus/local.env.erb"), - require=>File["/var/www/corpusdelaparole/corpus"] + require=>File["/var/www/corpusdelaparole/corpus-back"] } } diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/manifests/php.pp --- a/dev/provisioning/modules/sysconfig/manifests/php.pp Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/manifests/php.pp Sun Oct 16 23:19:57 2016 +0530 @@ -29,7 +29,7 @@ augeas { "php_ini/memory_limit": lens => "PHP.lns", incl => "/opt/remi/php56/root/etc/php.ini", - changes => "set PHP/memory_limit 128M", + changes => "set PHP/memory_limit 512M", notify => Service['httpd'], require => Package["php56"] }-> diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/templates/corpus/corpus_env.conf.erb --- a/dev/provisioning/modules/sysconfig/templates/corpus/corpus_env.conf.erb Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/templates/corpus/corpus_env.conf.erb Sun Oct 16 23:19:57 2016 +0530 @@ -1,10 +1,10 @@ SetEnv APP_ENV local SetEnv APP_DEBUG false SetEnv APP_KEY <%= @corpus_app_key %> -SetEnv APP_URL http://<%= @vhost %>/corpus/ +SetEnv APP_URL http://<%= @vhost %>/corpus-back/ SetEnv DATABASE_DRIVER mysql -SetEnv DB_HOST localhost +SetEnv DB_HOST <%= @db_host %> SetEnv DB_DATABASE <%= @db_name %> SetEnv DB_USERNAME <%= @db_user %> SetEnv DB_PASSWORD <%= @db_pw %> @@ -21,9 +21,41 @@ SetEnv CORPUSPAROLE_COCOON_RDF_BASE_URI http://cocoon.huma-num.fr/exist/crdo/rdf/ SetEnv CORPUSPAROLE_COCOON_OAIPMH_URL http://cocoon.huma-num.fr/crdo_servlet/oai-pmh -SetEnv CORPUSPAROLE_SESAME_BASE_URL http://127.0.0.1:8080/openrdf-sesame +SetEnv CORPUSPAROLE_SESAME_BASE_URL http://<%= @sesame_host %>:<%= @sesame_port %>/openrdf-sesame SetEnv CORPUSPAROLE_SESAME_REPOSITORY corpus SetEnv CORPUSPAROLE_SESAME_REPOSITORY_RAW corpus_raw SetEnv CORPUSPAROLE_SESAME_LEXVO_REPOSITORY lexvo SetEnv EASYRDF_HTTP_CLIENT_TIMEOUT 5000 + +SetEnv ELASTICSEARCH_URL <@= @elasticsearch_host %>:<@= @elasticsearch_port %> +SetEnv ELASTICSEARCH_LOG_PATH 'logs/elasticsearch.log' +SetEnv ELASTICSEARCH_INDEX 'corpus' +SetEnv ELASTICSEARCH_SHARDS 1 +SetEnv ELASTICSEARCH_REPLICAS 1 + +SetEnv HANDLE_HOST <%= @handle_host %> +SetEnv HANDLE_PORT <%= @handle_port %> +SetEnv HANDLE_PREFIX <%= @handle_prefix %> +SetEnv HANDLE_ADMIN_ID <%= @handle_admin_id %> + +SetEnv HANDLE_CERT_OR_PKEY "<%= @handle_cert_or_pkey %>" +SetEnv HANDLE_PASSWORD <%= @handle_password %> + +SetEnv HANDLE_TEST_PREFIX <%= @handle_test_prefix %> + + +SetEnv HANDLE_TEST_CERT "corpusadmpkeycrt.pem" +SetEnv HANDLE_TEST_CERT_PASSWORD NULL +SetEnv HANDLE_TEST_CERT_ADMIN_HANDLE "300:<%= @handle_test_prefix %>/CORPUS_ADMIN" + +SetEnv HANDLE_TEST_RSA_KEY "corpusadmpriv.pem" +SetEnv HANDLE_TEST_RSA_PASSWORD NULL +SetEnv HANDLE_TEST_RSA_ADMIN_HANDLE "300:<%= @handle_test_prefix %>/CORPUS_ADMIN_RSA" + + +SetEnv HANDLE_TEST_DSA_KEY "corpusadmdsapriv.pem" +SetEnv HANDLE_TEST_DSA_PASSWORD NULL +SetEnv HANDLE_TEST_DSA_ADMIN_HANDLE "300:<%= @handle_test_prefix %>/CORPUS_ADMIN_DSA" + +SetEnv GEONAMES_USERNAME "<%= @geonames-username %>" diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/templates/corpus/local.env.erb --- a/dev/provisioning/modules/sysconfig/templates/corpus/local.env.erb Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/templates/corpus/local.env.erb Sun Oct 16 23:19:57 2016 +0530 @@ -1,10 +1,10 @@ APP_ENV=local APP_DEBUG=true APP_KEY=<%= @corpus_app_key %> -APP_URL=http://<%= @vhost %>/corpus/ +APP_URL=http://<%= @vhost %>/corpus-back/ DATABASE_DRIVER=mysql -DB_HOST=localhost +DB_HOST=<%= @db_host %> DB_DATABASE=<%= @db_name %> DB_USERNAME=<%= @db_user %> DB_PASSWORD=<%= @db_pw %> @@ -21,9 +21,42 @@ CORPUSPAROLE_COCOON_RDF_BASE_URI=http://cocoon.huma-num.fr/exist/crdo/rdf/ CORPUSPAROLE_COCOON_OAIPMH_URL=http://cocoon.huma-num.fr/crdo_servlet/oai-pmh -CORPUSPAROLE_SESAME_BASE_URL=http://172.16.1.6:8080/openrdf-sesame/ +CORPUSPAROLE_SESAME_BASE_URL=http://<%= @sesame_host %>:<%= @sesame_port %>/openrdf-sesame CORPUSPAROLE_SESAME_REPOSITORY=corpus CORPUSPAROLE_SESAME_REPOSITORY_RAW=corpus_raw CORPUSPAROLE_SESAME_LEXVO_REPOSITORY=lexvo EASYRDF_HTTP_CLIENT_TIMEOUT=5000 + +ELASTICSEARCH_URL=<@= @elasticsearch_host %>:<@= @elasticsearch_port %> +ELASTICSEARCH_LOG_PATH='logs/elasticsearch.log' +ELASTICSEARCH_INDEX='corpus' +ELASTICSEARCH_SHARDS=1 +ELASTICSEARCH_REPLICAS=1 + +HANDLE_HOST=<%= @handle_host %> +HANDLE_PORT=<%= @handle_port %> +HANDLE_PREFIX=<%= @handle_prefix %> +HANDLE_ADMIN_ID=<%= @handle_admin_id %> + +HANDLE_CERT_OR_PKEY="<%= @handle_cert_or_pkey %>" +HANDLE_PASSWORD=<%= @handle_password %> + +HANDLE_TEST_PREFIX=<%= @handle_test_prefix %> + + +HANDLE_TEST_CERT="corpusadmpkeycrt.pem" +HANDLE_TEST_CERT_PASSWORD=NULL +HANDLE_TEST_CERT_ADMIN_HANDLE="300:<%= @handle_test_prefix %>/CORPUS_ADMIN" + +HANDLE_TEST_RSA_KEY="corpusadmpriv.pem" +HANDLE_TEST_RSA_PASSWORD=NULL +HANDLE_TEST_RSA_ADMIN_HANDLE="300:<%= @handle_test_prefix %>/CORPUS_ADMIN_RSA" + + +HANDLE_TEST_DSA_KEY="corpusadmdsapriv.pem" +HANDLE_TEST_DSA_PASSWORD=NULL +HANDLE_TEST_DSA_ADMIN_HANDLE="300:<%= @handle_test_prefix %>/CORPUS_ADMIN_DSA" + +GEONAMES_USERNAME="<%= @geonames-username %>" + diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/templates/handle/handle_data.sql.sh.erb --- a/dev/provisioning/modules/sysconfig/templates/handle/handle_data.sql.sh.erb Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/templates/handle/handle_data.sql.sh.erb Sun Oct 16 23:19:57 2016 +0530 @@ -35,7 +35,7 @@ INSERT INTO \`handles\` VALUES ('<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>',300,'HS_PUBKEY',0x$handle_admin_pubkey,0,86400,<%= scope.function_time([]) %>,'',1,1,1,0); -INSERT INTO \`handles\` VALUES ('<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>',200,'HS_VLIST','300:0.NA/<%= @hdl_test_prefix %>; 300:<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>; 300:<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>_DSA',0,86400,<%= scope.function_time([]) %>,'',1,1,1,0); +INSERT INTO \`handles\` VALUES ('<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>_DSA',200,'HS_VLIST','300:0.NA/<%= @hdl_test_prefix %>; 300:<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>; 300:<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>_DSA',0,86400,<%= scope.function_time([]) %>,'',1,1,1,0); INSERT INTO \`handles\` VALUES ('<%= @hdl_test_prefix %>/<%= @hdl_prefix_admin %>_DSA',300,'HS_PUBKEY',0x$handle_admin_pubkey_dsa,0,86400,<%= scope.function_time([]) %>,'',1,1,1,0); /*!40000 ALTER TABLE \`handles\` ENABLE KEYS */; diff -r 4a3899b6a7ed -r 766af1228b05 dev/provisioning/modules/sysconfig/templates/httpd/vhost.conf.erb --- a/dev/provisioning/modules/sysconfig/templates/httpd/vhost.conf.erb Sun Oct 16 22:23:31 2016 +0530 +++ b/dev/provisioning/modules/sysconfig/templates/httpd/vhost.conf.erb Sun Oct 16 23:19:57 2016 +0530 @@ -10,7 +10,7 @@ DocumentRoot "/var/www/corpusdelaparole/drupal" ## Alias declarations for resources outside the DocumentRoot - Alias /corpus "/var/www/corpusdelaparole/corpus/public" + Alias /corpus-back "/var/www/corpusdelaparole/corpus-back/public" AllowOverride all @@ -18,7 +18,7 @@ - + AllowOverride None Require all granted IncludeOptional /etc/www/corpus_env.con[f] @@ -28,10 +28,10 @@ RewriteEngine On - RewriteBase /corpus/ + RewriteBase /corpus-back/ # Redirect Trailing Slashes... - RewriteRule ^(.*)/$ /corpus/$1 [L,R=301] + RewriteRule ^(.*)/$ /corpus-back/$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d diff -r 4a3899b6a7ed -r 766af1228b05 server/bo_client/app/models/document.js --- a/server/bo_client/app/models/document.js Sun Oct 16 22:23:31 2016 +0530 +++ b/server/bo_client/app/models/document.js Sun Oct 16 23:19:57 2016 +0530 @@ -9,7 +9,7 @@ title: DS.attr('string'), - language: DS.attr('string'), + languages: DS.attr({defaultValue: function() { return []; }}), publishers: DS.attr({defaultValue: function() { return []; }}), diff -r 4a3899b6a7ed -r 766af1228b05 server/bo_client/app/templates/doc.hbs --- a/server/bo_client/app/templates/doc.hbs Sun Oct 16 22:23:31 2016 +0530 +++ b/server/bo_client/app/templates/doc.hbs Sun Oct 16 23:19:57 2016 +0530 @@ -22,7 +22,7 @@
{{t 'bo.document_language'}}
-
{{doc-language url=model.language}}
+
{{#each model.languages as |lang index|}}{{if index ", "}}{{doc-language url=lang}}{{/each}}
diff -r 4a3899b6a7ed -r 766af1228b05 server/bo_client/server/fixtures/documents.js --- a/server/bo_client/server/fixtures/documents.js Sun Oct 16 22:23:31 2016 +0530 +++ b/server/bo_client/server/fixtures/documents.js Sun Oct 16 23:19:57 2016 +0530 @@ -1,3675 +1,3732 @@ -/* eslint-env node */ -/* eslint quote-props: 0 */ - module.exports = [ { - 'id': '11280.100/crdo-09-CAYCHAX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-CAYCHAX_SOUND', - 'title': 'ALLOc : Caychax : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:16:38+02:00', - 'issued': '2010-10-25T18:16:38+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-CAYCHAX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-CAYCHAX_SOUND", + "title": "ALLOc : Caychax : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:16:38+02:00", + "issued": "2010-10-25T18:16:38+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Alazet, Pierre', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Alazet, Pierre", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-CAYCHAX.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-CAYCHAX.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144792_09-CAYCHAX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144792_09-CAYCHAX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M18S', - 'extent_ms': 198000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144792.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144792.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M18S', - 'extent_ms': 198000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144792_09-CAYCHAX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144792_09-CAYCHAX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT03M18S', - 'extent_ms': 198000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144792_09-CAYCHAX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144792_09-CAYCHAX_22km.wav", + "format": "audio/x-wav", + "extent": "PT03M18S", + "extent_ms": 198000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144792.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144792.wav", + "format": "audio/x-wav", + "extent": "PT03M18S", + "extent_ms": 198000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144792_09-CAYCHAX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144792_09-CAYCHAX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT03M18S", + "extent_ms": 198000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Caychax', - 'http://sws.geonames.org/6446897/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Caychax", + "http://sws.geonames.org/6446897/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Caychax', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Caychax", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.7925', - 'longitude': '1.71889' + "latitude": "42.7925", + "longitude": "1.71889" } }, { - 'id': '11280.100/crdo-09-DUN_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-DUN_SOUND', - 'title': 'ALLOc : Dun : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:18:23+02:00', - 'issued': '2010-10-25T18:18:23+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-DUN_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-DUN_SOUND", + "title": "ALLOc : Dun : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:18:23+02:00", + "issued": "2010-10-25T18:18:23+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Tricoire, Raymonde', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Tricoire, Raymonde", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-DUN.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-DUN.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144793_09-DUN_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144793_09-DUN_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M07S', - 'extent_ms': 187000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144793.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144793.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M07S', - 'extent_ms': 187000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144793_09-DUN_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144793_09-DUN_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT03M07S', - 'extent_ms': 187000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144793_09-DUN_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144793_09-DUN_22km.wav", + "format": "audio/x-wav", + "extent": "PT03M07S", + "extent_ms": 187000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144793.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144793.wav", + "format": "audio/x-wav", + "extent": "PT03M07S", + "extent_ms": 187000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144793_09-DUN_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144793_09-DUN_44k.mp3", + "format": "audio/mpeg", + "extent": "PT03M07S", + "extent_ms": 187000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Dun_(Ariège)', - 'http://sws.geonames.org/6426188/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Dun_(Ariège)", + "http://sws.geonames.org/6426188/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Dun', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Dun", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.02722', - 'longitude': '1.79917' + "latitude": "43.02722", + "longitude": "1.79917" } }, { - 'id': '11280.100/crdo-09-LABASTIDE-DE-LORDAT_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-LABASTIDE-DE-LORDAT_SOUND', - 'title': 'ALLOc : La Bastide-de-Lordat : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:20:08+02:00', - 'issued': '2010-10-25T18:20:08+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-LABASTIDE-DE-LORDAT_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-LABASTIDE-DE-LORDAT_SOUND", + "title": "ALLOc : La Bastide-de-Lordat : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:20:08+02:00", + "issued": "2010-10-25T18:20:08+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Roumieu, Berthe', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Roumieu, Berthe", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-LABASTIDE-DE-LORDAT.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-LABASTIDE-DE-LORDAT.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144794_09-LABASTIDE-DE-LORDAT_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144794_09-LABASTIDE-DE-LORDAT_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M46S', - 'extent_ms': 166000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144794.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144794.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M46S', - 'extent_ms': 166000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144794_09-LABASTIDE-DE-LORDAT_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144794_09-LABASTIDE-DE-LORDAT_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M46S', - 'extent_ms': 166000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144794_09-LABASTIDE-DE-LORDAT_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144794_09-LABASTIDE-DE-LORDAT_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M46S", + "extent_ms": 166000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144794.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144794.wav", + "format": "audio/x-wav", + "extent": "PT02M46S", + "extent_ms": 166000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144794_09-LABASTIDE-DE-LORDAT_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144794_09-LABASTIDE-DE-LORDAT_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M46S", + "extent_ms": 166000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/La_Bastide-de-Lordat', - 'http://sws.geonames.org/6618238/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/La_Bastide-de-Lordat", + "http://sws.geonames.org/6618238/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, La Bastide-de-Lordat', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, La Bastide-de-Lordat", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.1442', - 'longitude': '1.7135' + "latitude": "43.1442", + "longitude": "1.7135" } }, { - 'id': '11280.100/crdo-09-LOUBENS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-LOUBENS_SOUND', - 'title': 'ALLOc : Loubens : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:21:23+02:00', - 'issued': '2010-10-25T18:21:23+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-LOUBENS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-LOUBENS_SOUND", + "title": "ALLOc : Loubens : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:21:23+02:00", + "issued": "2010-10-25T18:21:23+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Faure, Antoinette', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Faure, Antoinette", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-LOUBENS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-LOUBENS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144795_09-LOUBENS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144795_09-LOUBENS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M28S', - 'extent_ms': 148000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144795.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144795.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M28S', - 'extent_ms': 148000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144795_09-LOUBENS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144795_09-LOUBENS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M28S', - 'extent_ms': 148000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144795_09-LOUBENS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144795_09-LOUBENS_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M28S", + "extent_ms": 148000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144795.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144795.wav", + "format": "audio/x-wav", + "extent": "PT02M28S", + "extent_ms": 148000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144795_09-LOUBENS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144795_09-LOUBENS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M28S", + "extent_ms": 148000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Loubens_(Ariège)', - 'http://sws.geonames.org/6453612/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Loubens_(Ariège)", + "http://sws.geonames.org/6453612/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Loubens', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Loubens", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.0452', - 'longitude': '1.5461' + "latitude": "43.0452", + "longitude": "1.5461" } }, { - 'id': '11280.100/crdo-09-MERENS-LES-VALS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-MERENS-LES-VALS_SOUND', - 'title': 'ALLOc : Mérens-les-Vals : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:22:24+02:00', - 'issued': '2010-10-25T18:22:24+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-MERENS-LES-VALS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-MERENS-LES-VALS_SOUND", + "title": "ALLOc : Mérens-les-Vals : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:22:24+02:00", + "issued": "2010-10-25T18:22:24+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Laurens, François', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Laurens, François", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-MERENS-LES-VALS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-MERENS-LES-VALS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144796_09-MERENS-LES-VALS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144796_09-MERENS-LES-VALS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M45S', - 'extent_ms': 165000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144796.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144796.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M45S', - 'extent_ms': 165000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144796_09-MERENS-LES-VALS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144796_09-MERENS-LES-VALS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M45S', - 'extent_ms': 165000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144796_09-MERENS-LES-VALS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144796_09-MERENS-LES-VALS_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M45S", + "extent_ms": 165000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144796.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144796.wav", + "format": "audio/x-wav", + "extent": "PT02M45S", + "extent_ms": 165000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144796_09-MERENS-LES-VALS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144796_09-MERENS-LES-VALS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M45S", + "extent_ms": 165000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Mérens-les-Vals', - 'http://sws.geonames.org/6615269/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Mérens-les-Vals", + "http://sws.geonames.org/6615269/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Mérens-les-Vals', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Mérens-les-Vals", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.65806', - 'longitude': '1.83611' + "latitude": "42.65806", + "longitude": "1.83611" } }, { - 'id': '11280.100/crdo-09-MONTSEGUR_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-MONTSEGUR_SOUND', - 'title': 'ALLOc : Montségur : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:23:14+02:00', - 'issued': '2010-10-25T18:23:14+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-MONTSEGUR_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-MONTSEGUR_SOUND", + "title": "ALLOc : Montségur : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:23:14+02:00", + "issued": "2010-10-25T18:23:14+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Couquet, Marius', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Couquet, Marius", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-MONTSEGUR.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-MONTSEGUR.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144797_09-MONTSEGUR_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144797_09-MONTSEGUR_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M50S', - 'extent_ms': 170000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144797.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144797.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M50S', - 'extent_ms': 170000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144797_09-MONTSEGUR_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144797_09-MONTSEGUR_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M50S', - 'extent_ms': 170000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144797_09-MONTSEGUR_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144797_09-MONTSEGUR_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M50S", + "extent_ms": 170000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144797.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144797.wav", + "format": "audio/x-wav", + "extent": "PT02M50S", + "extent_ms": 170000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144797_09-MONTSEGUR_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144797_09-MONTSEGUR_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M50S", + "extent_ms": 170000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Montségur', - 'http://sws.geonames.org/6426260/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Montségur", + "http://sws.geonames.org/6426260/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Montségur', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Montségur", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.87139', - 'longitude': '1.83333' + "latitude": "42.87139", + "longitude": "1.83333" } }, { - 'id': '11280.100/crdo-09-PRAYOLS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-PRAYOLS_SOUND', - 'title': 'ALLOc : Prayols : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:24:06+02:00', - 'issued': '2010-10-25T18:24:06+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-PRAYOLS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-PRAYOLS_SOUND", + "title": "ALLOc : Prayols : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:24:06+02:00", + "issued": "2010-10-25T18:24:06+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Laguerre, Aimé', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Laguerre, Aimé", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-PRAYOLS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-PRAYOLS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144798_09-PRAYOLS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144798_09-PRAYOLS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M02S', - 'extent_ms': 182000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144798.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144798.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M02S', - 'extent_ms': 182000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144798_09-PRAYOLS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144798_09-PRAYOLS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT03M02S', - 'extent_ms': 182000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144798_09-PRAYOLS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144798_09-PRAYOLS_22km.wav", + "format": "audio/x-wav", + "extent": "PT03M02S", + "extent_ms": 182000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144798.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144798.wav", + "format": "audio/x-wav", + "extent": "PT03M02S", + "extent_ms": 182000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144798_09-PRAYOLS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144798_09-PRAYOLS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT03M02S", + "extent_ms": 182000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Prayols', - 'http://sws.geonames.org/6426277/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Prayols", + "http://sws.geonames.org/6426277/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Prayols', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Prayols", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.92722', - 'longitude': '1.62361' + "latitude": "42.92722", + "longitude": "1.62361" } }, { - 'id': '11280.100/crdo-09-QUERIGUT_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-QUERIGUT_SOUND', - 'title': 'ALLOc : Quérigut : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:24:56+02:00', - 'issued': '2010-10-25T18:24:56+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-QUERIGUT_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-QUERIGUT_SOUND", + "title": "ALLOc : Quérigut : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:24:56+02:00", + "issued": "2010-10-25T18:24:56+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Tichadou, Joseph', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Tichadou, Joseph", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-QUERIGUT.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-QUERIGUT.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144799_09-QUERIGUT_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144799_09-QUERIGUT_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M51S', - 'extent_ms': 171000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144799.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144799.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M51S', - 'extent_ms': 171000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144799_09-QUERIGUT_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144799_09-QUERIGUT_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M51S', - 'extent_ms': 171000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144799_09-QUERIGUT_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144799_09-QUERIGUT_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M51S", + "extent_ms": 171000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144799.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144799.wav", + "format": "audio/x-wav", + "extent": "PT02M51S", + "extent_ms": 171000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144799_09-QUERIGUT_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144799_09-QUERIGUT_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M51S", + "extent_ms": 171000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Quérigut', - 'http://sws.geonames.org/6618205/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Quérigut", + "http://sws.geonames.org/6618205/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Quérigut', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Quérigut", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.6987', - 'longitude': '2.0996' + "latitude": "42.6987", + "longitude": "2.0996" } }, { - 'id': '11280.100/crdo-09-SIGUER_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-SIGUER_SOUND', - 'title': 'ALLOc : Siguer : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:25:51+02:00', - 'issued': '2010-10-25T18:25:51+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-SIGUER_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-SIGUER_SOUND", + "title": "ALLOc : Siguer : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:25:51+02:00", + "issued": "2010-10-25T18:25:51+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Caujolle, Joseph', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Caujolle, Joseph", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-SIGUER.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-SIGUER.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144800_09-SIGUER_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144800_09-SIGUER_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M57S', - 'extent_ms': 177000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144800.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144800.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M57S', - 'extent_ms': 177000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144800_09-SIGUER_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144800_09-SIGUER_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M57S', - 'extent_ms': 177000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144800_09-SIGUER_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144800_09-SIGUER_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M57S", + "extent_ms": 177000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144800.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144800.wav", + "format": "audio/x-wav", + "extent": "PT02M57S", + "extent_ms": 177000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144800_09-SIGUER_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144800_09-SIGUER_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M57S", + "extent_ms": 177000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Siguer', - 'http://sws.geonames.org/6426323/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Siguer", + "http://sws.geonames.org/6426323/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Siguer', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Siguer", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.76472', - 'longitude': '1.56556' + "latitude": "42.76472", + "longitude": "1.56556" } }, { - 'id': '11280.100/crdo-09-ST-MARTIN-D-OYDES_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-ST-MARTIN-D-OYDES_SOUND', - 'title': 'ALLOc : Saint-Martin-d\'Oydes : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:26:22+02:00', - 'issued': '2010-10-25T18:26:22+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-ST-MARTIN-D-OYDES_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-ST-MARTIN-D-OYDES_SOUND", + "title": "ALLOc : Saint-Martin-d'Oydes : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:26:22+02:00", + "issued": "2010-10-25T18:26:22+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Ferriès, Marcel', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Ferriès, Marcel", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-ST-MARTIN-D-OYDES.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-ST-MARTIN-D-OYDES.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144801_09-ST-MARTIN-D-OYDES_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144801_09-ST-MARTIN-D-OYDES_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M05S', - 'extent_ms': 185000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144801.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144801.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M05S', - 'extent_ms': 185000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144801_09-ST-MARTIN-D-OYDES_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144801_09-ST-MARTIN-D-OYDES_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT03M05S', - 'extent_ms': 185000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144801_09-ST-MARTIN-D-OYDES_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144801_09-ST-MARTIN-D-OYDES_22km.wav", + "format": "audio/x-wav", + "extent": "PT03M05S", + "extent_ms": 185000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144801.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144801.wav", + "format": "audio/x-wav", + "extent": "PT03M05S", + "extent_ms": 185000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144801_09-ST-MARTIN-D-OYDES_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144801_09-ST-MARTIN-D-OYDES_44k.mp3", + "format": "audio/mpeg", + "extent": "PT03M05S", + "extent_ms": 185000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Saint-Martin-d\'Oydes', - 'http://sws.geonames.org/6426302/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Saint-Martin-d'Oydes", + "http://sws.geonames.org/6426302/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Saint-Martin-d\'Oydes', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Saint-Martin-d'Oydes", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.17028', - 'longitude': '1.49611' + "latitude": "43.17028", + "longitude": "1.49611" } }, { - 'id': '11280.100/crdo-09-SURBA_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-09-SURBA_SOUND', - 'title': 'ALLOc : Surba : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:26:42+02:00', - 'issued': '2010-10-25T18:26:42+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-09-SURBA_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-09-SURBA_SOUND", + "title": "ALLOc : Surba : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:26:42+02:00", + "issued": "2010-10-25T18:26:42+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Roques, Camille', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Del Duca, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Roques, Camille", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Del Duca, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-SURBA.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-09-SURBA.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144802_09-SURBA_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144802_09-SURBA_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M39S', - 'extent_ms': 159000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144802.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144802.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M39S', - 'extent_ms': 159000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144802_09-SURBA_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144802_09-SURBA_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M39S', - 'extent_ms': 159000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144802_09-SURBA_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144802_09-SURBA_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M39S", + "extent_ms": 159000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144802.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144802.wav", + "format": "audio/x-wav", + "extent": "PT02M39S", + "extent_ms": 159000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144802_09-SURBA_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144802_09-SURBA_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M39S", + "extent_ms": 159000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Surba', - 'http://sws.geonames.org/6426328/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Surba", + "http://sws.geonames.org/6426328/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Ariège, Surba', - 'datatype': null, - 'lang': 'fr' + "value": "France, Ariège, Surba", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.85889', - 'longitude': '1.575' + "latitude": "42.85889", + "longitude": "1.575" } }, { - 'id': '11280.100/crdo-11-GRAMAZIE_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-11-GRAMAZIE_SOUND', - 'title': 'ALLOc : Gramazie : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:27:39+02:00', - 'issued': '2010-10-25T18:27:39+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-11-GRAMAZIE_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-11-GRAMAZIE_SOUND", + "title": "ALLOc : Gramazie : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:27:39+02:00", + "issued": "2010-10-25T18:27:39+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Léger, Clémence', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'De Lorenzo, Linda', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Léger, Clémence", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "De Lorenzo, Linda", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-GRAMAZIE.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-GRAMAZIE.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144803_11-GRAMAZIE_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144803_11-GRAMAZIE_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M27S', - 'extent_ms': 147000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144803.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144803.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M27S', - 'extent_ms': 147000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144803_11-GRAMAZIE_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144803_11-GRAMAZIE_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M27S', - 'extent_ms': 147000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144803_11-GRAMAZIE_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144803_11-GRAMAZIE_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M27S", + "extent_ms": 147000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144803.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144803.wav", + "format": "audio/x-wav", + "extent": "PT02M27S", + "extent_ms": 147000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144803_11-GRAMAZIE_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144803_11-GRAMAZIE_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M27S", + "extent_ms": 147000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Gramazie', - 'http://sws.geonames.org/6426695/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Gramazie", + "http://sws.geonames.org/6426695/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aude, Gramazie', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aude, Gramazie", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.13917', - 'longitude': '2.09694' + "latitude": "43.13917", + "longitude": "2.09694" } }, { - 'id': '11280.100/crdo-11-MOLLEVILLE_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-11-MOLLEVILLE_SOUND', - 'title': 'ALLOc : Molleville : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:28:06+02:00', - 'issued': '2010-10-25T18:28:06+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-11-MOLLEVILLE_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-11-MOLLEVILLE_SOUND", + "title": "ALLOc : Molleville : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:28:06+02:00", + "issued": "2010-10-25T18:28:06+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Cathala, Auguste', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'De Lorenzo, Linda', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Cathala, Auguste", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "De Lorenzo, Linda", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-MOLLEVILLE.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-MOLLEVILLE.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144804_11-MOLLEVILLE_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144804_11-MOLLEVILLE_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M53S', - 'extent_ms': 173000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144804.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144804.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M53S', - 'extent_ms': 173000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144804_11-MOLLEVILLE_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144804_11-MOLLEVILLE_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M53S', - 'extent_ms': 173000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144804_11-MOLLEVILLE_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144804_11-MOLLEVILLE_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M53S", + "extent_ms": 173000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144804.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144804.wav", + "format": "audio/x-wav", + "extent": "PT02M53S", + "extent_ms": 173000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144804_11-MOLLEVILLE_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144804_11-MOLLEVILLE_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M53S", + "extent_ms": 173000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Molleville', - 'http://sws.geonames.org/6426753/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Molleville", + "http://sws.geonames.org/6426753/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aude, Molleville', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aude, Molleville", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.31222', - 'longitude': '1.83417' + "latitude": "43.31222", + "longitude": "1.83417" } }, { - 'id': '11280.100/crdo-11-PUIVERT_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-11-PUIVERT_SOUND', - 'title': 'ALLOc : Puivert : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:28:40+02:00', - 'issued': '2010-10-25T18:28:40+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-11-PUIVERT_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-11-PUIVERT_SOUND", + "title": "ALLOc : Puivert : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:28:40+02:00", + "issued": "2010-10-25T18:28:40+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Maugard, Marie', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'De Lorenzo, Linda', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Maugard, Marie", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "De Lorenzo, Linda", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-PUIVERT.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-PUIVERT.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144805_11-PUIVERT_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144805_11-PUIVERT_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M35S', - 'extent_ms': 155000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144805.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144805.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M35S', - 'extent_ms': 155000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144805_11-PUIVERT_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144805_11-PUIVERT_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M35S', - 'extent_ms': 155000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144805_11-PUIVERT_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144805_11-PUIVERT_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M35S", + "extent_ms": 155000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144805.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144805.wav", + "format": "audio/x-wav", + "extent": "PT02M35S", + "extent_ms": 155000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144805_11-PUIVERT_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144805_11-PUIVERT_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M35S", + "extent_ms": 155000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Puivert', - 'http://sws.geonames.org/6426809/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Puivert", + "http://sws.geonames.org/6426809/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aude, Puivert', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aude, Puivert", + "datatype": null, + "lang": "fr" } ], - 'latitude': '42.921', - 'longitude': '2.0474' + "latitude": "42.921", + "longitude": "2.0474" } }, { - 'id': '11280.100/crdo-11-RIBOUISSE_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-11-RIBOUISSE_SOUND', - 'title': 'ALLOc : Ribouisse : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:29:32+02:00', - 'issued': '2010-10-25T18:29:32+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-11-RIBOUISSE_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-11-RIBOUISSE_SOUND", + "title": "ALLOc : Ribouisse : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:29:32+02:00", + "issued": "2010-10-25T18:29:32+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Dournès, Lucien', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'De Lorenzo, Linda', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Dournès, Lucien", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "De Lorenzo, Linda", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-RIBOUISSE.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-RIBOUISSE.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144806_11-RIBOUISSE_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144806_11-RIBOUISSE_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M11S', - 'extent_ms': 191000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144806.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144806.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M11S', - 'extent_ms': 191000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144806_11-RIBOUISSE_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144806_11-RIBOUISSE_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT03M11S', - 'extent_ms': 191000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144806_11-RIBOUISSE_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144806_11-RIBOUISSE_22km.wav", + "format": "audio/x-wav", + "extent": "PT03M11S", + "extent_ms": 191000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144806.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144806.wav", + "format": "audio/x-wav", + "extent": "PT03M11S", + "extent_ms": 191000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144806_11-RIBOUISSE_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144806_11-RIBOUISSE_44k.mp3", + "format": "audio/mpeg", + "extent": "PT03M11S", + "extent_ms": 191000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Ribouisse', - 'http://sws.geonames.org/6426816/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Ribouisse", + "http://sws.geonames.org/6426816/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aude, Ribouisse', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aude, Ribouisse", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.1825', - 'longitude': '1.8975' + "latitude": "43.1825", + "longitude": "1.8975" } }, { - 'id': '11280.100/crdo-11-SONNAC-SUR-L-HERS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-11-SONNAC-SUR-L-HERS_SOUND', - 'title': 'ALLOc : Sonnac-sur-l\'Hers : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:29:56+02:00', - 'issued': '2010-10-25T18:29:56+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-11-SONNAC-SUR-L-HERS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-11-SONNAC-SUR-L-HERS_SOUND", + "title": "ALLOc : Sonnac-sur-l'Hers : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:29:56+02:00", + "issued": "2010-10-25T18:29:56+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Dumons, Marcellin', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'De Lorenzo, Linda', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Dumons, Marcellin", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "De Lorenzo, Linda", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112' + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112" ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-SONNAC-SUR-L-HERS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-SONNAC-SUR-L-HERS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144807_11-SONNAC-SUR-L-HERS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144807_11-SONNAC-SUR-L-HERS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M27S', - 'extent_ms': 147000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144807.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144807.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M27S', - 'extent_ms': 147000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144807_11-SONNAC-SUR-L-HERS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144807_11-SONNAC-SUR-L-HERS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M27S', - 'extent_ms': 147000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144807_11-SONNAC-SUR-L-HERS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144807_11-SONNAC-SUR-L-HERS_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M27S", + "extent_ms": 147000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144807.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144807.wav", + "format": "audio/x-wav", + "extent": "PT02M27S", + "extent_ms": 147000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144807_11-SONNAC-SUR-L-HERS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144807_11-SONNAC-SUR-L-HERS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M27S", + "extent_ms": 147000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Sonnac-sur-l\'Hers', - 'http://sws.geonames.org/6426874/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Sonnac-sur-l'Hers", + "http://sws.geonames.org/6426874/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aude, Sonnac-sur-l\'Hers', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aude, Sonnac-sur-l'Hers", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.00389', - 'longitude': '1.99306' + "latitude": "43.00389", + "longitude": "1.99306" } }, { - 'id': '11280.100/crdo-11-ST-MARTIN-LALANDE_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-11-ST-MARTIN-LALANDE_SOUND', - 'title': 'ALLOc : Saint-Martin-Lalande : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:30:27+02:00', - 'issued': '2010-10-25T18:30:27+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-11-ST-MARTIN-LALANDE_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-11-ST-MARTIN-LALANDE_SOUND", + "title": "ALLOc : Saint-Martin-Lalande : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:30:27+02:00", + "issued": "2010-10-25T18:30:27+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Hugonnet, Pierre', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'De Lorenzo, Linda', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Hugonnet, Pierre", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "De Lorenzo, Linda", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-ST-MARTIN-LALANDE.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-11-ST-MARTIN-LALANDE.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144808_11-ST-MARTIN-LALANDE_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144808_11-ST-MARTIN-LALANDE_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01M59S', - 'extent_ms': 119000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144808.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144808.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01M59S', - 'extent_ms': 119000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144808_11-ST-MARTIN-LALANDE_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144808_11-ST-MARTIN-LALANDE_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT01M59S', - 'extent_ms': 119000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144808_11-ST-MARTIN-LALANDE_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144808_11-ST-MARTIN-LALANDE_22km.wav", + "format": "audio/x-wav", + "extent": "PT01M59S", + "extent_ms": 119000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144808.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144808.wav", + "format": "audio/x-wav", + "extent": "PT01M59S", + "extent_ms": 119000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144808_11-ST-MARTIN-LALANDE_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144808_11-ST-MARTIN-LALANDE_44k.mp3", + "format": "audio/mpeg", + "extent": "PT01M59S", + "extent_ms": 119000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Saint-Martin-Lalande', - 'http://sws.geonames.org/6426853/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Saint-Martin-Lalande", + "http://sws.geonames.org/6426853/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aude, Saint-Martin-Lalande', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aude, Saint-Martin-Lalande", + "datatype": null, + "lang": "fr" } ], - 'latitude': '43.29944', - 'longitude': '2.01944' + "latitude": "43.29944", + "longitude": "2.01944" } }, { - 'id': '11280.100/crdo-12-AUZITS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-AUZITS_SOUND', - 'title': 'ALLOc : Auzits : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:31:22+02:00', - 'issued': '2010-10-25T18:31:22+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-AUZITS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-AUZITS_SOUND", + "title": "ALLOc : Auzits : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:31:22+02:00", + "issued": "2010-10-25T18:31:22+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Constans, André', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Bosc, Marie-Sophie', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Constans, André", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Bosc, Marie-Sophie", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-AUZITS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-AUZITS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144810_12-AUZITS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144810_12-AUZITS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M19S', - 'extent_ms': 199000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144810.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144810.wav', - 'format': 'audio/x-wav', - 'extent': 'PT03M19S', - 'extent_ms': 199000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144810_12-AUZITS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144810_12-AUZITS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT03M19S', - 'extent_ms': 199000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144810_12-AUZITS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144810_12-AUZITS_22km.wav", + "format": "audio/x-wav", + "extent": "PT03M19S", + "extent_ms": 199000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144810.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144810.wav", + "format": "audio/x-wav", + "extent": "PT03M19S", + "extent_ms": 199000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144810_12-AUZITS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144810_12-AUZITS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT03M19S", + "extent_ms": 199000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Auzits', - 'http://sws.geonames.org/6447048/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Auzits", + "http://sws.geonames.org/6447048/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Auzits', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Auzits", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.50694', - 'longitude': '2.32778' + "latitude": "44.50694", + "longitude": "2.32778" } }, { - 'id': '11280.100/crdo-12-JOUELS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-JOUELS_SOUND', - 'title': 'ALLOc : Jouels : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:31:21+02:00', - 'issued': '2010-10-25T18:31:21+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-JOUELS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-JOUELS_SOUND", + "title": "ALLOc : Jouels : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:31:21+02:00", + "issued": "2010-10-25T18:31:21+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Bayol, Maria', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Bosc, Marie-Sophie', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Bayol, Maria", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Bosc, Marie-Sophie", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-JOUELS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-JOUELS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144809_12-JOUELS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144809_12-JOUELS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M33S', - 'extent_ms': 153000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144809.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144809.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M33S', - 'extent_ms': 153000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144809_12-JOUELS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144809_12-JOUELS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M33S', - 'extent_ms': 153000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144809_12-JOUELS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144809_12-JOUELS_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M33S", + "extent_ms": 153000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144809.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144809.wav", + "format": "audio/x-wav", + "extent": "PT02M33S", + "extent_ms": 153000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144809_12-JOUELS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144809_12-JOUELS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M33S", + "extent_ms": 153000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Sauveterre-de-Rouergue', - 'http://sws.geonames.org/6427053/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Sauveterre-de-Rouergue", + "http://sws.geonames.org/6427053/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Sauveterre-de-Rouergue (Jouels)', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Sauveterre-de-Rouergue (Jouels)", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.22056', - 'longitude': '2.31778' + "latitude": "44.22056", + "longitude": "2.31778" } }, { - 'id': '11280.100/crdo-12-LACASSAGNE_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-LACASSAGNE_SOUND', - 'title': 'ALLOc : Lacassagne : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:31:43+02:00', - 'issued': '2010-10-25T18:31:43+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-LACASSAGNE_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-LACASSAGNE_SOUND", + "title": "ALLOc : Lacassagne : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:31:43+02:00", + "issued": "2010-10-25T18:31:43+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Andrieu, Honoré', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Bosc, Marie-Sophie', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Andrieu, Honoré", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Bosc, Marie-Sophie", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-LACASSAGNE.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-LACASSAGNE.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144811_12-LACASSAGNE_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144811_12-LACASSAGNE_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M52S', - 'extent_ms': 172000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144811.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144811.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M52S', - 'extent_ms': 172000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144811_12-LACASSAGNE_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144811_12-LACASSAGNE_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M52S', - 'extent_ms': 172000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144811_12-LACASSAGNE_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144811_12-LACASSAGNE_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M52S", + "extent_ms": 172000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144811.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144811.wav", + "format": "audio/x-wav", + "extent": "PT02M52S", + "extent_ms": 172000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144811_12-LACASSAGNE_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144811_12-LACASSAGNE_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M52S", + "extent_ms": 172000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [], - 'notes': [ + "geoInfo": { + "ref-locs": [], + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'southlimit=41.371582; northlimit=51.092804; eastlimit=9.561556; westlimit=-5.142222', - 'datatype': 'http://purl.org/dc/terms/Box', - 'lang': null + "value": "southlimit=41.371582; northlimit=51.092804; eastlimit=9.561556; westlimit=-5.142222", + "datatype": "http://purl.org/dc/terms/Box", + "lang": null }, { - 'value': 'France, Aveyron, Lacassagne', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Lacassagne", + "datatype": null, + "lang": "fr" } ], - 'latitude': null, - 'longitude': null + "latitude": null, + "longitude": null } }, { - 'id': '11280.100/crdo-12-LANUEJOULS_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-LANUEJOULS_SOUND', - 'title': 'ALLOc : Lanuéjouls : Parabole', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:32:16+02:00', - 'issued': '2010-10-25T18:32:16+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-LANUEJOULS_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-LANUEJOULS_SOUND", + "title": "ALLOc : Lanuéjouls : Parabole", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:32:16+02:00", + "issued": "2010-10-25T18:32:16+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': null, - 'url': 'http://viaf.org/viaf/56666014', - 'role': 'http://www.language-archives.org/OLAC/1.1/data_inputter' - }, - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/51700729', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Garric, Raymond', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Bosc, Marie-Sophie', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/transcriber' + "contributors": [ + { + "name": null, + "url": "http://viaf.org/viaf/56666014", + "role": "http://www.language-archives.org/OLAC/1.1/data_inputter" + }, + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/51700729", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Garric, Raymond", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Bosc, Marie-Sophie", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/transcriber" } ], - 'subjects': [ - 'http://ark.bnf.fr/ark:/12148/cb11946662b', - 'http://ark.bnf.fr/ark:/12148/cb11965628b', - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' - }, - 'http://ark.bnf.fr/ark:/12148/cb11970755h', - 'http://ark.bnf.fr/ark:/12148/cb119766112', - { - 'value': 'translating_and_interpreting', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null + "subjects": [ + "http://ark.bnf.fr/ark:/12148/cb11946662b", + "http://ark.bnf.fr/ark:/12148/cb11965628b", + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" + }, + "http://ark.bnf.fr/ark:/12148/cb11970755h", + "http://ark.bnf.fr/ark:/12148/cb119766112", + { + "value": "translating_and_interpreting", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null } ], - 'transcript': { - 'url': 'http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-LANUEJOULS.xml', - 'format': 'application/xml', - 'conforms-to': 'http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive' + "transcript": { + "url": "http://cocoon.huma-num.fr/exist/crdo/thesoc/oc/crdo-12-LANUEJOULS.xml", + "format": "application/xml", + "conforms-to": "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" }, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144812_12-LANUEJOULS_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144812_12-LANUEJOULS_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M34S', - 'extent_ms': 154000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144812.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144812.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02M34S', - 'extent_ms': 154000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144812_12-LANUEJOULS_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144812_12-LANUEJOULS_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02M34S', - 'extent_ms': 154000, - 'master': false + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144812_12-LANUEJOULS_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144812_12-LANUEJOULS_22km.wav", + "format": "audio/x-wav", + "extent": "PT02M34S", + "extent_ms": 154000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144812.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144812.wav", + "format": "audio/x-wav", + "extent": "PT02M34S", + "extent_ms": 154000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144812_12-LANUEJOULS_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144812_12-LANUEJOULS_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02M34S", + "extent_ms": 154000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Lanuéjouls', - 'http://sws.geonames.org/6615868/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Lanuéjouls", + "http://sws.geonames.org/6615868/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Lanuéjouls', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Lanuéjouls", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.4249', - 'longitude': '2.1608' + "latitude": "44.4249", + "longitude": "2.1608" } }, { - 'id': '11280.100/crdo-12-MARNAC1LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MARNAC1LEX_SOUND', - 'title': 'ALLOc : Marnac', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:33:17+02:00', - 'issued': '2010-10-25T18:33:17+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MARNAC1LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC1LEX_SOUND", + "title": "ALLOc : Marnac", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:33:17+02:00", + "issued": "2010-10-25T18:33:17+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/17256845', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Gibily, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Rouchy, Armand', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/17256845", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Gibily, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Rouchy, Armand", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144813_12-MARNAC1LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144813_12-MARNAC1LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H05M27S', - 'extent_ms': 3927000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144813.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144813.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H05M27S', - 'extent_ms': 3927000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144813_12-MARNAC1LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144813_12-MARNAC1LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT01H05M27S', - 'extent_ms': 3927000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144813_12-MARNAC1LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144813_12-MARNAC1LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT01H05M27S", + "extent_ms": 3927000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144813.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144813.wav", + "format": "audio/x-wav", + "extent": "PT01H05M27S", + "extent_ms": 3927000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144813_12-MARNAC1LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144813_12-MARNAC1LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT01H05M27S", + "extent_ms": 3927000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Marnac', - 'http://sws.geonames.org/6429427/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Marnac", + "http://sws.geonames.org/6429427/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Dordogne, Marnac', - 'datatype': null, - 'lang': 'fr' + "value": "France, Dordogne, Marnac", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.83694', - 'longitude': '1.02583' + "latitude": "44.83694", + "longitude": "1.02583" } }, { - 'id': '11280.100/crdo-12-MARNAC2LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MARNAC2LEX_SOUND', - 'title': 'ALLOc : Marnac-2', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:33:43+02:00', - 'issued': '2010-10-25T18:33:43+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MARNAC2LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC2LEX_SOUND", + "title": "ALLOc : Marnac-2", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:33:43+02:00", + "issued": "2010-10-25T18:33:43+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/17256845', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Gibily, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Rouchy, Armand', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/17256845", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Gibily, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Rouchy, Armand", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144814_12-MARNAC2LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144814_12-MARNAC2LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H08M08S', - 'extent_ms': 7688000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144814.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144814.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H08M08S', - 'extent_ms': 7688000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144814_12-MARNAC2LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144814_12-MARNAC2LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02H08M08S', - 'extent_ms': 7688000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144814_12-MARNAC2LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144814_12-MARNAC2LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT02H08M08S", + "extent_ms": 7688000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144814.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144814.wav", + "format": "audio/x-wav", + "extent": "PT02H08M08S", + "extent_ms": 7688000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144814_12-MARNAC2LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144814_12-MARNAC2LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02H08M08S", + "extent_ms": 7688000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Marnac', - 'http://sws.geonames.org/6429427/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Marnac", + "http://sws.geonames.org/6429427/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Dordogne, Marnac', - 'datatype': null, - 'lang': 'fr' + "value": "France, Dordogne, Marnac", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.83694', - 'longitude': '1.02583' + "latitude": "44.83694", + "longitude": "1.02583" } }, { - 'id': '11280.100/crdo-12-MARNAC3LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MARNAC3LEX_SOUND', - 'title': 'ALLOc : Marnac-3', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:33:51+02:00', - 'issued': '2010-10-25T18:33:51+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MARNAC3LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC3LEX_SOUND", + "title": "ALLOc : Marnac-3", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:33:51+02:00", + "issued": "2010-10-25T18:33:51+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/17256845', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Gibily, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Rouchy, Armand', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/17256845", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Gibily, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Rouchy, Armand", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144815_12-MARNAC3LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144815_12-MARNAC3LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H56M35S', - 'extent_ms': 6995000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144815.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144815.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H56M35S', - 'extent_ms': 6995000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144815_12-MARNAC3LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144815_12-MARNAC3LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT01H56M35S', - 'extent_ms': 6995000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144815_12-MARNAC3LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144815_12-MARNAC3LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT01H56M35S", + "extent_ms": 6995000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144815.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144815.wav", + "format": "audio/x-wav", + "extent": "PT01H56M35S", + "extent_ms": 6995000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144815_12-MARNAC3LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144815_12-MARNAC3LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT01H56M35S", + "extent_ms": 6995000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Marnac', - 'http://sws.geonames.org/6429427/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Marnac", + "http://sws.geonames.org/6429427/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Dordogne, Marnac', - 'datatype': null, - 'lang': 'fr' + "value": "France, Dordogne, Marnac", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.83694', - 'longitude': '1.02583' + "latitude": "44.83694", + "longitude": "1.02583" } }, { - 'id': '11280.100/crdo-12-MARNAC4MORPHO_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MARNAC4MORPHO_SOUND', - 'title': 'ALLOc : Marnac-4', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:34:19+02:00', - 'issued': '2010-10-25T18:34:19+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MARNAC4MORPHO_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC4MORPHO_SOUND", + "title": "ALLOc : Marnac-4", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:34:19+02:00", + "issued": "2010-10-25T18:34:19+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/17256845', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Gibily, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Rouchy, Armand', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/17256845", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Gibily, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Rouchy, Armand", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144816_12-MARNAC4MORPHO_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144816_12-MARNAC4MORPHO_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT11M23S', - 'extent_ms': 683000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144816.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144816.wav', - 'format': 'audio/x-wav', - 'extent': 'PT11M23S', - 'extent_ms': 683000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144816_12-MARNAC4MORPHO_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144816_12-MARNAC4MORPHO_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT11M23S', - 'extent_ms': 683000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144816_12-MARNAC4MORPHO_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144816_12-MARNAC4MORPHO_22km.wav", + "format": "audio/x-wav", + "extent": "PT11M23S", + "extent_ms": 683000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144816.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144816.wav", + "format": "audio/x-wav", + "extent": "PT11M23S", + "extent_ms": 683000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144816_12-MARNAC4MORPHO_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144816_12-MARNAC4MORPHO_44k.mp3", + "format": "audio/mpeg", + "extent": "PT11M23S", + "extent_ms": 683000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Marnac', - 'http://sws.geonames.org/6429427/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Marnac", + "http://sws.geonames.org/6429427/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Dordogne, Marnac', - 'datatype': null, - 'lang': 'fr' + "value": "France, Dordogne, Marnac", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.83694', - 'longitude': '1.02583' + "latitude": "44.83694", + "longitude": "1.02583" } }, { - 'id': '11280.100/crdo-12-MARNAC5MORPHO_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MARNAC5MORPHO_SOUND', - 'title': 'ALLOc : Marnac-5', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:35:45+02:00', - 'issued': '2010-10-25T18:35:45+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MARNAC5MORPHO_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MARNAC5MORPHO_SOUND", + "title": "ALLOc : Marnac-5", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:35:45+02:00", + "issued": "2010-10-25T18:35:45+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/17256845', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Gibily, Jeanne', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Rouchy, Armand', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/17256845", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Gibily, Jeanne", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Rouchy, Armand", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'morphology', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "morphology", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144817_12-MARNAC5MORPHO_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144817_12-MARNAC5MORPHO_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H02M25S', - 'extent_ms': 3745000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144817.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144817.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H02M25S', - 'extent_ms': 3745000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144817_12-MARNAC5MORPHO_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144817_12-MARNAC5MORPHO_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT01H02M25S', - 'extent_ms': 3745000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144817_12-MARNAC5MORPHO_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144817_12-MARNAC5MORPHO_22km.wav", + "format": "audio/x-wav", + "extent": "PT01H02M25S", + "extent_ms": 3745000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144817.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144817.wav", + "format": "audio/x-wav", + "extent": "PT01H02M25S", + "extent_ms": 3745000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144817_12-MARNAC5MORPHO_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144817_12-MARNAC5MORPHO_44k.mp3", + "format": "audio/mpeg", + "extent": "PT01H02M25S", + "extent_ms": 3745000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Marnac', - 'http://sws.geonames.org/6429427/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Marnac", + "http://sws.geonames.org/6429427/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Dordogne, Marnac', - 'datatype': null, - 'lang': 'fr' + "value": "France, Dordogne, Marnac", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.83694', - 'longitude': '1.02583' + "latitude": "44.83694", + "longitude": "1.02583" } }, { - 'id': '11280.100/crdo-12-MAYRAN1LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MAYRAN1LEX_SOUND', - 'title': 'ALLOc : Mayran', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:36:22+02:00', - 'issued': '2010-10-25T18:36:22+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MAYRAN1LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN1LEX_SOUND", + "title": "ALLOc : Mayran", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:36:22+02:00", + "issued": "2010-10-25T18:36:22+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Boutary Jeannette', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Boutary Simon', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Lacombe Ruben', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Clément', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Léa', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Pierre', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Boutary Jeannette", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Boutary Simon", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Lacombe Ruben", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Clément", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Léa", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Pierre", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144818_12-MAYRAN1LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144818_12-MAYRAN1LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H26M21S', - 'extent_ms': 5181000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144818.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144818.wav', - 'format': 'audio/x-wav', - 'extent': 'PT01H26M21S', - 'extent_ms': 5181000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144818_12-MAYRAN1LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144818_12-MAYRAN1LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT01H26M21S', - 'extent_ms': 5181000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144818_12-MAYRAN1LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144818_12-MAYRAN1LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT01H26M21S", + "extent_ms": 5181000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144818.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144818.wav", + "format": "audio/x-wav", + "extent": "PT01H26M21S", + "extent_ms": 5181000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144818_12-MAYRAN1LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144818_12-MAYRAN1LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT01H26M21S", + "extent_ms": 5181000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Mayran', - 'http://sws.geonames.org/6426959/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Mayran", + "http://sws.geonames.org/6426959/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Mayran', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Mayran", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.38833', - 'longitude': '2.36361' + "latitude": "44.38833", + "longitude": "2.36361" } }, { - 'id': '11280.100/crdo-12-MAYRAN2LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MAYRAN2LEX_SOUND', - 'title': 'ALLOc : Mayran', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:36:52+02:00', - 'issued': '2010-10-25T18:36:52+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MAYRAN2LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN2LEX_SOUND", + "title": "ALLOc : Mayran", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:36:52+02:00", + "issued": "2010-10-25T18:36:52+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Boutary Jeannette', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Boutary Simon', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Lacombe Ruben', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Clément', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Léa', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Pierre', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Boutary Jeannette", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Boutary Simon", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Lacombe Ruben", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Clément", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Léa", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Pierre", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144819_12-MAYRAN2LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144819_12-MAYRAN2LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H06M51S', - 'extent_ms': 7611000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144819.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144819.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H06M51S', - 'extent_ms': 7611000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144819_12-MAYRAN2LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144819_12-MAYRAN2LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02H06M51S', - 'extent_ms': 7611000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144819_12-MAYRAN2LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144819_12-MAYRAN2LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT02H06M51S", + "extent_ms": 7611000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144819.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144819.wav", + "format": "audio/x-wav", + "extent": "PT02H06M51S", + "extent_ms": 7611000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144819_12-MAYRAN2LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144819_12-MAYRAN2LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02H06M51S", + "extent_ms": 7611000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Mayran', - 'http://sws.geonames.org/6426959/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Mayran", + "http://sws.geonames.org/6426959/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Mayran', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Mayran", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.38833', - 'longitude': '2.36361' + "latitude": "44.38833", + "longitude": "2.36361" } }, { - 'id': '11280.100/crdo-12-MAYRAN3LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MAYRAN3LEX_SOUND', - 'title': 'ALLOc : Mayran-3', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:36:54+02:00', - 'issued': '2010-10-25T18:36:54+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MAYRAN3LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN3LEX_SOUND", + "title": "ALLOc : Mayran-3", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:36:54+02:00", + "issued": "2010-10-25T18:36:54+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Boutary Jeannette', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Boutary Simon', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Lacombe Ruben', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Clément', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Léa', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Pierre', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Boutary Jeannette", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Boutary Simon", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Lacombe Ruben", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Clément", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Léa", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Pierre", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144820_12-MAYRAN3LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144820_12-MAYRAN3LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H06M57S', - 'extent_ms': 7617000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144820.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144820.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H06M57S', - 'extent_ms': 7617000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144820_12-MAYRAN3LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144820_12-MAYRAN3LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02H06M57S', - 'extent_ms': 7617000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144820_12-MAYRAN3LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144820_12-MAYRAN3LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT02H06M57S", + "extent_ms": 7617000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144820.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144820.wav", + "format": "audio/x-wav", + "extent": "PT02H06M57S", + "extent_ms": 7617000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144820_12-MAYRAN3LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144820_12-MAYRAN3LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02H06M57S", + "extent_ms": 7617000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Mayran', - 'http://sws.geonames.org/6426959/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Mayran", + "http://sws.geonames.org/6426959/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Mayran', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Mayran", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.38833', - 'longitude': '2.36361' + "latitude": "44.38833", + "longitude": "2.36361" } }, { - 'id': '11280.100/crdo-12-MAYRAN4LEX_SOUND', - 'uri': 'https://hdl.handle.net/11280.100/crdo-12-MAYRAN4LEX_SOUND', - 'title': 'ALLOc : Mayran-4', - 'language': 'http://lexvo.org/id/iso639-3/oci', - 'modified': '2010-10-25T18:37:07+02:00', - 'issued': '2010-10-25T18:37:07+02:00', - 'publishers': [ - 'Équipe de Recherche en Syntaxe et Sémantique', - 'Bases, corpus, langage' + "id": "11280.100/crdo-12-MAYRAN4LEX_SOUND", + "uri": "https://hdl.handle.net/11280.100/crdo-12-MAYRAN4LEX_SOUND", + "title": "ALLOc : Mayran-4", + "languages": [ + "http://lexvo.org/id/iso639-3/oci" + ], + "modified": "2010-10-25T18:37:07+02:00", + "issued": "2010-10-25T18:37:07+02:00", + "publishers": [ + "Équipe de Recherche en Syntaxe et Sémantique", + "Bases, corpus, langage" ], - 'contributors': [ - { - 'name': 'LDOR', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Thésaurus Occitan', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/depositor' - }, - { - 'name': 'Équipe de Recherche en Syntaxe et Sémantique', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': 'Bases, corpus, langage', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/editor' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/interviewer' - }, - { - 'name': null, - 'url': 'http://viaf.org/viaf/91792187', - 'role': 'http://www.language-archives.org/OLAC/1.1/researcher' - }, - { - 'name': 'Boutary Jeannette', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Boutary Simon', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Lacombe Ruben', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Clément', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Léa', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' - }, - { - 'name': 'Solignac Pierre', - 'url': null, - 'role': 'http://www.language-archives.org/OLAC/1.1/speaker' + "contributors": [ + { + "name": "LDOR", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Thésaurus Occitan", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/depositor" + }, + { + "name": "Équipe de Recherche en Syntaxe et Sémantique", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": "Bases, corpus, langage", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/editor" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/interviewer" + }, + { + "name": null, + "url": "http://viaf.org/viaf/91792187", + "role": "http://www.language-archives.org/OLAC/1.1/researcher" + }, + { + "name": "Boutary Jeannette", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Boutary Simon", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Lacombe Ruben", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Clément", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Léa", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" + }, + { + "name": "Solignac Pierre", + "url": null, + "role": "http://www.language-archives.org/OLAC/1.1/speaker" } ], - 'subjects': [ - { - 'value': 'lexicography', - 'datatype': 'http://www.language-archives.org/OLAC/1.1/linguistic-field', - 'lang': null - }, - 'http://lexvo.org/id/iso639-3/oci', - { - 'value': 'Occitan/Languedocien', - 'datatype': null, - 'lang': 'fr' + "subjects": [ + { + "value": "lexicography", + "datatype": "http://www.language-archives.org/OLAC/1.1/linguistic-field", + "lang": null + }, + "http://lexvo.org/id/iso639-3/oci", + { + "value": "Occitan/Languedocien", + "datatype": null, + "lang": "fr" } ], - 'transcript': null, - 'mediaArray': { - 'http://cocoon.huma-num.fr/data/archi/144821_12-MAYRAN4LEX_22km.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/144821_12-MAYRAN4LEX_22km.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H06M55S', - 'extent_ms': 7615000, - 'master': false - }, - 'http://cocoon.huma-num.fr/data/archi/masters/144821.wav': { - 'url': 'http://cocoon.huma-num.fr/data/archi/masters/144821.wav', - 'format': 'audio/x-wav', - 'extent': 'PT02H06M55S', - 'extent_ms': 7615000, - 'master': true - }, - 'http://cocoon.huma-num.fr/data/archi/mp3/144821_12-MAYRAN4LEX_44k.mp3': { - 'url': 'http://cocoon.huma-num.fr/data/archi/mp3/144821_12-MAYRAN4LEX_44k.mp3', - 'format': 'audio/mpeg', - 'extent': 'PT02H06M55S', - 'extent_ms': 7615000, - 'master': false + "transcript": null, + "mediaArray": { + "http://cocoon.huma-num.fr/data/archi/144821_12-MAYRAN4LEX_22km.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/144821_12-MAYRAN4LEX_22km.wav", + "format": "audio/x-wav", + "extent": "PT02H06M55S", + "extent_ms": 7615000, + "master": false + }, + "http://cocoon.huma-num.fr/data/archi/masters/144821.wav": { + "url": "http://cocoon.huma-num.fr/data/archi/masters/144821.wav", + "format": "audio/x-wav", + "extent": "PT02H06M55S", + "extent_ms": 7615000, + "master": true + }, + "http://cocoon.huma-num.fr/data/archi/mp3/144821_12-MAYRAN4LEX_44k.mp3": { + "url": "http://cocoon.huma-num.fr/data/archi/mp3/144821_12-MAYRAN4LEX_44k.mp3", + "format": "audio/mpeg", + "extent": "PT02H06M55S", + "extent_ms": 7615000, + "master": false } }, - 'geoInfo': { - 'ref-locs': [ - 'http://fr.dbpedia.org/resource/Mayran', - 'http://sws.geonames.org/6426959/' + "geoInfo": { + "ref-locs": [ + "http://fr.dbpedia.org/resource/Mayran", + "http://sws.geonames.org/6426959/" ], - 'notes': [ + "notes": [ { - 'value': 'FR', - 'datatype': 'http://purl.org/dc/terms/ISO3166', - 'lang': null + "value": "FR", + "datatype": "http://purl.org/dc/terms/ISO3166", + "lang": null }, { - 'value': 'France, Aveyron, Mayran', - 'datatype': null, - 'lang': 'fr' + "value": "France, Aveyron, Mayran", + "datatype": null, + "lang": "fr" } ], - 'latitude': '44.38833', - 'longitude': '2.36361' + "latitude": "44.38833", + "longitude": "2.36361" } } -]; +]; \ No newline at end of file diff -r 4a3899b6a7ed -r 766af1228b05 server/bo_client/server/fixtures/lexvo.js --- a/server/bo_client/server/fixtures/lexvo.js Sun Oct 16 22:23:31 2016 +0530 +++ b/server/bo_client/server/fixtures/lexvo.js Sun Oct 16 23:19:57 2016 +0530 @@ -3,5 +3,15 @@ module.exports = { 'fra': 'français', 'gsw': 'alémanique', - 'oci': 'occitan' + 'oci': 'occitan', + 'corpus-global': 'global', + 'corpus-regionals': 'langues régionales', + 'corpus-oil': 'langues d\'oïl', + 'corpus-creoles': 'les créoles', + 'corpus-non-territorials': 'langues non territoriales', + 'corpus-guyane': 'Guyane', + 'corpus-mayotte': 'Mayotte', + 'corpus-polynesia': 'Polynésie française', + 'corpus-wallis-futuna': 'Wallis et Futuna', + 'corpus-new-caledonia': 'Nouvelle-Calédonie' }; diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Console/Commands/ImportCocoonRDF.php --- a/server/src/app/Console/Commands/ImportCocoonRDF.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Console/Commands/ImportCocoonRDF.php Sun Oct 16 23:19:57 2016 +0530 @@ -100,8 +100,8 @@ $documentCounts = ['all' => 0, 'unknown' => 0, 'error' => 0]; foreach ($recs as $item) { - - $identifier = (string) $item->xpath('/record/header/identifier')[0]; + $item->registerXPathNamespace('oai', "http://www.openarchives.org/OAI/2.0/"); + $identifier = (string) $item->xpath('/oai:record/oai:header/oai:identifier')[0]; $docRdfUrl = Config::get('corpusparole.cocoon_rdf_base_uri').substr($identifier, strlen(Config::get('corpusparole.cocoon_doc_id_base'))); $message = "$identifier : $docRdfUrl"; if($recs->getNumRetrieved() <= $skip) { diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Console/Commands/IndexDocuments.php --- a/server/src/app/Console/Commands/IndexDocuments.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Console/Commands/IndexDocuments.php Sun Oct 16 23:19:57 2016 +0530 @@ -2,12 +2,28 @@ namespace CorpusParole\Console\Commands; + + use Illuminate\Console\Command; +use EasyRdf\Resource; +use EasyRdf\Literal; +use EasyRdf\Graph; + +use Carbon\Carbon; + use GuzzleHttp\Client; +use GuzzleHttp\Exception\TransferException; +use GuzzleHttp\Psr7; + +use CorpusParole\Libraries\Utils; use CorpusParole\Repositories\DocumentRepository; use CorpusParole\Libraries\CocoonUtils; use CorpusParole\Models\GeonamesHierarchy; +use CorpusParole\Services\BnfResolverInterface; +use CorpusParole\Services\LexvoResolverInterface; use Es; +use Log; +use Cache; class IndexDocuments extends Command { @@ -20,7 +36,8 @@ protected $signature = 'corpus-parole:indexDocuments {--limit=0 : index only the first n documents, 0 (default) means index everything } {--no-bulk : index documents one by one instead of using ElasticSearch bulk indexing } - {--step-size=100 : number of documents to retrieve from repository at a time before indexing}'; + {--step-size=100 : number of documents to retrieve from repository at a time before indexing} + {--reset-geo-cache : reset geo cache befr indexing}'; /** * The console command description. @@ -34,9 +51,15 @@ * * @return void */ - public function __construct(DocumentRepository $documentRepository, Client $httpClient) + public function __construct( + DocumentRepository $documentRepository, + Client $httpClient, + BnfResolverInterface $bnfResolver, + LexvoResolverInterface $lexvoResolver) { $this->documentRepository = $documentRepository; + $this->bnfResolver = $bnfResolver; + $this->lexvoResolver = $lexvoResolver; $this->httpClient = $httpClient; parent::__construct(); } @@ -65,7 +88,8 @@ 'settings' => [ 'number_of_shards' => config('elasticsearch.shards'), 'number_of_replicas' => config('elasticsearch.replicas'), - 'index.mapping.ignore_malformed' => True + 'index.mapping.ignore_malformed' => True, + 'index.requests.cache.enable' => True ], 'mappings' => [ 'document' => [ @@ -79,10 +103,20 @@ ] ] ], - 'date' => [ 'type' => 'date' ], - 'geonames_hyerarchy' => [ 'type' => 'string' ], - 'location' => [ 'type' => 'geo_point' ] - // TODO: add location information + 'date' => [ 'type' => 'date', 'index' => 'not_analyzed'], + 'geonames_hyerarchy' => [ 'type' => 'string', 'index' => 'not_analyzed'], + 'location' => [ 'type' => 'geo_point'], + 'creation_date' => ['type' => 'date', 'index' => 'not_analyzed'], + 'language' => ['type' => 'string', 'index' => 'not_analyzed'], + 'discourse_types' => ['type' => 'string', 'index' => 'not_analyzed'], + 'subject' => [ + 'type' => 'nested', + 'properties' => [ + 'label' => [ 'type' => 'string', 'index' => 'not_analyzed'], + 'code' => [ 'type' => 'string', 'index' => 'not_analyzed'], + 'label_code' => [ 'type' => 'string', 'index' => 'not_analyzed'] + ] + ] ] ] ] @@ -96,7 +130,7 @@ private function getGeonamesHierarchyArray($geonamesid) { - // TODO: Manage this cache !!! + $hcache = GeonamesHierarchy::where('geonamesid', $geonamesid)->first(); if(is_null($hcache)) { @@ -112,7 +146,7 @@ ] )->getBody(); $hjson = json_decode($apiBody); - $hcache = new GeonamesHierarchy; + $hcache = new GeonamesHierarchy(); $hcache->geonamesid = $geonamesid; $hcache->hierarchy = $hjson; $hcache->save(); @@ -124,7 +158,6 @@ array_push($res, $hierarchyElem['geonameId']); } } - return $res; } @@ -153,22 +186,311 @@ } /** + * get subjects as { 'label': label, 'code': code } objects + * Takes only into account the bnf subjects + */ + private function getSubjects($doc) { + + $sres = array_reduce($doc->getSubjects(), function($res, $s) { + $mBnf = []; + $mLexvo = []; + + if($s instanceof Resource && preg_match(config('corpusparole.bnf_ark_url_regexp'), $s->getUri(), $mBnf) === 1) { + + array_push($res, [ + 'uri' => $mBnf[0], + 'code' => $mBnf[1], + 'type' => 'bnf' + ]); + } elseif($s instanceof Resource && preg_match(config('corpusparole.lexvo_url_regexp'), $s->getUri(), $mLexvo) === 1) { + array_push($res, [ + 'uri' => $mLexvo[0], + 'code' => $mLexvo[1], + 'type' => 'lxv' + ]); + } elseif($s instanceof Literal && strpos($s->getDatatypeUri(), config('corpusparole.olac_base_url')) === 0 ) { + array_push($res, [ + 'uri' => $s->getValue(), + 'code' => $s->getValue(), + 'type' => 'olac' + ]); + } elseif($s instanceof Literal) { + array_push($res, [ + 'uri' => $s->getValue(), + 'code' => $s->getValue(), + 'type' => 'txt' + ]); + } + return $res; + }, []); + + $labelsBnf = $this->bnfResolver->getLabels( + array_unique(array_reduce( + $sres, + function($r, $so) { + if($so['type'] === 'bnf') { + array_push($r, $so['uri']); + } + return $r; + },[] + )) + ); + $labelsLexvo = $this->lexvoResolver->getNames( + array_unique(array_reduce( + $sres, + function($r, $so) { + if($so['type'] === 'lxv') { + array_push($r, $so['uri']); + } + return $r; + },[] + )) + ); + + return array_map(function($so) use ($labelsBnf, $labelsLexvo) { + $label = $so['uri']; + if($so['type'] === 'bnf') { + $label = $labelsBnf[$label]; + } elseif ($so['type'] === 'lxv') { + $label = $labelsLexvo[$label]; + } + return [ 'label' => $label, 'code' => $so['code'], 'label_code' => $label."|".$so['type']."|".$so['code'] ]; }, $sres + ); + } + + private function graphResolvCoordinate($loc, $graph) { + $latLit = $graph->getLiteral($loc, ""); + if(is_null($latLit) || empty($latLit->getValue())) { + return null; + } + $lat = $latLit->getValue(); + + $longLit = $graph->getLiteral($loc, ""); + if(is_null($longLit) || empty($longLit->getValue())) { + return null; + } + $long = $longLit->getValue(); + + return [ $lat, $long ]; + } + + private function loadGraph($url, $type) { + try { + $r = $this->httpClient->get($url); + } catch (TransferException $e) { + $this->error("loadGraph : Error Loading $url"); + Log::error("loadGraph : Error Loading $url"); + Log::error("loadGraph : Error request " . Psr7\str($e->getRequest())); + if ($e->hasResponse()) { + $this->error("loadGraph : Error response " . Psr7\str($e->getResponse())); + Log::error("loadGraph : Error response " . Psr7\str($e->getResponse())); + } + return null; + } + try { + $message = (string)$r->getBody(); + $graph = new Graph($url, $message, $type); + return $graph; + } catch (EasyRdf\Exception $e) { + $this->error("loadGraph : Error parsing $url"); + Log::error("loadGraph : Error parsing $url"); + if($e instanceof EasyRdf\Parser\Exception) { + Log::error("loadGraph : Error exception line ".$e->getLine().", column: ".$e->getColumn()); + } + $this->error("loadGraph : Error exception message ".$e->getMessage()); + Log::error("loadGraph : Error exception message ".$e->getMessage()); + Log::error("loadGraph : Error content $message"); + return null; + } + + } + + private function geonamesResolveCoordinates($loc) { + $coords = cache("corpus.geonames.coord.$loc"); + if(is_null($coords)) { + $graph = $this->loadGraph("{$loc}about.rdf", 'rdfxml'); + $coords = is_null($graph)?null:$this->graphResolvCoordinate($loc, $graph); + cache(["corpus.geonames.coord.$loc" => is_null($coords)?false:$coords], Carbon::now()->addMinutes(20)); + } + return ($coords===false)?null:$coords; + } + + private function dbpediaResolveCoordinates($loc) { + $coords = cache("corpus.dbpedia.coord.$loc"); + if(is_null($coords)) { + $graph = $this->loadGraph("$loc.rdf", 'rdfxml'); + $coords = is_null($graph)?null:$this->graphResolvCoordinate($loc, $graph); + cache(["corpus.dbpedia.coord.$loc"=> is_null($coords)?false:$coords], Carbon::now()->addMinutes(20)); + } + return ($coords===false)?null:$coords; + } + + private function getLocation($doc) { + + $geoRes = $doc->getGeoInfo(); + + if(is_null($geoRes)) { + return null; + } + + $locUrls = []; + foreach($geoRes->getRefLocs() as $loc) { + if(preg_match(config('corpusparole.geonames_url_regexp'), $loc, $m) === 1) { + + if(!array_key_exists('geonames', $locUrls)) { + $locUrls['geonames'] = []; + } + array_push($locUrls['geonames'], "http://sws.geonames.org/$m[1]/"); + + } elseif(preg_match(config('corpusparole.dbpedia_url_regexp'), $loc, $md) === 1) { + if(!array_key_exists('dbpedia', $locUrls)) { + $locUrls['dbpedia'] = []; + } + //$this->line("DBPEDIA MATCH $loc ".print_r($md,true)); + array_push($locUrls['dbpedia'], "http://$md[1]/data/$md[4]"); + } + } + + $coordinates = null; + foreach($locUrls as $locType => $locList) { + foreach($locList as $locationUrl) { + $coordinates = call_user_func([$this, "${locType}ResolveCoordinates"], $locationUrl); + if(!is_null($coordinates)) { + break; + } + } + } + + if(is_null($coordinates)) { + $coordinates = [$geoRes->getLatitudeValue(), $geoRes->getLongitudeValue()]; + } + + if(empty($coordinates[0]) || empty($coordinates[1])) { + return null; + } else { + return [floatval($coordinates[0]), floatval($coordinates[1])]; + } + + } + + private function getCreationDate($doc) { + + $created = $doc->getCreated(); + if(is_null($created)) { + return null; + } + $dateType = $created->getDatatypeUri(); + $res = null; + + if($dateType === "http://purl.org/dc/terms/Period") { + $res = $this->processPeriod($created->getValue()); + } + elseif($dateType === "http://purl.org/dc/terms/W3CDTF") { + $res = $this->processDate($created->getValue()); + } + + return $res; + + } + + private function extractDate($dateStr) { + if(preg_match("/^\\d{4}$/", $dateStr) === 1) { + $dateStr = "$dateStr-1-1"; + } + $date = date_create($dateStr); + if($date === false ) { + Log::warning("DateStatsController:extractYear bad format for date $dateStr"); + return null; + } + return $date; + } + + private function processPeriod($periodStr) { + $start = null; + $end = null; + foreach(explode(";", $periodStr) as $elem) { + $elem = trim($elem); + if(strpos($elem, 'start=') === 0) { + $startDate = $this->extractDate(trim(substr($elem, 6))); + if(is_null($startDate)) { + return null; + } + $start = intval($startDate->format("Y")); + if($start === false) { + return null; + } + } elseif(strpos($elem, 'end=') === 0) { + $endDate = $this->extractDate(trim(substr($elem, 4))); + if(is_null($endDate)) { + return null; + } + $end = intval($endDate->format("Y")); + if($end === false) { + return null; + } + } + } + + if(is_null($start) || is_null($end) || $start>$end ) { + Log::warning("Bad format for $periodStr"); + return null; + } + + return array_map(function($y) { + return \DateTime::createFromFormat("Y", "$y")->format(\DateTime::W3C); + }, range($start, $end)); + } + + private function processDate($dateStr) { + $date = $this->extractDate($dateStr); + if(is_null($date)) { + return null; + } else { + return $date->format(\DateTime::W3C); + } + } + + private function getDiscourseTypes($doc) { + return array_reduce($doc->getDiscourseTypes(), function($res, $d) { + $val = null; + if($d instanceof Resource) { + $val = $d->getUri(); + } elseif($d instanceof Literal) { + $datatype = $d->getDatatypeURI(); + $val = (!empty($datatype)?"$datatype#":"").$d->getValue(); + } + if(!empty($val)) { + array_push($res,$val); + } + return $res; + }, []); + } + + private function getDocBody($doc) { + return [ + 'title' => (string)$doc->getTitle(), + 'date' => (string)$doc->getModified(), + 'location' => $this->getLocation($doc), + 'creation_date' => $this->getCreationDate($doc), + 'language' => $doc->getLanguagesValue(), + 'discourse_types' => $this->getDiscourseTypes($doc), + 'geonames_hierarchy' => $this->getGeonamesHierarchy($doc), + 'subject' => $this->getSubjects($doc), + ]; + } + + /** * Index one document into Elasticsearch * * @return int (1 if sucess, 0 if error) */ - private function indexOne($resultDoc) + private function indexOne($docId, $docBody) { - $doc = $this->documentRepository->get($resultDoc->getId()); $query_data = [ 'index' => config('elasticsearch.index'), 'type' => 'document', - 'id' => (string)$doc->getId(), - 'body' => [ - 'title' => (string)$doc->getTitle(), - 'date' => (string)$doc->getModified(), - 'geonames_hierarchy' => $this->getGeonamesHierarchy($doc) - ] + 'id' => $docId, + 'body' => $docBody ]; Es::index($query_data); } @@ -178,21 +500,18 @@ * * @return int (1 if sucess, 0 if error) */ - private function indexBulk($docs) + private function indexBulk($docBodies) { $query_data = ['body' => []]; - foreach($docs as $doc){ + foreach($docBodies as $docId => $docBody){ $query_data['body'][] = [ 'index' => [ '_index' => config('elasticsearch.index'), '_type' => 'document', - '_id' => (string)$doc->getId() + '_id' => $docId ] ]; - $query_data['body'][] = [ - 'title' => (string)$doc->getTitle(), - 'date' => (string)$doc->getModified() - ]; + $query_data['body'][] = $docBody; } Es::bulk($query_data); } @@ -220,6 +539,12 @@ $stepSize = $this->option('step-size'); $this->comment(' - Indexing with step size of '.$stepSize); + if($this->option('reset-geo-cache', false)) { + // delete all rows in GeonamesHierarchy + GeonamesHierarchy::getQuery()->delete(); + $this->comment('Geonames cache reset!'); + } + $this->info('Resetting index...'); $success = $this->resetIndex(); if($success==1){ @@ -231,49 +556,43 @@ $this->info('Indexing documents...'); - if ($limit<=0) { - $lastPage = $this->documentRepository->paginateAll($stepSize, 'page')->lastPage(); - $total = $this->documentRepository->getCount(); - $lastPageEntryCount = $stepSize+1; - } - else { - $lastPage = min((int)($limit/$stepSize)+1, $this->documentRepository->paginateAll($stepSize, 'page')->lastPage()); - $total = $limit; - $lastPageEntryCount = $limit % $stepSize; + $limit = (int)$limit; + $total = $this->documentRepository->getCount(); + + if($limit>0) { + $total = min($limit, $total); } - if ($noBulk) - { - $progressBar = $this->output->createProgressBar($total); - } - else - { - $progressBar = $this->output->createProgressBar($lastPage); - } + $progressBar = $this->output->createProgressBar($total); $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% - %message%'); - for ($page=1;$page<=$lastPage;$page++) - { - $docs = $this->documentRepository->paginateAll($stepSize, 'page', $page); - if ($noBulk) - { - foreach ($docs as $i=>$doc){ - if ($page==$lastPage && $i>=$lastPageEntryCount){ - break; - } - $this->indexOne($doc); - $progressBar->advance(); - $progressBar->setMessage($doc->getId()); + $page = 0; + $lastPage = PHP_INT_MAX; + $docIds = []; + + while($page++<$lastPage) { + $docsPaginator = $this->documentRepository->paginate(null, $stepSize, config('corpusparole.pagination_page_param'), $page, "_graph"); + $lastPage = $docsPaginator->lastPage(); + $docsBodies = []; + foreach($docsPaginator as $docResult) { + $docId = (string)$docResult->getId(); + $progressBar->setMessage($docId); + $progressBar->advance(); + $doc = $this->documentRepository->get($docId); + $docBody = $this->getDocBody($doc); + if($noBulk) { + $this->indexOne($docId, $docBody); + } else { + $docsBodies[$docId] = $docBody; } + $docIds[] = $docId; } - else - { - $this->indexBulk($docs); - $progressBar->advance(); - $progressBar->setMessage('Page '.$page); + if(!$noBulk) { + $this->indexBulk($docsBodies); } } $progressBar->finish(); - $this->info('Indexing completed'); + $this->info("\nIndexing completed for " . count(array_unique($docIds))." documents (of ".count($docIds).")."); + } } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Console/Commands/ManageHandles.php --- a/server/src/app/Console/Commands/ManageHandles.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Console/Commands/ManageHandles.php Sun Oct 16 23:19:57 2016 +0530 @@ -109,7 +109,7 @@ $total = $this->documentRepository->getCount(); - $docs = $this->documentRepository->paginateAll($stepSize, 'page'); + $docs = $this->documentRepository->paginate(null, $stepSize, config('corpusparole.pagination_page_param'), 1, '_graph'); $progressBar = $this->output->createProgressBar($docs->total()); $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% - %message%'); @@ -120,7 +120,7 @@ $progressBar->setMessage($doc->getId()); $progressBar->advance(); } - $docs = ($docs->hasMorePages()? $this->documentRepository->paginateAll($stepSize, 'page', $docs->currentPage()+1):null); + $docs = ($docs->hasMorePages()? $this->documentRepository->paginate(null, $stepSize, config('corpusparole.pagination_page_param'), $docs->currentPage()+1, '_graph'):null); } $progressBar->finish(); @@ -128,7 +128,7 @@ $this->info("Removing extra handles...\n"); - $handles = $this->handleClient->paginateAll($this->handlePrefix, $stepSize, 'page'); + $handles = $this->handleClient->paginateAll($this->handlePrefix, $stepSize, config('corpusparole.pagination_page_param')); $progressBar = $this->output->createProgressBar($handles->total()); $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% - %message%'); @@ -141,7 +141,7 @@ $progressBar->setMessage($handle); $progressBar->advance(); } - $handles = $handles->hasMorePages()?$this->handleClient->paginateAll($this->handlePrefix, $stepSize, 'page', $handles->currentPage()+1):null; + $handles = $handles->hasMorePages()?$this->handleClient->paginateAll($this->handlePrefix, $stepSize, config('corpusparole.pagination_page_param'), $handles->currentPage()+1):null; } $this->info("\nRemoving extra handles completed"); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Exceptions/Handler.php --- a/server/src/app/Exceptions/Handler.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Exceptions/Handler.php Sun Oct 16 23:19:57 2016 +0530 @@ -38,6 +38,19 @@ */ public function render($request, Exception $e) { + if ( $request->isXmlHttpRequest() || $request->wantsJson() ) { + + $statusCode = 500; + if(is_callable([$e, 'getStatusCode'])) { + $statusCode = $e->getStatusCode(); + } + + return response()->json([ + 'code' => $statusCode, + 'message' => class_basename( $e ) . ' in ' . basename( $e->getFile() ) . ' line ' . $e->getLine() . ( ( $message = $e->getMessage() ) ? ': ' . $e->getMessage() : '.' ), + 'trace' => $e->getTrace() + ], $statusCode); + } return parent::render($request, $e); } } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Http/Controllers/Api/DocumentController.php --- a/server/src/app/Http/Controllers/Api/DocumentController.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Http/Controllers/Api/DocumentController.php Sun Oct 16 23:19:57 2016 +0530 @@ -9,6 +9,7 @@ use CorpusParole\Http\Controllers\Controller; use CorpusParole\Repositories\DocumentRepository; use CorpusParole\Services\TranscriptManager; +use CorpusParole\Libraries\Filters\CorpusFilterManager; class DocumentController extends Controller { @@ -25,17 +26,27 @@ * * @return Response */ - public function index() + public function index(Request $request) { - $paginator = $this->documentRepository->paginateAll(); + $perPage = intval($request->input('perpage', config('corpusparole.documents_per_page'))); + + $filters = []; + $languages = $request->input('language', []); + if(!empty($languages)) { + $filters['language'] = CorpusFilterManager::prepareLanguages($languages); + } + $sort = $request->input('sort', null); + + $paginator = $this->documentRepository->paginate($filters, $perPage, config('corpusparole.pagination_page_param'), null, $sort); + $res = $paginator->toArray(); if(array_key_exists('data', $res)) { $documents = $res['data']; unset($res['data']); - $res['documents'] = $documents; - //$res['documents'] = $this->documentRepository->resolveLexvo($documents); + } else { + $documents = []; } - return response()->json($res); + return response()->json([ 'documents' => $documents, 'meta' => $res]); } /** @@ -67,7 +78,7 @@ */ public function show(Request $request, $id) { - $id= urldecode($id); + $id = urldecode($id); $short = filter_var($request->input('short', false), FILTER_VALIDATE_BOOLEAN); $doc = $this->documentRepository->get($id, $short); if(is_null($doc)) { diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Http/Controllers/Api/GeoStatsController.php --- a/server/src/app/Http/Controllers/Api/GeoStatsController.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Http/Controllers/Api/GeoStatsController.php Sun Oct 16 23:19:57 2016 +0530 @@ -7,6 +7,7 @@ use CorpusParole\Http\Requests; use CorpusParole\Http\Controllers\Controller; use Es; +use Log; class GeoStatsController extends Controller { @@ -17,10 +18,22 @@ */ public function index(Request $request) { + $area = $request->input('area'); + $filter = [ + 'match_all' => [] + ]; + if(!is_null($area) && $area !== config('corpusparole.geonames_earth_geonamesid')) { + $filter = [ + 'term' => [ + "geonames_hierarchy" => $area + ] + ]; + } $query = [ 'index' => env('ELASTICSEARCH_INDEX'), 'body' => [ "size" => 0, + "query" => $filter, "aggs" => [ "geos" => [ "terms" => [ diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Http/Controllers/Api/LexvoController.php --- a/server/src/app/Http/Controllers/Api/LexvoController.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Http/Controllers/Api/LexvoController.php Sun Oct 16 23:19:57 2016 +0530 @@ -8,6 +8,9 @@ use CorpusParole\Services\LexvoResolverInterface; use CorpusParole\Services\LexvoResolverException; +use CorpusParole\Libraries\Filters\CorpusFilterManager; +use CorpusParole\Libraries\Utils; + class LexvoController extends Controller { public function __construct(LexvoResolverInterface $lexvoResolver) { @@ -23,7 +26,26 @@ public function show($id) { try { - return response()->json(['lexvoids' => $this->lexvoResolver->getNames(explode(",", $id))]); + $ids = []; + $corpusIds = []; + foreach(explode(",", $id) as $idStr) { + if(Utils::startsWith($idStr, config('corpusparole.language_corpus_node_prefix'))) { + $corpusIds[] = $idStr; + } else { + $ids[] = $idStr; + } + } + $lexvosNames = $this->lexvoResolver->getNames($ids); + $corpusNames = array_reduce($corpusIds, function($res,$cid) { + $cNode = CorpusFilterManager::getLanguageNode($cid); + if(is_null($cNode)) { + $res[$cid] = null; + } else { + $res[$cid] = $cNode['name']; + } + return $res; + }, []); + return response()->json(['lexvoids' => array_merge($lexvosNames, $corpusNames)]); } catch (LexvoResolverException $e) { abort(500, $e->getMessage()); } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Http/Controllers/Api/ThemeController.php --- a/server/src/app/Http/Controllers/Api/ThemeController.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Http/Controllers/Api/ThemeController.php Sun Oct 16 23:19:57 2016 +0530 @@ -10,6 +10,9 @@ use EasyRdf\Resource; use EasyRdf\Literal; +use Es; +use Log; + use CorpusParole\Libraries\Sparql\SparqlClient; use CorpusParole\Services\LexvoResolverInterface; use CorpusParole\Services\BnfResolverInterface; @@ -33,77 +36,93 @@ public function index(Request $request) { $filter = $request->input('filter', 'bnf'); - $resolve = filter_var($request->input('resolve', true), FILTER_VALIDATE_BOOLEAN); - - $filterClause = ""; + $index = $request->input('index', 0); + $limit = $request->input('limit', config('corpusparole.theme_default_limit')); + $sort = $request->input('sort', 'count'); if($filter === 'bnf') { - $filterClause = "FILTER (isIRI(?o) && regex(str(?o), '^".config('corpusparole.bnf_ark_base_url')."')) ."; + $include = ".*\\|bnf\\|.*"; + } + elseif($filter === 'lexvo') { + $include = ".*\\|lxv\\|.*"; } - elseif($filter === 'uri') { - $filterClause = "FILTER isIRI(?o) ."; + elseif($filter === 'olac') { + $include = ".*\\|olac\\|.*"; } - elseif($filter === 'all' || $filter === 'none' || $filter === '') { - $filterClause = ""; + elseif($filter === 'txt') { + $include = ".*\\|txt\\|.*"; + } + elseif($filter === 'all') { + $include = false; } else { - abort(401,"Value for filter parameter must be in 'bnf', 'uri', 'all' or 'none'"); + abort(401,"Value for filter parameter must be in 'bnf', 'lexvo', 'olac', 'txt', 'all'"); + } + + if($sort == "count" || $sort == "descending") { + $order_field = "_count"; + $order_dir = "desc"; + } elseif($sort == "-count") { + $order_field = "_count"; + $order_dir = "asc"; + } elseif ($sort == "label" || $sort == "alphabetical") { + $order_field = "_term"; + $order_dir = "asc"; + } elseif ($sort == "-label") { + $order_field = "_term"; + $order_dir = "desc"; + } else { + $order_field = "_count"; + $order_dir = "desc"; } - $query = preg_replace('/\s+/', ' ', - "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - $filterClause - } - GROUP BY ?o - ORDER BY DESC(?count)"); + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => $limit * ($index+1), + "order" => [ $order_field => $order_dir ] + ] + ] + ] + ] + ] + ] + ]; - $docs = $this->sparqlClient->query($query); + if($include) { + $query['body']['aggs']['subjects']['aggs']['subjects']['terms']['include'] = $include; + } + + $esRes = Es::search($query); $themes = []; - $labels = []; - $bnfUris = []; - $lexvoUris = []; - - foreach ($docs as $row) { - $key = ""; - $label = null; - if($row->theme instanceof Resource) { - $key = $row->theme->getUri(); - if($resolve && strpos($key, config('corpusparole.bnf_ark_base_url')) === 0) { - array_push($bnfUris, $key); - } - elseif($resolve && strpos($key, config('corpusparole.lexvo_base_url')) === 0) { - array_push($lexvoUris, $key); - } - $label = null; - } - elseif($row->theme instanceof Literal) { - $key = $row->theme->getValue(); - $label = $row->theme->getValue(); - } - - $themes[$key] = [ - "label" => $label, - "count" => $row->count->getValue() - ]; + $bucketList = $esRes['aggregations']['subjects']['subjects']['buckets']; + if($limit > 0) { + $bucketList = array_slice($bucketList, $index*$limit, $limit); } - if($resolve) { - if(count($lexvoUris) > 0) { - $labels = $this->lexvoResolver->getNames($lexvoUris); - } - if(count($bnfUris) > 0) { - $labels = array_merge($labels, $this->bnfResolver->getLabels($bnfUris)); + foreach($bucketList as $bucket) { + $parts = explode("|", $bucket['key']); + $label = $parts[0]; + if($parts[1] === 'bnf' || $parts[1] === 'lxv') { + $url = ['bnf' => config('corpusparole.bnf_ark_base_url'), 'lxv' => config('corpusparole.lexvo_base_url')][$parts[1]].$parts[2]; } - foreach ($themes as $themeKey => $themeDef) { - if(array_key_exists($themeKey, $labels)) { - $themeDef['label'] = $labels[$themeKey]; - } - $themes[$themeKey] = $themeDef; + else { + $url = $parts[2]; } + $themes[$url] = [ + "label" => $label, + "count" => $bucket['doc_count'] + ]; } return response()->json(['themes' => $themes ]); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Http/Controllers/Bo/DocumentListController.php --- a/server/src/app/Http/Controllers/Bo/DocumentListController.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Http/Controllers/Bo/DocumentListController.php Sun Oct 16 23:19:57 2016 +0530 @@ -27,10 +27,12 @@ * @return Response */ public function index() { - $docs = $this->documentRepository->paginateAll(); + $docs = $this->documentRepository->paginate(); $languageIds = []; foreach ($docs as $doc) { - array_push($languageIds, $doc->getLanguageValue()); + foreach($doc->getLanguagesValue() as $langId) { + array_push($languageIds, $langId); + } } $languageNames = $this->lexvoResolver->getNames(array_unique($languageIds)); return view('bo.docList', ['docs' => $docs, 'languageNames' => $languageNames]); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Libraries/Filters/CorpusFilterManager.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/app/Libraries/Filters/CorpusFilterManager.php Sun Oct 16 23:19:57 2016 +0530 @@ -0,0 +1,74 @@ + [ + 'should' => [ + [ 'terms' => [ 'language' => $languages ]] + ] + ] + ]; + } + +} diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Libraries/Handle/HandleClient.php --- a/server/src/app/Libraries/Handle/HandleClient.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Libraries/Handle/HandleClient.php Sun Oct 16 23:19:57 2016 +0530 @@ -224,7 +224,7 @@ $params = [ 'prefix' => $prefix, - 'page' => is_null($page)?0:$page-1, + config('corpusparole.pagination_page_param') => is_null($page)?0:$page-1, 'pageSize' => $perPage ]; diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Libraries/Utils.php --- a/server/src/app/Libraries/Utils.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Libraries/Utils.php Sun Oct 16 23:19:57 2016 +0530 @@ -134,4 +134,26 @@ return new Graph($graph1->getUri(), $merged, 'php'); } + /** + * From http://stackoverflow.com/a/834355 + */ + public static function startsWith($haystack, $needle) + { + $length = strlen($needle); + return (substr($haystack, 0, $length) === $needle); + } + + /** + * From http://stackoverflow.com/a/834355 + */ + public static function endsWith($haystack, $needle) + { + $length = strlen($needle); + if ($length == 0) { + return true; + } + + return (substr($haystack, -$length) === $needle); + } + } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Models/DocumentBase.php --- a/server/src/app/Models/DocumentBase.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Models/DocumentBase.php Sun Oct 16 23:19:57 2016 +0530 @@ -26,10 +26,11 @@ // memoization private $providedCHO = null; private $title = false; - private $lang = null; - private $langResolved = null; - private $issued = null; - private $modified = null; + private $langs = null; + private $langsResolved = null; + private $issued = false; + private $modified = false; + private $created = false; public function getProvidedCHO() { @@ -42,10 +43,11 @@ protected function clearMemoizationCache() { $this->providedCHO = null; $this->title = false; - $this->lang = null; - $this->langResolved = null; - $this->issued = null; - $this->modified = null; + $this->langs = null; + $this->langsResolved = null; + $this->issued = false; + $this->modified = false; + $this->created = false; } public function getId() { @@ -63,36 +65,33 @@ return $this->id; } - public function getLanguage() { - if(is_null($this->lang)) { + public function getLanguages() { + if(is_null($this->langs)) { try { - $langs = $this->getProvidedCHO()->all(''); - if(count($langs) > 0) { - $this->lang = $langs[0]; - } + $this->langs = $this->getProvidedCHO()->all(''); } catch(\Exception $e) { - $this->lang = null; + $this->langs = []; } } - return $this->lang; + return $this->langs; } - public function getLanguageValue() { - $lang = $this->getLanguage(); - if($lang instanceof Resource) { - return $lang->getUri(); - } else if($lang instanceof Literal) { - return $lang->getValue(); - } - return null; + public function getLanguagesValue() { + return array_map(function($lang) { + if($lang instanceof Resource) { + return $lang->getUri(); + } else if($lang instanceof Literal) { + return $lang->getValue(); + } + }, $this->getLanguages()); } - public function getLanguageResolved() { - return $this->langResolved; + public function getLanguagesResolved() { + return $this->langsResolved; } - public function setLanguageResolved($languageResolved) { - $this->langResolved = $languageResolved; + public function setLanguagesResolved($languagesResolved) { + $this->langsResolved = $languagseResolved; } @@ -125,7 +124,7 @@ } public function getIssued() { - if(is_null($this->issued)) { + if($this->issued === false) { try { $this->issued = $this->getProvidedCHO()->getLiteral(""); } catch(\Exception $e) { @@ -140,8 +139,19 @@ return is_null($issued)?null:$issued->getValue(); } + public function getCreated() { + if($this->created === false) { + try { + $this->created = $this->getProvidedCHO()->getLiteral(""); + } catch(\Exception $e) { + $this->created = null; + } + } + return $this->created; + } + public function getModified() { - if(is_null($this->modified)) { + if($this->modified === false) { try { $this->modified = $this->getProvidedCHO()->getLiteral(""); if(is_null($this->modified)) { @@ -168,7 +178,7 @@ $newModified = new Literal($value, null, "http://purl.org/dc/terms/W3CDTF"); $this->setSimpleProperty($this->getProvidedCHO(), 'http://purl.org/dc/terms/modified', $modified, $newModified); - $this->modified = null; + $this->modified = false; } } @@ -189,12 +199,12 @@ 'id' => $this->getId(), 'uri' => $this->getUri(), 'title' => $this->getTitleValue(), - 'language' => $this->getLanguageValue(), + 'languages' => $this->getLanguagesValue(), 'modified' => $this->getModifiedValue(), 'issued' => $this->getIssuedValue() ]; - if($this->language_resolved) { - $res['language_resolved'] = $this->getLanguageResolved(); + if($this->languagesResolved) { + $res['languages_resolved'] = $this->getLanguagesResolved(); } return $res; diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Models/DocumentResult.php --- a/server/src/app/Models/DocumentResult.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Models/DocumentResult.php Sun Oct 16 23:19:57 2016 +0530 @@ -85,8 +85,8 @@ if($this->graph) { $res = array_merge($res, [ - 'publishers' => $this->getPublishersValue(), - 'duration' => $this->getDurationValue(), + 'publisher' => $this->getPublishersValue(), + 'duration_ms' => $this->getDurationValue(), 'transcript_url' => $this->getTranscriptUrl() ]); } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Providers/PaginationServiceProvider.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/app/Providers/PaginationServiceProvider.php Sun Oct 16 23:19:57 2016 +0530 @@ -0,0 +1,32 @@ +app['request']; + $queryParams = $r->all(); + unset($queryParams[config('corpusparole.pagination_page_param')]); + + $question = $r->getBaseUrl().$r->getPathInfo() == '/' ? '/?' : '?'; + return $r->url().$question.http_build_query($queryParams); + }); + + } +} diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Repositories/DocumentRepository.php --- a/server/src/app/Repositories/DocumentRepository.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Repositories/DocumentRepository.php Sun Oct 16 23:19:57 2016 +0530 @@ -21,6 +21,17 @@ public function paginateAll($perPage = 15, $pageName = 'page', $page = null); /** + * Paginate filtered document as a paginator. + * + * @param array $filters + * @param int $perPage + * @param string $pageName + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + */ + public function paginate($filters = [], $perPage = 15, $pageName = 'page', $page = null, $sort = null); + + + /** * Resolve lexvo id for all documents in the list * this allow to optimise the call of lexvo repository */ diff -r 4a3899b6a7ed -r 766af1228b05 server/src/app/Repositories/RdfDocumentRepository.php --- a/server/src/app/Repositories/RdfDocumentRepository.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/app/Repositories/RdfDocumentRepository.php Sun Oct 16 23:19:57 2016 +0530 @@ -9,6 +9,7 @@ use CorpusParole\Libraries\CorpusParoleException; use CorpusParole\Libraries\Utils; use CorpusParole\Libraries\Sparql\SparqlClient; +use CorpusParole\Libraries\Filters\CorpusFilterManager; use CorpusParole\Services\LexvoResolverInterface; @@ -18,6 +19,8 @@ use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\Paginator; +use Es; + /** * Implement the DocumentRepository using EasyRdf * TODO: certainly split the transaction management (+add, +delete +transaction ) to an external class -> for this extend the sparql client. @@ -31,18 +34,19 @@ " ?title". " ?issued". " ?modified". - " ?lang". + " (group_concat(distinct ?language;separator=\", \") as ?lang) ". " (group_concat(distinct ?publisher;separator=\", \") as ?publishers) ". " WHERE {". - " GRAPH ?uri { ?doc a .". - " ?doc ?title.". - " OPTIONAL {?doc ?lang.} ". - " OPTIONAL {?doc ?issued.} ". - " OPTIONAL {?doc ?modified.} ". - " OPTIONAL {?doc ?publisher.} }". + " GRAPH ?uri { ?doc a .". + " ?doc ?title.". + " OPTIONAL {?doc ?language.} ". + " OPTIONAL {?doc ?issued.} ". + " OPTIONAL {?doc ?modified.} ". + " OPTIONAL {?doc ?publisher.}". + " }. ". + " %s". " } ". - " GROUP BY ?uri ?doc ?title ?issued ?modified ?lang ". - " ORDER BY ?uri"; + " GROUP BY ?uri ?doc ?title ?issued ?modified "; const ADDITIONAL_DOC_QUERIES = [ "SELECT". @@ -102,7 +106,14 @@ $newGraph->add($doc->doc, "http://purl.org/dc/elements/1.1/title", $doc->title); } if(isset($doc->lang)) { - $newGraph->add($doc->doc, "http://purl.org/dc/elements/1.1/language", $doc->lang); + foreach(explode(", ", $doc->lang) as $langStr) { + $langStr = trim($langStr); + if(filter_var($langStr, FILTER_VALIDATE_URL)) { + $newGraph->addResource($doc->doc, "http://purl.org/dc/elements/1.1/language", $langStr); + } else { + $newGraph->addLiteral($doc->doc, "http://purl.org/dc/elements/1.1/language", $langStr); + } + } } if(isset($doc->issued)) { $newGraph->add($doc->doc, "http://purl.org/dc/terms/issued", $doc->issued); @@ -122,26 +133,105 @@ return $newGraph; } - private function queryDocs($offset=null, $limit=null) { + private function queryES($filters=null, $offset=null, $limit=null, $sort=null) { + + if(empty($sort)) { + $sort = ["_doc"]; + } elseif (is_string($sort)) { + $sort = [$sort]; + } + if(is_null($filters)) { + //$filters = ['language' => ["http://lexvo.org/id/iso639-3/oci", "http://lexvo.org/id/iso639-3/bre"]]; + $filters = []; + } + + $qFilterParts = []; + + if(array_key_exists('language', $filters) && !empty($filters['language'])) { + $languages = $filters['language']; + if(is_string($languages)) { + $languages = [ $languages, ]; + } + $qFilterParts[] = CorpusFilterManager::getLanguagesFilterPart($languages); + } + + $query = [ + 'index' => config('corpusparole.elasticsearch_index'), + 'body' => [ + "size" => empty($limit)?0:$limit, + "from" => $offset, + "sort" => $sort + ] + ]; + + if(count($qFilterParts)>0) { + $query['body']['query'] = ['constant_score' => [ + 'filter' => [ + 'bool' => [ + 'must' => $qFilterParts + ] + ] + ] ]; + } + + $esRes = Es::search($query); + + return ['total' => $esRes['hits']['total'], 'documents' => array_map(function($r) { + return $r['_id']; + }, $esRes['hits']['hits'])]; + + } + + /** + * Query docs. + * if $filter is empty or null and $sort is '_graph', the documents list is fetched from the triple store, otherwise, They are fetched from ElasticSearch + */ + private function queryDocs($filters=null, $offset=null, $limit=null, $sort=null) { $resDocs = []; + $limitsClauses = []; + $sortClauseStr = ""; $limitsClausesStr = ""; + $filterUris = ""; - if(!is_null($offset)) { - array_push($limitsClauses, "OFFSET $offset"); - } - if(!is_null($limit)) { - array_push($limitsClauses, "LIMIT $limit"); - } - if(!empty($limitsClauses)) { - $limitsClausesStr = "\n" . join(" ", $limitsClauses); + if(empty($filters) && $sort === "_graph") { + if(!is_null($offset)) { + array_push($limitsClauses, "OFFSET $offset"); + } + if(!is_null($limit)) { + array_push($limitsClauses, "LIMIT $limit"); + } + if(!empty($limitsClauses)) { + $limitsClausesStr = "\n" . join(" ", $limitsClauses); + } + $sortClauseStr = "\n ORDER BY ?uri"; + $total = $this->getCount(); + } else { + $esRes = $this->queryES($filters, $offset, $limit); + // WARNING: we count on the fact that php keep keys order + $total = intval($esRes['total']); + foreach($esRes['documents'] as $esDocId) { + $uri = config('corpusparole.corpus_doc_id_base_uri_prefix').$esDocId; + $resDocs[$uri] = null; + } + if(count($resDocs) > 0) { + $filterUris = "FILTER(?uri in (<".join(">, <" , array_keys($resDocs)).">)) "; + } else { + return ['meta' => [ 'total'=> $total ], 'documents' => []]; + } + } - $docs = $this->sparqlClient->query(self::BASE_DOC_QUERY.$limitsClausesStr); + + $sparqlQuery = sprintf(self::BASE_DOC_QUERY.$sortClauseStr.$limitsClausesStr, $filterUris); + + $docs = $this->sparqlClient->query($sparqlQuery); + foreach($docs as $doc) { $graph = $this->getResGraph($doc); if(is_null($graph)) { + Log::debug("NULL GRAPH - odd"); continue; } $uri = $doc->uri->getUri(); @@ -149,10 +239,12 @@ } if(count($resDocs) == 0) { - return []; + return ['meta' => [ 'total'=> $total ], 'documents' => []]; } - $filterUris = "FILTER(?uri in (<".join(">, <" , array_keys($resDocs)).">)) "; + if(empty($filterUris)) { + $filterUris = "FILTER(?uri in (<".join(">, <" , array_keys($resDocs)).">)) "; + } foreach(self::ADDITIONAL_DOC_QUERIES as $query) { $docs = $this->sparqlClient->query(sprintf($query, $filterUris)); @@ -171,11 +263,13 @@ } } - return array_map(function($g) { return new DocumentResult($g->getUri(), $g); }, array_values($resDocs)); + $documentsResults = array_map(function($g) { return new DocumentResult($g->getUri(), $g); }, array_values($resDocs)); + + return ['meta' => [ 'total'=> $total ], 'documents' => $documentsResults]; } public function all() { - return $this->queryDocs(); + return $this->queryDocs(null, null, null, "_graph")['documents']; } public function get($id, $short=false) { @@ -233,10 +327,19 @@ } } - public function getCount() { - $res = $this->sparqlClient->query("SELECT (COUNT (DISTINCT ?g) as ?count) WHERE { GRAPH ?g { ?s a } }"); - assert(!is_null($res) && $res->count()==1); - return $res[0]->count->getValue(); + public function getCount($filters=null) { + $count = 0; + if(empty($filters)) { + $res = $this->sparqlClient->query("SELECT (COUNT (DISTINCT ?g) as ?count) WHERE { GRAPH ?g { ?s a } }"); + assert(!is_null($res) && count($res)==1); + $count = intval($res[0]->count->getValue()); + } else { + $esRes = $this->queryES($filters, 0, 0); + $count = intval($esRes['hits']['total']); + } + + return $count; + } //SELECT ?g WHERE { GRAPH ?g { ?s ?p ?o } } @@ -250,6 +353,19 @@ */ public function paginateAll($perPage = 15, $pageName = 'page', $page = null) { + return $this->paginate(null, $perPage, $pageName, null); + } + + /** + * Paginate filtered document as a paginator. + * + * @param array $filters + * @param int $perPage + * @param string $pageName + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + */ + public function paginate($filters = null, $perPage = 15, $pageName = 'page', $page = null, $sort=null) { + assert(is_numeric($perPage)); if(is_null($page)) { @@ -258,18 +374,18 @@ assert(is_null($page) || is_numeric($page)); - $total = $this->getCount(); - $offset = max(0,($page - 1) * $perPage); - $results = $this->queryDocs($offset, $perPage); + $results = $this->queryDocs($filters, $offset, $perPage, $sort); - return new LengthAwarePaginator($results, $total, $perPage, $page, [ + return new LengthAwarePaginator($results['documents'], $results['meta']['total'], $perPage, $page, [ 'path' => Paginator::resolveCurrentPath(), 'pageName' => $pageName, ]); + } + /** * Resolve lexvo id for all documents in the list * this allow to optimise the call of lexvo repository @@ -280,8 +396,10 @@ $languageIds = []; #get the list pf language needing resolving foreach ($docList as $doc) { - if($doc->getLanguageValue() && is_null($doc->getLanguageResolved())) { - $languageIds[$doc->getLanguageValue()] = true; + if(!empty($doc->getLanguagesValue()) && is_null($doc->getLanguagesResolved())) { + foreach($doc->getLanguagesValue() as $lang) { + $languageIds[$lang]=true; + } } } @@ -289,8 +407,12 @@ $langNames = $this->lexvoResolver->getNames(array_keys($languageIds)); foreach ($docList as $doc) { - if($doc->getLanguageValue() && is_null($doc->getLanguageResolved())) { - $doc->setLanguageResolved($langNames[$doc->getLanguageValue()]); + if(!empty($doc->getLanguagesValue()) && is_null($doc->getLanguagesResolved())) { + $langResolved = []; + foreach($doc->getLanguagesValue() as $lang) { + $langResolved[] = $langNames[$lang]; + } + $doc->setLanguageResolved($langResolved); } } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/config/app.php --- a/server/src/config/app.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/config/app.php Sun Oct 16 23:19:57 2016 +0530 @@ -125,7 +125,7 @@ 'Illuminate\Foundation\Providers\FoundationServiceProvider', 'Illuminate\Hashing\HashServiceProvider', 'Illuminate\Mail\MailServiceProvider', - 'Illuminate\Pagination\PaginationServiceProvider', +// 'Illuminate\Pagination\PaginationServiceProvider', 'Illuminate\Pipeline\PipelineServiceProvider', 'Illuminate\Queue\QueueServiceProvider', 'Illuminate\Redis\RedisServiceProvider', @@ -159,6 +159,7 @@ 'CorpusParole\Providers\BnfServiceProvider', 'CorpusParole\Providers\GeonamesServiceProvider', 'CorpusParole\Providers\VersionServiceProvider', + 'CorpusParole\Providers\PaginationServiceProvider', ], diff -r 4a3899b6a7ed -r 766af1228b05 server/src/config/corpusparole.php --- a/server/src/config/corpusparole.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/config/corpusparole.php Sun Oct 16 23:19:57 2016 +0530 @@ -5,6 +5,12 @@ $baseUrl = ($baseUrl && strlen($baseUrl)>0)?$baseUrl:"/"; return [ + 'pagination_page_param' => 'page', + + 'documents_per_page' => 15, + + 'elasticsearch_index' => env('ELASTICSEARCH_INDEX'), + 'sesame_base_url' => $sesameBaseUrl, 'sesame_repository' => env('CORPUSPAROLE_SESAME_REPOSITORY'), 'sesame_repository_raw' => env('CORPUSPAROLE_SESAME_REPOSITORY_RAW'), @@ -24,6 +30,7 @@ 'corpus_id_scheme' => env('HANDLE_PREFIX').'/', 'corpus_id_prefix' => env('HANDLE_PREFIX').'/crdo-', + 'corpus_doc_id_base_uri_prefix' => 'https://hdl.handle.net/', 'corpus_doc_id_base_uri' => 'https://hdl.handle.net/'.env('HANDLE_PREFIX').'/', 'corpus_doc_default_cc_rights' => 'http://creativecommons.org/licenses/by/4.0/', @@ -54,6 +61,8 @@ "http://ark.bnf.fr/ark:/12148/cb11949715t" => "réunions" ], + 'olac_base_url' => 'http://www.language-archives.org/OLAC', + 'olac_discourse_type' => [ 'uri' => 'http://www.language-archives.org/OLAC/1.1/discourse-type', 'values' => [ @@ -112,24 +121,31 @@ 'viaf_cache_expiration' => 60*24*30, 'viaf_max_ids' => 500, + 'theme_default_limit' => 40, + 'lexvo_base_url' => 'http://lexvo.org/id/iso639-3/', + 'lexvo_url_regexp' => '/http[s]?\:\/\/lexvo\.org\/id\/iso639\-3\/([[:alpha:]]{3})\/?/', 'lexvo_cache_expiration' => 60*24*30, 'lexvo_max_ids' => 50, 'lexvo_sesame_query_url' => $sesameBaseUrl.'repositories/'.env('CORPUSPAROLE_SESAME_LEXVO_REPOSITORY'), 'bnf_base_url' => 'http://data.bnf.fr/', 'bnf_ark_base_url' => 'http://ark.bnf.fr/', + 'bnf_ark_url_regexp' => '/http[s]?\:\/\/(?:data|ark)\.bnf\.fr\/(ark\:\/12148\/[[:alnum:]]+)\/?/', 'bnf_cache_expiration' => 60*24*30, 'bnf_max_ids' => 5, 'bnf_query_url' => 'http://data.bnf.fr/sparql', 'bnf_completion_url' => 'http://data.bnf.fr/search-letter/', + 'dbpedia_url_regexp' => '/^https?\:\/\/(([[:alpha:]]+\.)?dbpedia\.org)\/(resource|page)\/([^\/]+)\/?$/', + 'geonames_base_url' => 'http://sws.geonames.org/', 'geonames_url_regexp' => '/http[s]?\:\/\/(?:sws|www)\.geonames\.org\/(\d+)\/?/', 'geonames_cache_expiration' => 60*24*30, 'geonames_max_ids' => 500, 'geonames_hierarchy_webservice_url' => 'http://api.geonames.org/hierarchyJSON', 'geonames_username' => env('GEONAMES_USERNAME'), + 'geonames_earth_geonamesid' => '6295630', 'bo_client_environment' => [ "modulePrefix" => "bo-client", @@ -181,6 +197,186 @@ 'transcrit_decoder_mapping' => [ "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_archive" => 'CorpusParole\Libraries\Transcript\LacitoTranscriptConverter', "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_transcriber" => 'CorpusParole\Libraries\Transcript\TranscriberTranscriptConverter' + ], + + "language_corpus_node_prefix" => 'corpus-', + "language_corpus_node_global" => 'corpus-global', + + "languages_treemap" => [ + 'id' => 'corpus-global', + 'name' => 'Global', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/fra', + 'name' => 'Français' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/gsw', + 'name' => 'Alsacien' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/bre', + 'name' => 'Breton' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/oci', + 'name' => 'Occitan', + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/lad', + 'name' => 'Judéo-espagnol' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/und', + 'name' => 'Indéterminée', + ], [ + 'id' => 'corpus-regionals', + 'name' => 'Langues régionales', + 'children' => [ [ + 'id' => 'corpus-oil', + 'name' => 'Langues d\'oïl', + 'values' => [ 'http://lexvo.org/id/iso639-3/pcd' ] + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/frp', + 'name' => 'Francoprovençal' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/cos', + 'name' => 'Corse' + ], [ + 'id' => 'corpus-creoles', + 'name' => 'Les Créoles', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/rcf', + 'name' => 'Créole de la Réunion' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/gcf', + 'name' => 'Créole de la Guadeloupe' + ] + ] + ] + ] + ], [ + 'id' => 'corpus-non-territorials', + 'name' => 'Langues non territoriales', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/fsl', + 'name' => 'Langue des signes française (LSF)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/kab', + 'name' => 'Berbère' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/ell', + 'name' => 'Grec moderne' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/spa', + 'name' => 'Espagnol' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/eng', + 'name' => 'Anglais' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/ita', + 'name' => 'Italien' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/deu', + 'name' => 'Allemand' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/tur', + 'name' => 'Turque' + ] + ] + ], [ + 'id' => 'corpus-guyane', + 'name' => 'Guyane', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/gcf', + 'name' => 'Ndyuka-Trio Pidgin (njt)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/plu', + 'name' => 'Palikúr (plu)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/gcr', + 'name' => 'Guianese Creole French (gcr)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/gcr', + 'name' => 'Guianese Creole French (gcr)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/srn', + 'name' => 'Sranan Tongo (srn)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/car', + 'name' => 'kali\'na (car)' + ] + ] + ], [ + 'id' => 'corpus-mayotte', + 'name' => 'Mayotte', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/swb', + 'name' => 'Maore Comorian (swb)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/lsy', + 'name' => 'Mauritian Sign Language (lsy)' + ] + ] + ], [ + 'id' => 'corpus-polynesia', + 'name' => 'Polynésie française', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/uve', + 'name' => 'West Uvean (uve)' + ] + ] + ], [ + 'id' => 'corpus-wallis-futuna', + 'name' => 'Wallis et Futuna', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/fud', + 'name' => 'LanEast Futuna (fud)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/wls', + 'name' => 'Wallisian (wls)' + ] + ] + ], [ + 'id' => 'corpus-new-caledonia', + 'name' => 'Nouvelle-Calédonie', + 'children' => [ [ + 'id' => 'http://lexvo.org/id/iso639-3/wls', + 'name' => 'Wallisian (wls)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/ane', + 'name' => 'Xârâcùù (ane)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/cam', + 'name' => 'Cemuhî (cam)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/axx', + 'name' => 'Xaragure (axx)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/iai', + 'name' => 'Iaai (iai)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/nee', + 'name' => 'Nêlêmwa-Nixumwak (nee)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/dhv', + 'name' => 'Dehu (dhv)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/nen', + 'name' => 'Nengone (nen)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/aji', + 'name' => 'Ajië (aji)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/kdk', + 'name' => 'Numee (kdk)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/nem', + 'name' => 'Nemi' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/nua', + 'name' => 'Yuaga (nua)' + ], [ + 'id' => 'http://lexvo.org/id/iso639-3/bwa', + 'name' => 'Bwatoo (bwa)' + ] + ] + ] + ] ] ]; diff -r 4a3899b6a7ed -r 766af1228b05 server/src/gulpfile.js --- a/server/src/gulpfile.js Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/gulpfile.js Sun Oct 16 23:19:57 2016 +0530 @@ -45,8 +45,8 @@ if(err) { return; } - gulp.src(['**/*','!vendor', '!vendor/**', '!node_modules', '!node_modules/**', '!.env', '!.git*']) - .pipe(gulp.dest('../../build/root/var/www/corpusdelaparole/corpus/')) + gulp.src(['**/*','!vendor', '!vendor/**', '!node_modules', /*'!public/corpus-app', '!public/corpus-app/**',*/ '!node_modules/**', '!.env', '!.git*']) + .pipe(gulp.dest('../../build/root/var/www/corpusdelaparole/corpus-back/')) }); }); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/public/css/app.css --- a/server/src/public/css/app.css Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/public/css/app.css Sun Oct 16 23:19:57 2016 +0530 @@ -1,7 +1,7 @@ @charset "UTF-8"; /*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ @@ -1072,7 +1072,6 @@ color: #23527c; text-decoration: underline; } a:focus { - outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } @@ -2284,7 +2283,6 @@ input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { - outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } @@ -2789,7 +2787,6 @@ -ms-user-select: none; user-select: none; } .btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { - outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, .btn:focus, .btn.focus { @@ -4374,12 +4371,6 @@ .alert-danger .alert-link { color: #843534; } -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; } - to { - background-position: 0 0; } } - @keyframes progress-bar-stripes { from { background-position: 40px 0; } @@ -4413,7 +4404,6 @@ .progress.active .progress-bar, .progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { @@ -5027,12 +5017,9 @@ -webkit-overflow-scrolling: touch; outline: 0; } .modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); transform: translate(0, -25%); - transition: -webkit-transform 0.3s ease-out; transition: transform 0.3s ease-out; } .modal.in .modal-dialog { - -webkit-transform: translate(0, 0); transform: translate(0, 0); } .modal-open .modal { @@ -5375,22 +5362,16 @@ line-height: 1; } @media all and (transform-3d), (-webkit-transform-3d) { .carousel-inner > .item { - transition: -webkit-transform 0.6s ease-in-out; transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; backface-visibility: hidden; - -webkit-perspective: 1000px; perspective: 1000px; } .carousel-inner > .item.next, .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); left: 0; } .carousel-inner > .item.prev, .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); left: 0; } .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); left: 0; } } .carousel-inner > .active, diff -r 4a3899b6a7ed -r 766af1228b05 server/src/resources/views/bo/docList.blade.php --- a/server/src/resources/views/bo/docList.blade.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/resources/views/bo/docList.blade.php Sun Oct 16 23:19:57 2016 +0530 @@ -19,7 +19,7 @@ {{ $doc->getId() }} {{ $doc->getTitle() }} - {{substr($doc->getLanguageValue(), 29)}} + @foreach ($doc->getLanguagesValue() as $lang){{substr($lang, 29)}}@endforeach {{ $doc->getModified() }} @endforeach diff -r 4a3899b6a7ed -r 766af1228b05 server/src/routes/api.php --- a/server/src/routes/api.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/routes/api.php Sun Oct 16 23:19:57 2016 +0530 @@ -11,36 +11,26 @@ */ Route::group(['prefix' => 'v1'] , function() { - Route::group(['prefix' => 'documents'], function() { - Route::pattern('id', ".*"); - Route::get('{id}/transcript', 'Api\DocumentController@transcript'); - Route::resource('', 'Api\DocumentController', - ['only' => ['index', 'show', 'update']]); - }); + Route::pattern('id', ".*"); + Route::get('documents/{id}/transcript', 'Api\DocumentController@transcript'); + Route::resource('documents', 'Api\DocumentController', [ + 'only' => ['index', 'show', 'update'] + ]); Route::group(['prefix' => 'resolvers'], function() { - Route::resource('viaf', 'Api\ViafController', - ['only' => ['show']]); - Route::resource('lexvo', 'Api\LexvoController', - ['only' => ['show']]); - Route::resource('bnf', 'Api\BnfController', - ['only' => ['index','show']]); - Route::resource('geonames', 'Api\GeonamesController', - ['only' => ['index','show']]); + Route::get('viaf/{id}', 'Api\ViafController@show'); + Route::get('lexvo/{id}', 'Api\LexvoController@show'); + Route::get('bnf/{id}', 'Api\BnfController@show'); + Route::get('geonames/{id}', 'Api\GeonamesController@show'); }); Route::group(['prefix' => 'stats'], function() { - Route::resource('languages', 'Api\LanguageController', - ['only' => ['index']]); - Route::resource('themes', 'Api\ThemeController', - ['only' => ['index']]); - Route::resource('discourses', 'Api\DiscourseController', - ['only' => ['index']]); - Route::resource('datestats', 'Api\DateStatsController', - ['only' => ['index']]); - Route::resource('geostats', 'Api\GeoStatsController', - ['only' => ['index']]); + Route::get('languages', 'Api\LanguageController@index'); + Route::get('themes', 'Api\ThemeController@index'); + Route::get('discourses', 'Api\DiscourseController@index'); + Route::get('datestats', 'Api\DateStatsController@index'); + Route::get('geostats', 'Api\GeoStatsController@index'); }); }); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Controllers/DiscourseControllerTest.php --- a/server/src/tests/Controllers/DiscourseControllerTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Controllers/DiscourseControllerTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -29,10 +29,10 @@ public function testIndexQuery() { - $query = preg_replace('/\s+/', ' ', "select (?o as ?res) (COUNT(?s) as ?count) where { + $query = preg_replace('/\s+/', ' ', "SELECT (?o AS ?res) (COUNT(?s) AS ?count) WHERE { ?s a . ?s ?o. - filter(uri(?o) in (<".implode('>,<', array_keys(config('corpusparole.corpus_discourse_type'))).">)) + FILTER(uri(?o) in (<".implode('>,<', array_keys(config('corpusparole.corpus_discourse_type'))).">)) } GROUP BY ?o ORDER BY DESC(?count)"); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Controllers/DocumentListControllerTest.php --- a/server/src/tests/Controllers/DocumentListControllerTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Controllers/DocumentListControllerTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -104,12 +104,12 @@ public function testIndex() { $this->documentRepository - ->shouldReceive('paginateAll') + ->shouldReceive('paginate') ->once() ->andReturn( new LengthAwarePaginator([], 0, 10, 1, [ 'path' => '', - 'pageName' => 'page', + 'pageName' => config('corpusparole.pagination_page_param'), ])); $response = $this->call('GET', '/bo/docs'); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Controllers/GeoStatsControllerTest.php --- a/server/src/tests/Controllers/GeoStatsControllerTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Controllers/GeoStatsControllerTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -1,7 +1,5 @@ env('ELASTICSEARCH_INDEX'), 'body' => [ "size" => 0, + "query" => [ + 'match_all' => [] + ], "aggs" => [ "geos" => [ "terms" => [ @@ -62,4 +63,105 @@ '3027939' => 851 ]]); } + + + public function testGetIndexEarth() + { + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + "size" => 0, + "query" => [ + 'match_all' => [] + ], + "aggs" => [ + "geos" => [ + "terms" => [ + "size" => 0, + "field" => "geonames_hierarchy" + ] + ] + ] + ] + ]; + + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn(json_decode("{ + \"took\" : 17, + \"timed_out\" : false, + \"_shards\" : { + \"total\" : 1, + \"successful\" : 1, + \"failed\" : 0 + }, + \"hits\" : { + \"total\" : 3011, + \"max_score\" : 0.0, + \"hits\" : [ ] + }, + \"aggregations\" : { + \"geos\" : { + \"doc_count_error_upper_bound\" : 0, + \"sum_other_doc_count\" : 0, + \"buckets\" : [] + } + } +}", true)); + + $this->get('/api/v1/stats/geostats/?area='.config('corpusparole.geonames_earth_geonamesid'))->assertTrue($this->response->isOk(), $this->response->content()); + } + + + public function testGetIndexArea() + { + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + "size" => 0, + "query" => [ + 'term' => [ + "geonames_hierarchy" => "code_area" + ] + ], + "aggs" => [ + "geos" => [ + "terms" => [ + "size" => 0, + "field" => "geonames_hierarchy" + ] + ] + ] + ] + ]; + + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn(json_decode("{ + \"took\" : 17, + \"timed_out\" : false, + \"_shards\" : { + \"total\" : 1, + \"successful\" : 1, + \"failed\" : 0 + }, + \"hits\" : { + \"total\" : 3011, + \"max_score\" : 0.0, + \"hits\" : [ ] + }, + \"aggregations\" : { + \"geos\" : { + \"doc_count_error_upper_bound\" : 0, + \"sum_other_doc_count\" : 0, + \"buckets\" : [] + } + } +}", true)); + + $this->get('/api/v1/stats/geostats/?area=code_area')->assertTrue($this->response->isOk(), $this->response->content()); + } + } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Controllers/ThemeControllerTest.php --- a/server/src/tests/Controllers/ThemeControllerTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Controllers/ThemeControllerTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -10,16 +10,10 @@ */ class ThemeControllerTest extends TestCase { - private $sparqlClient; - public function setUp() { parent::setup(); - // create a mock of the post repository interface and inject it into the - // IoC container - $this->sparqlClient = m::mock('CorpusParole\Libraries\Sparql\SparqlClient'); - $this->app->instance('CorpusParole\Libraries\Sparql\SparqlClient', $this->sparqlClient); } public function tearDown() { @@ -27,130 +21,602 @@ parent::tearDown(); } - public function testIndexQuery() { + public function testIndex() { + + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => config('corpusparole.theme_default_limit'), + "order" => [ '_count' => 'desc' ], + "include" => ".*\|bnf\|.*" + ] + ] + ] + ] + ] + ] + ]; - $query = preg_replace('/\s+/', ' ', "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - FILTER (isIRI(?o) && regex(str(?o), '^".config('corpusparole.bnf_ark_base_url')."')) . - } - GROUP BY ?o - ORDER BY DESC(?count)"); + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn([ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ [ + "key" => "professions|bnf|ark:/12148/cb13318415c", + "doc_count" => 1412 + ], [ + "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s", + "doc_count" => 1092 + ], [ + "key" => "famille|bnf|ark:/12148/cb119339867", + "doc_count" => 1050 + ], [ + "key" => "oiseaux|bnf|ark:/12148/cb11932889r", + "doc_count" => 1003 + ], [ + "key" => "météorologie|bnf|ark:/12148/cb11932496x", + "doc_count" => 1001 + ], [ + "key" => "plantes|bnf|ark:/12148/cb11933145f", + "doc_count" => 995 + ], [ + "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q", + "doc_count" => 989 + ], [ + "key" => "arbres|bnf|ark:/12148/cb11934786x", + "doc_count" => 989 + ] ] + ] + ] + ] + ]); + $this->get('/api/v1/stats/themes/')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["themes" => [ + "http://ark.bnf.fr/ark:/12148/cb13318415c" => ['label' => 'professions', 'count' => 1412 ], + "http://ark.bnf.fr/ark:/12148/cb16604691s" => ['label' => 'travail non rémunéré', 'count' => 1092 ], + "http://ark.bnf.fr/ark:/12148/cb119339867" => ['label' => 'famille', 'count' => 1050 ], + "http://ark.bnf.fr/ark:/12148/cb11932889r" => ['label' => 'oiseaux', 'count' => 1003 ], + "http://ark.bnf.fr/ark:/12148/cb11932496x" => ['label' => 'météorologie', 'count' => 1001 ], + "http://ark.bnf.fr/ark:/12148/cb11933145f" => ['label' => 'plantes', 'count' => 995 ], + "http://ark.bnf.fr/ark:/12148/cb11930908q" => ['label' => 'animaux sauvages', 'count' => 989 ], + "http://ark.bnf.fr/ark:/12148/cb11934786x" => ['label' => 'arbres', 'count' => 989 ] + ]]); - $this->sparqlClient - ->shouldReceive('query') - ->with($query) - ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/themes/'); } - public function testIndexQueryBnf() { + public function testIndexAll() { + + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => config('corpusparole.theme_default_limit'), + "order" => [ '_count' => 'desc' ] + ] + ] + ] + ] + ] + ] + ]; - $query = preg_replace('/\s+/', ' ', "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - FILTER (isIRI(?o) && regex(str(?o), '^".config('corpusparole.bnf_ark_base_url')."')) . - } - GROUP BY ?o - ORDER BY DESC(?count)"); + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn([ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ [ + "key" => "professions|bnf|ark:/12148/cb13318415c", + "doc_count" => 1412 + ], [ + "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s", + "doc_count" => 1092 + ], [ + "key" => "famille|bnf|ark:/12148/cb119339867", + "doc_count" => 1050 + ], [ + "key" => "oiseaux|bnf|ark:/12148/cb11932889r", + "doc_count" => 1003 + ], [ + "key" => "Français|lxv|fra", + "doc_count" => 1002 + ], [ + "key" => "météorologie|bnf|ark:/12148/cb11932496x", + "doc_count" => 1001 + ], [ + "key" => "plantes|bnf|ark:/12148/cb11933145f", + "doc_count" => 995 + ], [ + "key" => "Breton|lxv|bzh", + "doc_count" => 992 + ], [ + "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q", + "doc_count" => 989 + ], [ + "key" => "arbres|bnf|ark:/12148/cb11934786x", + "doc_count" => 989 + ] ] + ] + ] + ] + ]); + $this->get('/api/v1/stats/themes/?filter=all')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["themes" => [ + "http://ark.bnf.fr/ark:/12148/cb13318415c" => ['label' => 'professions', 'count' => 1412 ], + "http://ark.bnf.fr/ark:/12148/cb16604691s" => ['label' => 'travail non rémunéré', 'count' => 1092 ], + "http://ark.bnf.fr/ark:/12148/cb119339867" => ['label' => 'famille', 'count' => 1050 ], + "http://ark.bnf.fr/ark:/12148/cb11932889r" => ['label' => 'oiseaux', 'count' => 1003 ], + "http://lexvo.org/id/iso639-3/fra" => ['label' => 'Français', 'count' => 1002 ], + "http://ark.bnf.fr/ark:/12148/cb11932496x" => ['label' => 'météorologie', 'count' => 1001 ], + "http://ark.bnf.fr/ark:/12148/cb11933145f" => ['label' => 'plantes', 'count' => 995 ], + "http://lexvo.org/id/iso639-3/bzh" => ['label' => 'Breton', 'count' => 992 ], + "http://ark.bnf.fr/ark:/12148/cb11930908q" => ['label' => 'animaux sauvages', 'count' => 989 ], + "http://ark.bnf.fr/ark:/12148/cb11934786x" => ['label' => 'arbres', 'count' => 989 ] + ]]); - $this->sparqlClient - ->shouldReceive('query') - ->with($query) - ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/themes/?filter=bnf'); } + public function testIndexLexvo() { - public function testIndexQueryAll() { + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => config('corpusparole.theme_default_limit'), + "order" => [ '_count' => 'desc' ], + "include" => ".*\|lxv\|.*" + ] + ] + ] + ] + ] + ] + ]; + + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn([ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ [ + "key" => "Français|lxv|fra", + "doc_count" => 1002 + ], [ + "key" => "Breton|lxv|bzh", + "doc_count" => 992 + ] ] + ] + ] + ] + ]); + $this->get('/api/v1/stats/themes/?filter=lexvo')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["themes" => [ + "http://lexvo.org/id/iso639-3/fra" => ['label' => 'Français', 'count' => 1002 ], + "http://lexvo.org/id/iso639-3/bzh" => ['label' => 'Breton', 'count' => 992 ] + ]]); + + } - $query = preg_replace('/\s+/', ' ', "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - } - GROUP BY ?o - ORDER BY DESC(?count)"); + private function getOrderQuery($order) { + return [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => config('corpusparole.theme_default_limit'), + "order" => $order, + "include" => ".*\|bnf\|.*" + ] + ] + ] + ] + ] + ] + ]; + + } - $this->sparqlClient - ->shouldReceive('query') - ->with($query) + private function getRespSort() { + return [ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ ] + ] + ] + ] + ]; + } + + public function testIndexSort() { + + Es::shouldReceive('search') ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/themes/?filter=all'); + ->with($this->getOrderQuery(['_count' => 'desc'])) + ->andReturn($this->getRespSort()); + $this->get('/api/v1/stats/themes/')->assertTrue($this->response->isOk(), $this->response->content()); + + } + + public function testIndexSortReverseCount() { + Es::shouldReceive('search') + ->once() + ->with($this->getOrderQuery(['_count' => 'asc'])) + ->andReturn($this->getRespSort()); + $this->get('/api/v1/stats/themes/?sort=-count')->assertTrue($this->response->isOk(), $this->response->content()); + } + + public function testIndexSortLabel() { + Es::shouldReceive('search') + ->once() + ->with($this->getOrderQuery(['_term' => 'asc'])) + ->andReturn($this->getRespSort()); + $this->get('/api/v1/stats/themes/?sort=label')->assertTrue($this->response->isOk(), $this->response->content()); + } + + public function testIndexSortAlphabetical() { + Es::shouldReceive('search') + ->once() + ->with($this->getOrderQuery(['_term' => 'asc'])) + ->andReturn($this->getRespSort()); + $this->get('/api/v1/stats/themes/?sort=alphabetical')->assertTrue($this->response->isOk(), $this->response->content()); + } + + public function testIndexSortLabelReverse() { + Es::shouldReceive('search') + ->once() + ->with($this->getOrderQuery(['_term' => 'desc'])) + ->andReturn($this->getRespSort()); + $this->get('/api/v1/stats/themes/?sort=-label')->assertTrue($this->response->isOk(), $this->response->content()); } - public function testIndexQueryNone() { + public function testIndexLimit() { - $query = preg_replace('/\s+/', ' ', "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - } - GROUP BY ?o - ORDER BY DESC(?count)"); - - $this->sparqlClient - ->shouldReceive('query') - ->with($query) - ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/themes/?filter=none'); - } + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => 3, + "order" => [ '_count' => 'desc' ], + "include" => ".*\|bnf\|.*" + ] + ] + ] + ] + ] + ] + ]; - - public function testIndexQueryEmpty() { + // This is not normally what should be received, but we test that the limit is respected + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn([ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ [ + "key" => "professions|bnf|ark:/12148/cb13318415c", + "doc_count" => 1412 + ], [ + "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s", + "doc_count" => 1092 + ], [ + "key" => "famille|bnf|ark:/12148/cb119339867", + "doc_count" => 1050 + ], [ + "key" => "oiseaux|bnf|ark:/12148/cb11932889r", + "doc_count" => 1003 + ], [ + "key" => "météorologie|bnf|ark:/12148/cb11932496x", + "doc_count" => 1001 + ], [ + "key" => "plantes|bnf|ark:/12148/cb11933145f", + "doc_count" => 995 + ], [ + "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q", + "doc_count" => 989 + ], [ + "key" => "arbres|bnf|ark:/12148/cb11934786x", + "doc_count" => 989 + ] ] + ] + ] + ] + ]); + $this->get('/api/v1/stats/themes/?limit=3')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["themes" => [ + "http://ark.bnf.fr/ark:/12148/cb13318415c" => ['label' => 'professions', 'count' => 1412 ], + "http://ark.bnf.fr/ark:/12148/cb16604691s" => ['label' => 'travail non rémunéré', 'count' => 1092 ], + "http://ark.bnf.fr/ark:/12148/cb119339867" => ['label' => 'famille', 'count' => 1050 ] + ]]); - $query = preg_replace('/\s+/', ' ', "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - } - GROUP BY ?o - ORDER BY DESC(?count)"); - - $this->sparqlClient - ->shouldReceive('query') - ->with($query) - ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/themes/?filter='); } - public function testIndexQueryUri() { + public function testIndexIndex() { + + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => 6, + "order" => [ '_count' => 'desc' ], + "include" => ".*\|bnf\|.*" + ] + ] + ] + ] + ] + ] + ]; - $query = preg_replace('/\s+/', ' ', "select (?o as ?theme) (COUNT(?s) as ?count) where { - ?s a . - ?s ?o . - FILTER isIRI(?o) . - } - GROUP BY ?o - ORDER BY DESC(?count)"); + // This is not normally what should be received, but we test that the limit is respected + Es::shouldReceive('search') + ->once() + ->with($query) + ->andReturn([ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ [ + "key" => "professions|bnf|ark:/12148/cb13318415c", + "doc_count" => 1412 + ], [ + "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s", + "doc_count" => 1092 + ], [ + "key" => "famille|bnf|ark:/12148/cb119339867", + "doc_count" => 1050 + ], [ + "key" => "oiseaux|bnf|ark:/12148/cb11932889r", + "doc_count" => 1003 + ], [ + "key" => "météorologie|bnf|ark:/12148/cb11932496x", + "doc_count" => 1001 + ], [ + "key" => "plantes|bnf|ark:/12148/cb11933145f", + "doc_count" => 995 + ], [ + "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q", + "doc_count" => 989 + ], [ + "key" => "arbres|bnf|ark:/12148/cb11934786x", + "doc_count" => 989 + ] ] + ] + ] + ] + ]); + $this->get('/api/v1/stats/themes/?limit=3&index=1')->assertTrue($this->response->isOk(), $this->response->content()); + $this->seeJsonEquals(["themes" => [ + "http://ark.bnf.fr/ark:/12148/cb11932889r" => ['label' => 'oiseaux', 'count' => 1003 ], + "http://ark.bnf.fr/ark:/12148/cb11932496x" => ['label' => 'météorologie', 'count' => 1001 ], + "http://ark.bnf.fr/ark:/12148/cb11933145f" => ['label' => 'plantes', 'count' => 995 ] + ]]); - $this->sparqlClient - ->shouldReceive('query') - ->with($query) - ->once() - ->andReturn(new \ArrayIterator([])); - $this->get('/api/v1/stats/themes/?filter=uri'); } - - public function testIndex() { + public function testIndexLimitIndex2() { - $this->sparqlClient - ->shouldReceive('query') + $query = [ + 'index' => env('ELASTICSEARCH_INDEX'), + 'body' => [ + 'size' => 0, + 'aggs' => [ + "subjects" => [ + "nested" => [ "path" => "subject" ], + "aggs" => [ + "subjects" => [ + "terms" => [ + "field" => "subject.label_code", + "size" => 9, + "order" => [ '_count' => 'desc' ], + "include" => ".*\|bnf\|.*" + ] + ] + ] + ] + ] + ] + ]; + + // This is not normally what should be received, but we test that the limit is respected + Es::shouldReceive('search') ->once() - ->andReturn(new \ArrayIterator([ - (object)['theme'=>new Resource('http://lexvo.org/id/iso639-3/gsw'), 'count' => Literal::create(44)], - (object)['theme'=>new Resource('http://ark.bnf.fr/ark:/12148/cb119339867'), 'count' => Literal::create(33)], - (object)['theme'=>Literal::create('Français', 'fr'), 'count' => Literal::create(22)], - ])); - $this->get('/api/v1/stats/themes/')->assertTrue($this->response->isOk(), $this->response->content()); + ->with($query) + ->andReturn([ + "took" => 27, + "timed_out" => false, + "_shards" => [ + "total" => 1, + "successful" => 1, + "failed" => 0 + ], + "hits" => [ + "total" => 3011, + "max_score" => 0.0, + "hits" => [ ] + ], + "aggregations" => [ + "subjects" => [ + "doc_count" => 41524, + "subjects" => [ + "doc_count_error_upper_bound" => 0, + "sum_other_doc_count" => 13678, + "buckets" => [ [ + "key" => "professions|bnf|ark:/12148/cb13318415c", + "doc_count" => 1412 + ], [ + "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s", + "doc_count" => 1092 + ], [ + "key" => "famille|bnf|ark:/12148/cb119339867", + "doc_count" => 1050 + ], [ + "key" => "oiseaux|bnf|ark:/12148/cb11932889r", + "doc_count" => 1003 + ], [ + "key" => "météorologie|bnf|ark:/12148/cb11932496x", + "doc_count" => 1001 + ], [ + "key" => "plantes|bnf|ark:/12148/cb11933145f", + "doc_count" => 995 + ], [ + "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q", + "doc_count" => 989 + ], [ + "key" => "arbres|bnf|ark:/12148/cb11934786x", + "doc_count" => 989 + ] ] + ] + ] + ] + ]); + $this->get('/api/v1/stats/themes/?limit=3&index=2')->assertTrue($this->response->isOk(), $this->response->content()); $this->seeJsonEquals(["themes" => [ - "http://lexvo.org/id/iso639-3/gsw" => ["label" => "alémanique", "count" => 44], - "http://ark.bnf.fr/ark:/12148/cb119339867" => ["label" => "famille", "count" => 33], - "Français" => ["label" => "Français", "count" => 22], + "http://ark.bnf.fr/ark:/12148/cb11930908q" => ['label' => 'animaux sauvages', 'count' => 989 ], + "http://ark.bnf.fr/ark:/12148/cb11934786x" => ['label' => 'arbres', 'count' => 989 ] ]]); } + } diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Libraries/Filters/CorpusFilterManagerTest.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/tests/Libraries/Filters/CorpusFilterManagerTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -0,0 +1,73 @@ +assertEquals($languagesOutput, $languagesInput); + } + + /** + * test prepare languages addPrefix + * + * @return void + */ + public function testPrepareLanguagesAddPrefix() + { + $languagesInput = ['fra', 'gsw', 'bre', 'oci']; + $languagesOutput = CorpusFilterManager::prepareLanguages($languagesInput); + $this->assertEquals($languagesOutput, ['http://lexvo.org/id/iso639-3/fra', 'http://lexvo.org/id/iso639-3/gsw', 'http://lexvo.org/id/iso639-3/bre', 'http://lexvo.org/id/iso639-3/oci']); + } + + /** + * test prepare languages mix + * + * @return void + */ + public function testPrepareLanguagesMix() + { + $languagesInput = ['fra', 'http://lexvo.org/id/iso639-3/gsw', 'bre', 'http://lexvo.org/id/iso639-3/oci']; + $languagesOutput = CorpusFilterManager::prepareLanguages($languagesInput); + $this->assertEquals($languagesOutput, ['http://lexvo.org/id/iso639-3/fra', 'http://lexvo.org/id/iso639-3/gsw', 'http://lexvo.org/id/iso639-3/bre', 'http://lexvo.org/id/iso639-3/oci']); + } + + /** + * test prepare languages recursion simple + * + * @return void + */ + public function testPrepareLanguagesRecusionSimple() + { + $languagesInput = ['http://lexvo.org/id/iso639-3/fra', 'http://lexvo.org/id/iso639-3/gsw', 'http://lexvo.org/id/iso639-3/bre', 'corpus-oil']; + $languagesOutput = CorpusFilterManager::prepareLanguages($languagesInput); + $this->assertEquals($languagesOutput, ['http://lexvo.org/id/iso639-3/fra', 'http://lexvo.org/id/iso639-3/gsw', 'http://lexvo.org/id/iso639-3/bre', 'http://lexvo.org/id/iso639-3/pcd']); + } + + /** + * test prepare languages recursion simple + * + * @return void + */ + public function testPrepareLanguagesRecusionComplex() + { + $languagesInput = ['fra', 'http://lexvo.org/id/iso639-3/gsw', 'corpus-oil', 'corpus-regional']; + $languagesOutput = CorpusFilterManager::prepareLanguages($languagesInput); + sort($languagesOutput); + $languagesExpected = ['http://lexvo.org/id/iso639-3/fra', 'http://lexvo.org/id/iso639-3/gsw', 'http://lexvo.org/id/iso639-3/pcd', + 'http://lexvo.org/id/iso639-3/frp', 'http://lexvo.org/id/iso639-3/cos', 'http://lexvo.org/id/iso639-3/rcf', + 'http://lexvo.org/id/iso639-3/gcf']; + sort($languagesExpected); + $this->assertEquals($languagesOutput, $languagesExpected); + } + + +} diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Libraries/Handle/HandleClientTest.php --- a/server/src/tests/Libraries/Handle/HandleClientTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Libraries/Handle/HandleClientTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -344,7 +344,7 @@ $handleClient = new HandleClient($this->certTmpPath, null, "300:11280.101/CORPUS_ADMIN", "172.16.1.6", 8000, $this->httpClient); - $pagination = $handleClient->paginateAll('11280.101', 5, 'page', 2); + $pagination = $handleClient->paginateAll('11280.101', 5, config('corpusparole.pagination_page_param'), 2); $this->assertNotNull($pagination); @@ -388,7 +388,7 @@ $handleClient = new HandleClient($this->certTmpPath, null, "300:11280.101/CORPUS_ADMIN", "172.16.1.6", 8000, $this->httpClient); - $pagination = $handleClient->paginateAll('11280.101', 5, 'page', 3); + $pagination = $handleClient->paginateAll('11280.101', 5, config('corpusparole.pagination_page_param'), 3); $this->assertNotNull($pagination); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Models/DocumentTest.php --- a/server/src/tests/Models/DocumentTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Models/DocumentTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -428,7 +428,7 @@ $this->assertTrue(is_array($json), 'Returned json must be an array'); $this->assertEquals( - ["id", "uri", "title", "language", "modified", "issued", "publishers", "contributors", "subjects", "transcript", "mediaArray", "geoInfo"], + ["id", "uri", "title", "languages", "modified", "issued", "publishers", "contributors", "subjects", "transcript", "mediaArray", "geoInfo"], array_keys($json) ); $this->assertEquals(sprintf('%1$s/crdo-CFPP2000_35_SOUNDid', config('corpusparole.handle_prefix')), $json['id']); diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php --- a/server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Repositories/DocumentRepositoryIntegrationTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -62,7 +62,7 @@ public function testAll() { $expectedId = $this->corpusDocIdBaseUri.'crdo-ALA_738'; $docList = $this->documentRepository->all(); - $this->assertCount(2, $docList, "Should have one element"); + $this->assertCount(2, $docList, "Should have 2 element"); $resDoc = $docList[0]; diff -r 4a3899b6a7ed -r 766af1228b05 server/src/tests/Repositories/DocumentRepositoryTest.php --- a/server/src/tests/Repositories/DocumentRepositoryTest.php Sun Oct 16 22:23:31 2016 +0530 +++ b/server/src/tests/Repositories/DocumentRepositoryTest.php Sun Oct 16 23:19:57 2016 +0530 @@ -99,9 +99,14 @@ $mock->title = new EasyRdf\Literal("Atlas Linguistique et ethnographique de l'Alsace - Enquetes sur la conscience linguistique - ALA_738", null, "fr"); }), ]; + $countArray = [ + m::mock('resObj', function($mock) { + $mock->count = new EasyRdf\Literal(1, "http://www.w3.org/2001/XMLSchema#integer", null); + }), + ]; $sparqlClientMock = m::mock('CorpusParole\Libraries\Sparql\SparqlClient'); - $sparqlClientMock->shouldReceive('query')->andReturn($returnedArray); + $sparqlClientMock->shouldReceive('query')->andReturn($countArray, $returnedArray); $documentRepository = $this->app->make('CorpusParole\Repositories\RdfDocumentRepository', [$sparqlClientMock]);