diff --git a/data/documents_big.json b/data/documents_big.json index 15c846c769..eff1aee1a5 100644 --- a/data/documents_big.json +++ b/data/documents_big.json @@ -631,7 +631,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Bach, Johann Sebastian" }, @@ -7625,7 +7625,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Park, Barbara" }, @@ -8661,7 +8661,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Manuil", "qualifier": "m\u00e9tropolite de Kou\u00efbychev" @@ -10057,7 +10057,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Glanzmann, Arthur" }, @@ -10250,7 +10250,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Robin, Alexis" }, @@ -12264,7 +12264,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Bertholet, Alfred", "qualifier": "Musicien" @@ -12424,7 +12424,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Reale, Giovanni", "date_of_birth": "1931", @@ -15798,11 +15798,11 @@ }, { "audienceType": "school_level", - "value": "target_school_harmos11" + "value": "target_school_harmos1" }, { "audienceType": "school_level", - "value": "target_school_harmos1" + "value": "target_school_harmos11" } ] }, @@ -17540,7 +17540,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Larderaz, Juliane" }, @@ -18908,7 +18908,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Balet, Jan", "date_of_birth": "1913", @@ -21490,7 +21490,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "R\u00fcppell, Gert", "identifiedBy": { @@ -21501,7 +21501,7 @@ "title": "Gute Nachricht f\u00fcr die Armen, schlechte Nachricht f\u00fcr die Reichen : Der unausgetragene Konflikt der \u00f6kumenischen Bewegung" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Raiser, Konrad", "identifiedBy": { @@ -40211,7 +40211,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Pagnol, Marcel" }, @@ -41792,7 +41792,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Perro, Bryan" }, @@ -42974,7 +42974,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "PoiPoi" }, @@ -47236,7 +47236,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Binet, Christian" }, @@ -48918,7 +48918,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Zenger, Erich", "date_of_birth": "1939", @@ -49134,7 +49134,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Martin, Ann M", "date_of_birth": "1955" @@ -49547,7 +49547,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Goldmann, Christoph" }, @@ -70145,7 +70145,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Herg\u00e9" }, @@ -71067,7 +71067,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Stewart, Paul" }, @@ -71976,7 +71976,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Roduit, Olivier", "date_of_birth": "1958" @@ -73435,7 +73435,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Hill, Stuart" }, @@ -74637,7 +74637,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -74807,7 +74807,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Herg\u00e9" }, @@ -75822,7 +75822,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Tito", "date_of_birth": "1957" @@ -76386,7 +76386,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "De Gieter, Lucien" }, @@ -79054,11 +79054,6 @@ ], "work_access_point": [ { - "agent": { - "type": "bf:Organisation", - "conference": false, - "preferred_name": "Obwalden" - }, "title": "Lois et arr\u00eat\u00e9s" } ] @@ -81544,7 +81539,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "D\u00fcrrenmatt, Friedrich", "date_of_birth": "1921", @@ -82789,11 +82784,11 @@ }, { "audienceType": "school_level", - "value": "target_school_harmos11" + "value": "target_school_harmos10" }, { "audienceType": "school_level", - "value": "target_school_harmos10" + "value": "target_school_harmos11" } ], "contribution": [ @@ -84400,14 +84395,14 @@ ], "sequence_numbering": "No 1(2005)-", "intendedAudience": [ - { - "audienceType": "understanding_level", - "value": "target_understanding_tertiary" - }, { "audienceType": "school_level", "value": "target_school_tertiary" }, + { + "audienceType": "understanding_level", + "value": "target_understanding_tertiary" + }, { "audienceType": "understanding_level", "value": "target_understanding_hep_trainers" @@ -87599,7 +87594,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Balthasar, Hans Urs von", "date_of_birth": "1905", @@ -87608,7 +87603,7 @@ "title": "Bekenntnis zu Mozart" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Balthasar, Hans Urs von", "date_of_birth": "1905", @@ -90971,35 +90966,35 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cook, Glen" }, "title": "Saisons funestes" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cook, Glen" }, "title": "Elle est les t\u00e9n\u00e8bres" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cook, Glen" }, "title": "L'eau dort" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cook, Glen" }, "title": "Soldats de pierre" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cook, Glen" }, @@ -92953,7 +92948,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Lull, Ram\u00f3n" }, @@ -93772,7 +93767,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Urlaub, Farin", "date_of_birth": "1963" @@ -95046,7 +95041,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Heine, Heinrich", "date_of_birth": "1797", @@ -95696,7 +95691,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Marguerite", "date_of_birth": "1492", @@ -97746,19 +97741,19 @@ }, { "audienceType": "school_level", - "value": "target_school_harmos5" + "value": "target_school_harmos6" }, { "audienceType": "school_level", - "value": "target_school_harmos6" + "value": "target_school_harmos5" }, { "audienceType": "school_level", - "value": "target_school_harmos8" + "value": "target_school_harmos7" }, { "audienceType": "school_level", - "value": "target_school_harmos7" + "value": "target_school_harmos8" } ], "partOf": [ @@ -100226,14 +100221,14 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Sartori, Luigi" }, "title": "Il mistero della salvezza" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Lanne, Emmanuel", "identifiedBy": { @@ -100244,14 +100239,14 @@ "title": "La storia della salvezza nel cristianesimo evangelico" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Balducci, Ernesto" }, "title": "Salvezza cristiana e non credenti" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Moeller, Charles", "date_of_birth": "1912", @@ -102105,7 +102100,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Paul", "numeration": "VI", @@ -103447,7 +103442,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Blyton, Enid" }, @@ -103612,7 +103607,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Wibl\u00e9, Fran\u00e7ois" }, @@ -107222,11 +107217,11 @@ "intendedAudience": [ { "audienceType": "school_level", - "value": "target_school_harmos2" + "value": "target_school_harmos1" }, { "audienceType": "school_level", - "value": "target_school_harmos1" + "value": "target_school_harmos2" }, { "audienceType": "school_level", @@ -108393,7 +108388,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Morris", "date_of_birth": "1923", @@ -108402,7 +108397,7 @@ "title": "Lucky Luke" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Goscinny, Ren\u00e9", "date_of_birth": "1926", @@ -109947,7 +109942,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Blyton, Enid" }, @@ -110348,7 +110343,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Danziger, Paula" }, @@ -110790,7 +110785,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Flanagan, John", "date_of_birth": "1944" @@ -113323,11 +113318,6 @@ ], "work_access_point": [ { - "agent": { - "type": "bf:Organisation", - "conference": false, - "preferred_name": "Italia" - }, "title": "Code p\u00e9nal" } ], @@ -124713,7 +124703,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Tillich, Paul" }, @@ -125501,7 +125491,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Marek, Robert" }, @@ -127184,27 +127174,9 @@ ], "work_access_point": [ { - "agent": { - "type": "bf:Organisation", - "conference": false, - "preferred_name": "Deutschland (Bundesrepublik)", - "identifiedBy": { - "value": "026358786", - "type": "IdRef" - } - }, "title": "Code de proc\u00e9dure civile" }, { - "agent": { - "type": "bf:Organisation", - "conference": false, - "preferred_name": "Deutschland", - "identifiedBy": { - "value": "030685435", - "type": "IdRef" - } - }, "title": "Gesetze und Verordnungen", "language": "ger" } @@ -132465,7 +132437,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "D\u00e8s, Henri" }, @@ -136550,7 +136522,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "MacCombie, Karen" }, @@ -139191,7 +139163,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Plas, Alain" }, @@ -140963,7 +140935,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Mozart, Wolfgang Amadeus" }, @@ -143103,7 +143075,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Roba", "date_of_birth": "1930", @@ -143270,7 +143242,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Schulz, Richard", "qualifier": "esp\u00e9rantiste" @@ -143897,11 +143869,11 @@ }, { "audienceType": "school_level", - "value": "target_school_harmos11" + "value": "target_school_harmos10" }, { "audienceType": "school_level", - "value": "target_school_harmos10" + "value": "target_school_harmos11" } ], "partOf": [ @@ -145346,7 +145318,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "King, Stephen", "date_of_birth": "1947" @@ -145517,7 +145489,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "King, Stephen", "date_of_birth": "1947" @@ -145687,7 +145659,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cantin, Marc" }, @@ -146066,7 +146038,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cabot, Meg" }, @@ -147384,7 +147356,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Dever, Joe" }, @@ -148759,7 +148731,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Schumann, Robert", "date_of_birth": "1810", @@ -148771,7 +148743,7 @@ ] }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Schumann, Robert", "date_of_birth": "1810", @@ -149103,7 +149075,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Plato", "date_of_birth": "ca. 427", @@ -153829,7 +153801,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Brussolo, Serge" }, @@ -154608,7 +154580,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Knoepfel, Peter" }, @@ -157573,7 +157545,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Mauriac, Claude" }, @@ -159836,7 +159808,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Shelley, Mary Wollstonecraft Godwin", "date_of_birth": "1797", @@ -167308,7 +167280,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Nix, Garth" }, @@ -169496,14 +169468,14 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Ziegler, Walter" }, "title": "Religion und Politik im Umfeld des Regensburger Religionsgespr\u00e4chs von 1541" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Barth, Hans Martin" }, @@ -172410,11 +172382,11 @@ "intendedAudience": [ { "audienceType": "school_level", - "value": "target_school_harmos11" + "value": "target_school_harmos1" }, { "audienceType": "school_level", - "value": "target_school_harmos1" + "value": "target_school_harmos11" }, { "audienceType": "understanding_level", @@ -173121,7 +173093,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -173134,7 +173106,7 @@ "key_for_music": "Hob. 1:7, do majeur" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -173147,7 +173119,7 @@ "key_for_music": "Hob. 1:8, sol majeur" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -176355,7 +176327,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Mendelssohn-Bartholdy, Felix" }, @@ -180893,7 +180865,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Glanzmann, Arthur" }, @@ -205077,7 +205049,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Brussolo, Serge" }, @@ -208500,7 +208472,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Manuil", "qualifier": "m\u00e9tropolite de Kou\u00efbychev" @@ -212823,7 +212795,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Bubnoff, Serge von" }, @@ -216034,7 +216006,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Darbellay, Etienne", "identifiedBy": { @@ -216045,7 +216017,7 @@ "title": "Luigi Ferdinando Tagliavini: le musicologue" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Darbellay, Etienne" }, diff --git a/data/documents_small.json b/data/documents_small.json index ddcfe76e34..82286679f8 100644 --- a/data/documents_small.json +++ b/data/documents_small.json @@ -595,7 +595,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Bach, Johann Sebastian" }, @@ -3097,7 +3097,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Marguerite", "date_of_birth": "1492", @@ -3309,7 +3309,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Plas, Alain" }, @@ -6448,7 +6448,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Binet, Christian" }, @@ -7198,7 +7198,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Mozart, Wolfgang Amadeus" }, @@ -7548,7 +7548,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Glanzmann, Arthur" }, @@ -7856,15 +7856,15 @@ }, { "audienceType": "school_level", - "value": "target_school_harmos9" + "value": "target_school_harmos10" }, { "audienceType": "school_level", - "value": "target_school_harmos11" + "value": "target_school_harmos9" }, { "audienceType": "school_level", - "value": "target_school_harmos10" + "value": "target_school_harmos11" } ], "partOf": [ @@ -8311,7 +8311,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Cantin, Marc" }, @@ -8697,7 +8697,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Urlaub, Farin", "date_of_birth": "1963" @@ -10004,7 +10004,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "King, Stephen", "date_of_birth": "1947" @@ -10175,7 +10175,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "King, Stephen", "date_of_birth": "1947" @@ -11760,7 +11760,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -14788,11 +14788,11 @@ "intendedAudience": [ { "audienceType": "school_level", - "value": "target_school_harmos1" + "value": "target_school_harmos2" }, { "audienceType": "school_level", - "value": "target_school_harmos2" + "value": "target_school_harmos1" }, { "audienceType": "school_level", @@ -19441,11 +19441,6 @@ ], "work_access_point": [ { - "agent": { - "type": "bf:Organisation", - "conference": false, - "preferred_name": "Italia" - }, "title": "Code p\u00e9nal" } ], @@ -20166,7 +20161,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Knoepfel, Peter" }, @@ -22690,7 +22685,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Mauriac, Claude" }, @@ -25987,7 +25982,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Shelley, Mary Wollstonecraft Godwin", "date_of_birth": "1797", @@ -27679,7 +27674,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "PoiPoi" }, @@ -30134,7 +30129,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Bertholet, Alfred", "qualifier": "Musicien" @@ -34984,7 +34979,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Nix, Garth" }, @@ -37509,7 +37504,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Marek, Robert" }, @@ -40601,7 +40596,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Schumann, Robert", "date_of_birth": "1810", @@ -40613,7 +40608,7 @@ ] }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Schumann, Robert", "date_of_birth": "1810", @@ -40915,7 +40910,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -40928,7 +40923,7 @@ "key_for_music": "Hob. 1:7, do majeur" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -40941,7 +40936,7 @@ "key_for_music": "Hob. 1:8, sol majeur" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Haydn, Joseph", "date_of_birth": "1732", @@ -44078,7 +44073,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Mendelssohn-Bartholdy, Felix" }, @@ -44845,7 +44840,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Plato", "date_of_birth": "ca. 427", @@ -48905,7 +48900,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Bubnoff, Serge von" }, @@ -50140,7 +50135,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Glanzmann, Arthur" }, @@ -51551,7 +51546,7 @@ ], "work_access_point": [ { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Darbellay, Etienne", "identifiedBy": { @@ -51562,7 +51557,7 @@ "title": "Luigi Ferdinando Tagliavini: le musicologue" }, { - "agent": { + "creator": { "type": "bf:Person", "preferred_name": "Darbellay, Etienne" }, diff --git a/rero_ils/dojson/utils.py b/rero_ils/dojson/utils.py index e8d5c96611..fea1088584 100644 --- a/rero_ils/dojson/utils.py +++ b/rero_ils/dojson/utils.py @@ -321,21 +321,20 @@ def error_print(*args): def make_year(date): - """Test if string is integer and between 1000 to 9999.""" + """Test if string is integer and between 1000 and 9999.""" with contextlib.suppress(Exception): int_date = int(date) - if int_date >= 1000 and int_date < 9999: + if 1000 <= int_date < 9999: return int_date return None def not_repetitive(bibid, reroid, key, value, subfield, default=None): """Get the first value if the value is a list or tuple.""" - data = value.get( - subfield) if default is None else value.get(subfield, default) + data = value.get(subfield, default) if isinstance(data, (list, tuple)): - error_print('WARNING NOT REPETITIVE:', bibid, reroid, key, subfield, - value) + error_print( + 'WARNING NOT REPETITIVE:', bibid, reroid, key, subfield, value) data = data[0] return data @@ -381,7 +380,7 @@ def remove_trailing_punctuation( :type spaced_punctuation: str :return: the data string with specific trailing punctuation removed - :rtype: list + :rtype: str """ # escape chars: .[]^- if punctuation: diff --git a/rero_ils/modules/documents/dojson/contrib/marc21tojson/utils.py b/rero_ils/modules/documents/dojson/contrib/marc21tojson/utils.py index b6bb37221e..5c3d9d66df 100644 --- a/rero_ils/modules/documents/dojson/contrib/marc21tojson/utils.py +++ b/rero_ils/modules/documents/dojson/contrib/marc21tojson/utils.py @@ -1589,14 +1589,13 @@ def add_author_to_subfield_t(value): def do_work_access_point(marc21, key, value): """Get work access point.""" """ - * "agent": { - * "type": "bf:Person", (700.2) + * "creator": { + * "type": "bf:Person", (700.2) | "bf:Organisation", (710.2) * "preferred_name": "700.2$a", * "numeration": "700.2$b", * "date_of_birth": "700.2$d - 1ère date", * "date_of_death": "700.2$d - 2e date", * "qualifier": ["700.2$c"] - * "type": "bf:Organisation", (710.2) * "conference": false, (710.2) * "preferred_name": "710.2$a", * "subordinate_unit": ["710.2$b"] @@ -1620,71 +1619,39 @@ def do_work_access_point(marc21, key, value): """ tag = key[:3] title_tag = 'a' - agent = {} work_access_point = {} - if tag in ['700', '800'] and value.get('t'): - title_tag = 't' - agent['type'] = EntityType.PERSON - if value.get('a'): - preferred_name = not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'a') - preferred_name = remove_trailing_punctuation(not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'a', - ',.' - )).rstrip('.') - agent['preferred_name'] = preferred_name - if value.get('b'): - agent['numeration'] = remove_trailing_punctuation( - not_repetitive(marc21.bib_id, marc21.bib_id, key, value, 'b')) - if dates := not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'd'): - split_dates = dates.split('-') - if date_of_birth := split_dates[0].strip().rstrip('.'): - agent['date_of_birth'] = date_of_birth - with contextlib.suppress(Exception): - if date_of_death := split_dates[1].strip().rstrip('.'): - agent['date_of_death'] = date_of_death - if value.get('c'): - agent['qualifier'] = remove_trailing_punctuation( - not_repetitive(marc21.bib_id, marc21.bib_id, key, value, 'c') - ).rstrip('.') - elif tag == '710': + bib_id = marc21.bib_id + # work_access_point.creator + if (tag in ['700', '800'] and value.get('t')) or tag == '710': title_tag = 't' - agent['type'] = EntityType.ORGANISATION - agent['conference'] = False - if value.get('a'): - preferred_name = not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'a') - preferred_name = remove_trailing_punctuation(not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'a', - ',.' - )).rstrip('.') - agent['preferred_name'] = preferred_name - if value.get('b'): - for subordinate_unit in list(utils.force_list(value.get('b'))): - subordinate_unit = remove_trailing_punctuation( - subordinate_unit).rstrip('.') - agent.setdefault('subordinate_unit', []) - agent['subordinate_unit'].append(subordinate_unit) - - if agent: - work_access_point['agent'] = agent + if (creator_data := _do_work_access_point_creator(marc21, key, value))\ + and creator_data.get('preferred_name'): + work_access_point['creator'] = creator_data + # work_access_point.title if value.get(title_tag): - title = not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, title_tag) work_access_point['title'] = remove_trailing_punctuation( - title, ',.').replace('\u009c', '') + not_repetitive(bib_id, bib_id, key, value, title_tag), ',.' + ).replace('\u009c', '') + + if not work_access_point.get('title'): + error_print('WARNING WORK ACCESS POINT:', bib_id, marc21.rero_id, + 'no title') + return None + # work_access_point.date_of_work if value.get('f'): - work_access_point['date_of_work'] = not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'f') + work_access_point['date_of_work'] = \ + not_repetitive(bib_id, bib_id, key, value, 'f') + # work_access_point.miscellaneous_information if value.get('g'): work_access_point['miscellaneous_information'] = \ remove_trailing_punctuation(not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'g'), ',.') + bib_id, bib_id, key, value, 'g'), ',.') + # work_access_point.language if value.get('l'): - language = not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'l' - ).lstrip('(').rstrip('.').rstrip(')') + language = not_repetitive(bib_id, bib_id, key, value, 'l')\ + .lstrip('(')\ + .rstrip('.')\ + .rstrip(')') lang = language if language not in _LANGUAGES: if len(language.split('-')) > 1 or language == 'mehrsprachig': @@ -1694,15 +1661,15 @@ def do_work_access_point(marc21, key, value): if lang in _LANGUAGES: work_access_point['language'] = lang if lang == 'mul' or lang not in _LANGUAGES: - error_print('WARNING WORK ACCESS POINT LANGUAGE:', marc21.bib_id, + error_print('WARNING WORK ACCESS POINT LANGUAGE:', bib_id, marc21.rero_id, language) - if miscellaneous_information := work_access_point.get( - 'miscellaneous_information'): + if misc_info := work_access_point.get('miscellaneous_information'): work_access_point['miscellaneous_information'] = \ - f'{miscellaneous_information} | language: {language}' + f'{misc_info} | language: {language}' else: work_access_point['miscellaneous_information'] = \ f'language: {language}' + # work_access_point.part part_list = TitlePartList(part_number_code='n', part_name_code='p') items = get_field_items(value) index = 1 @@ -1716,35 +1683,78 @@ def do_work_access_point(marc21, key, value): if part_name := part.get('partName'): part['partName'] = remove_trailing_punctuation(part_name) work_access_point['part'] = the_part_list + # work_access_point.form_subdivision if value.get('k'): - for form_subdivision in list(utils.force_list(value.get('k'))): - work_access_point.setdefault('form_subdivision', []) - work_access_point['form_subdivision'].append( - remove_trailing_punctuation(form_subdivision, ',.')) + work_access_point['form_subdivision'] = list(filter(None, [ + remove_trailing_punctuation(form_subdivision, ',.') + for form_subdivision in list(utils.force_list(value.get('k'))) + ])) + # work_access_point.medium_of_performance_for_music if value.get('m'): work_access_point['medium_of_performance_for_music'] = list( utils.force_list(value.get('m'))) + # work_access_point.arranged_statement_for_music if value.get('o'): work_access_point['arranged_statement_for_music'] = not_repetitive( - marc21.bib_id, marc21.bib_id, key, value, 'o') + bib_id, bib_id, key, value, 'o') + # work_access_point.key_for_music if value.get('r'): work_access_point['key_for_music'] = remove_trailing_punctuation( - not_repetitive(marc21.bib_id, marc21.bib_id, key, value, 'r'), - ',.' - ) - if identifier := build_identifier(value): - agent['identifiedBy'] = identifier + not_repetitive(bib_id, bib_id, key, value, 'r'), ',.') - if not work_access_point.get('title'): - error_print('WARNING WORK ACCESS POINT:', marc21.bib_id, - marc21.rero_id, 'no title') - return None - agent = work_access_point.get('agent', {}) - if agent and not agent.get('preferred_name'): - work_access_point.pop('agent') return work_access_point or None +def _do_work_access_point_creator(marc21, key, value): + """Create the structure for the work_access_point.creator field. + + :param marc21: the marc record. + :param key: the MARC tag code and indicator. + :param value: the MARC tag content (subfields). + :return the work_access_point.creator structure as a dict + :rtype dict + """ + tag = key[:3] + bib_id = marc21.bib_id + data = {} + if tag in ['100', '700', '800']: + data = {'type': EntityType.PERSON} + if value.get('a'): + data['preferred_name'] = remove_trailing_punctuation( + not_repetitive(bib_id, bib_id, key, value, 'a',)).rstrip('.') + if value.get('b'): + data['numeration'] = remove_trailing_punctuation( + not_repetitive(bib_id, bib_id, key, value, 'b')) + if date := not_repetitive(bib_id, bib_id, key, value, 'd'): + date_parts = [d.strip().rstrip('.') for d in date.split('-')] + if date_parts[0]: + data['date_of_birth'] = date_parts[0] + if date_parts[1]: + data['date_of_death'] = date_parts[1] + if value.get('c'): + data['qualifier'] = remove_trailing_punctuation( + not_repetitive(bib_id, bib_id, key, value, 'c')).rstrip('.') + + # bf:Organisation + if tag == '710': + data = { + 'type': EntityType.ORGANISATION, + 'conference': False + } + if value.get('a'): + data['name'] = remove_trailing_punctuation( + not_repetitive(bib_id, bib_id, key, value, 'a',)).rstrip('.') + if value.get('b'): + data['subordinate_unit'] = list(filter(None, [ + remove_trailing_punctuation(unit).rstrip('.') + for unit in list(utils.force_list(value.get('b'))) + ])) + + if data and (identifier := build_identifier(value)): + data['identifiedBy'] = identifier + return data + + def do_work_access_point_240(marc21, key, value): """Get work access point from 240.""" work_access_points = {} @@ -1764,7 +1774,7 @@ def do_work_access_point_240(marc21, key, value): if field_100 := marc21.get_fields('100'): if agent := build_agent(marc21, '100', field_100[0]['subfields'])[1]: - work_access_points['agent'] = agent + work_access_points['creator'] = agent if the_part_list := part_list.get_part_list(): work_access_points['part'] = the_part_list diff --git a/rero_ils/modules/documents/jsonschemas/documents/document_work_access_point-v0.0.1.json b/rero_ils/modules/documents/jsonschemas/documents/document_work_access_point-v0.0.1.json index ef0b31f05f..e1dea7ccc1 100644 --- a/rero_ils/modules/documents/jsonschemas/documents/document_work_access_point-v0.0.1.json +++ b/rero_ils/modules/documents/jsonschemas/documents/document_work_access_point-v0.0.1.json @@ -7,149 +7,116 @@ "items": { "type": "object", "title": "Title", - "oneOf": [ - { - "title": "Link to work", + "additionalProperties": false, + "propertiesOrder": [ + "agent", + "title", + "date_of_work", + "miscellaneous_information", + "language", + "part", + "form_subdivision", + "medium_of_performance_for_music", + "arranged_statement_for_music", + "key_for_music", + "identifiedBy" + ], + "required": [ + "title" + ], + "properties": { + "creator": { + "title": "Agent", "type": "object", - "additionalProperties": false, - "propertiesOrder": [ - "$ref" - ], - "required": [ - "$ref" - ], - "properties": { - "$ref": { - "title": "Title", - "type": "string", - "pattern": "^https://mef.rero.ch/api/work/rero/.*?$", - "form": { - "remoteTypeahead": { - "type": "mef-work", - "enableGroupField": true - }, - "templateOptions": { - "itemCssClass": "col-lg-12" - } - } + "oneOf": [ + { + "$ref": "https://bib.rero.ch/schemas/documents/document_contribution_person-v0.0.1.json" + }, + { + "$ref": "https://bib.rero.ch/schemas/documents/document_contribution_organisation-v0.0.1.json" } - } + ] }, - { - "title": "Work (local)", - "type": "object", - "additionalProperties": false, - "propertiesOrder": [ - "agent", - "title", - "date_of_work", - "miscellaneous_information", - "language", - "part", - "form_subdivision", - "medium_of_performance_for_music", - "arranged_statement_for_music", - "key_for_music", - "identifiedBy" - ], - "required": [ - "title" - ], - "properties": { - "agent": { - "title": "Agent", - "type": "object", - "oneOf": [ - { - "$ref": "https://bib.rero.ch/schemas/documents/document_contribution_person-v0.0.1.json" - }, - { - "$ref": "https://bib.rero.ch/schemas/documents/document_contribution_organisation-v0.0.1.json" - } - ] - }, - "title": { - "title": "Title", - "type": "string", - "minLength": 1 - }, - "date_of_work": { - "title": "Date of work", - "type": "string", - "minLength": 1 - }, - "miscellaneous_information": { - "title": "Miscellaneous information", - "type": "string", - "minLength": 1 - }, - "language": { - "$ref": "https://bib.rero.ch/schemas/common/languages-v0.0.1.json#/language" - }, - "part": { - "title": "Parts", - "description": "Part, Section, or Supplement", - "type": "array", - "minItems": 1, - "items": { - "title": "Part", - "type": "object", - "propertiesOrder": [ - "partNumber", - "partName" - ], - "properties": { - "partNumber": { - "title": "Designation", - "description": "Numeric designation of the part, section or supplement", - "type": "string", - "minLength": 1 - }, - "partName": { - "title": "Title", - "description": "Title of the part, section, or supplement", - "type": "string", - "minLength": 1 - } - } - } - }, - "form_subdivision": { - "title": "Form subdivisions", - "type": "array", - "minItems": 1, - "items": { - "title": "Form subdivision", + "title": { + "title": "Title", + "type": "string", + "minLength": 1 + }, + "date_of_work": { + "title": "Date of work", + "type": "string", + "minLength": 1 + }, + "miscellaneous_information": { + "title": "Miscellaneous information", + "type": "string", + "minLength": 1 + }, + "language": { + "$ref": "https://bib.rero.ch/schemas/common/languages-v0.0.1.json#/language" + }, + "part": { + "title": "Parts", + "description": "Part, Section, or Supplement", + "type": "array", + "minItems": 1, + "items": { + "title": "Part", + "type": "object", + "propertiesOrder": [ + "partNumber", + "partName" + ], + "properties": { + "partNumber": { + "title": "Designation", + "description": "Numeric designation of the part, section or supplement", "type": "string", "minLength": 1 - } - }, - "medium_of_performance_for_music": { - "title": "Mediums of performance (music)", - "type": "array", - "minItems": 1, - "items": { - "title": "Medium of performance (music)", + }, + "partName": { + "title": "Title", + "description": "Title of the part, section, or supplement", "type": "string", "minLength": 1 } - }, - "arranged_statement_for_music": { - "title": "Arranged statement (music)", - "type": "string", - "minLength": 1 - }, - "key_for_music": { - "title": "Key (music)", - "type": "string", - "minLength": 1 - }, - "identifiedBy": { - "$ref": "https://bib.rero.ch/schemas/documents/document_identifier-v0.0.1.json#/identifier_contribution" } } + }, + "form_subdivision": { + "title": "Form subdivisions", + "type": "array", + "minItems": 1, + "items": { + "title": "Form subdivision", + "type": "string", + "minLength": 1 + } + }, + "medium_of_performance_for_music": { + "title": "Mediums of performance (music)", + "type": "array", + "minItems": 1, + "items": { + "title": "Medium of performance (music)", + "type": "string", + "minLength": 1 + } + }, + "arranged_statement_for_music": { + "title": "Arranged statement (music)", + "type": "string", + "minLength": 1 + }, + "key_for_music": { + "title": "Key (music)", + "type": "string", + "minLength": 1 + }, + "identifiedBy": { + "$ref": "https://bib.rero.ch/schemas/documents/document_identifier-v0.0.1.json#/identifier_contribution" } - ] + } }, "form": { "hide": true diff --git a/rero_ils/modules/documents/mappings/v7/documents/document-v0.0.1.json b/rero_ils/modules/documents/mappings/v7/documents/document-v0.0.1.json index bd2f65ab80..a6f65a5e9b 100644 --- a/rero_ils/modules/documents/mappings/v7/documents/document-v0.0.1.json +++ b/rero_ils/modules/documents/mappings/v7/documents/document-v0.0.1.json @@ -1929,6 +1929,61 @@ "work_access_point": { "type": "object", "properties": { + "creator": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "preferred_name": { + "type": "keyword" + }, + "date_of_birth": { + "type": "keyword" + }, + "date_of_death": { + "type": "keyword" + }, + "qualifier": { + "type": "keyword" + }, + "numeration": { + "type": "keyword" + }, + "fully_form_of_name": { + "type": "keyword" + }, + "subordinate_unit": { + "type": "keyword" + }, + "conference": { + "type": "boolean" + }, + "place": { + "type": "keyword" + }, + "numbering": { + "type": "keyword" + }, + "conference_date": { + "type": "keyword" + }, + "identifiedBy": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "value": { + "type": "keyword" + }, + "source": { + "type": "keyword" + } + } + } + } + }, "title": { "type": "text" }, diff --git a/rero_ils/modules/documents/views.py b/rero_ils/modules/documents/views.py index 81e55491e7..1227b1b31d 100644 --- a/rero_ils/modules/documents/views.py +++ b/rero_ils/modules/documents/views.py @@ -38,6 +38,7 @@ title_variant_format_text from ..collections.api import CollectionsSearch from ..entities.api import Entity +from ..entities.models import EntityType from ..holdings.models import HoldingNoteTypes from ..items.models import ItemCirculationAction from ..libraries.api import Library @@ -380,9 +381,8 @@ def work_access_point(work_access_point): wap = [] for work in work_access_point: agent_formatted = '' - if 'agent' in work: - agent = work['agent'] - if agent['type'] == 'bf:Person': + if agent := work.get('creator'): + if agent['type'] == EntityType.PERSON: # Person name = [] if 'preferred_name' in agent: @@ -410,7 +410,7 @@ def work_access_point(work_access_point): agent_formatted += agent['preferred_name'] + '. ' if 'subordinate_unit' in agent: for unit in agent['subordinate_unit']: - agent_formatted += unit + '. ' + agent_formatted += f'{unit}. ' if 'numbering' in agent or 'conference_date' in agent or \ 'place' in agent: conf = [ diff --git a/tests/ui/documents/test_documents_filter.py b/tests/ui/documents/test_documents_filter.py index bfe45c208d..0b22851f85 100644 --- a/tests/ui/documents/test_documents_filter.py +++ b/tests/ui/documents/test_documents_filter.py @@ -311,7 +311,7 @@ def test_work_access_point(): 'partNumber': 'part section designation' } ], - 'agent': { + 'creator': { 'type': 'bf:Person', 'qualifier': 'physicien', 'numeration': 'XX', @@ -337,7 +337,7 @@ def test_work_access_point(): 'partName': 'Title', 'partNumber': 'part designation' }], - 'agent': { + 'creator': { 'type': 'bf:Organisation', 'place': 'Lausanne', 'numbering': '4', @@ -359,7 +359,7 @@ def test_work_access_point(): ] }, { - 'agent': { + 'creator': { 'type': 'bf:Person', 'qualifier': 'pianiste', 'date_of_birth': '1980', @@ -373,7 +373,7 @@ def test_work_access_point(): 'partNumber': 'part number' } ], - 'agent': { + 'creator': { 'type': 'bf:Person', 'qualifier': 'pianiste' }, diff --git a/tests/unit/documents/test_documents_dojson.py b/tests/unit/documents/test_documents_dojson.py index b7aeded46a..2a8f193b0d 100644 --- a/tests/unit/documents/test_documents_dojson.py +++ b/tests/unit/documents/test_documents_dojson.py @@ -4141,7 +4141,7 @@ def test_marc21_to_part_of_without_link(): } ] assert data.get('work_access_point') == [{ - 'agent': { + 'creator': { 'preferred_name': 'Jacq, Christian', 'type': 'bf:Person' }, @@ -4303,13 +4303,13 @@ def test_marc21_to_part_of_with_multiple_800(): } ] assert data.get('work_access_point') == [{ - 'agent': { + 'creator': { 'preferred_name': 'Mirallés, Ana', 'type': 'bf:Person' }, 'title': 'A la recherche de la Licorne' }, { - 'agent': { + 'creator': { 'preferred_name': 'Ruiz, Emilio', 'type': 'bf:Person' }, diff --git a/tests/unit/documents/test_documents_dojson_slsp.py b/tests/unit/documents/test_documents_dojson_slsp.py index b9f4cbb2f5..69bab0228e 100644 --- a/tests/unit/documents/test_documents_dojson_slsp.py +++ b/tests/unit/documents/test_documents_dojson_slsp.py @@ -97,7 +97,7 @@ def test_marc21_to_contribution(mock_get): 'role': ['aut'] }] assert data.get('work_access_point') == [{ - 'agent': { + 'creator': { 'date_of_birth': '1954', 'numeration': 'II', 'preferred_name': 'Jean-Paul', @@ -106,7 +106,7 @@ def test_marc21_to_contribution(mock_get): }, 'title': 'Treaties, etc.' }, { - 'agent': { + 'creator': { 'preferred_name': 'Santamaría, Germán', 'type': 'bf:Person' }, @@ -138,7 +138,7 @@ def test_marc21_to_contribution(mock_get): marc21json = create_record(marc21xml) data = marc21.do(marc21json) assert data.get('work_access_point') == [{ - 'agent': { + 'creator': { 'date_of_birth': '1919', 'date_of_death': '1990', 'preferred_name': 'Santamaría, Germán', @@ -146,7 +146,7 @@ def test_marc21_to_contribution(mock_get): }, 'title': 'No morirás' }, { - 'agent': { + 'creator': { 'date_of_birth': '1919', 'preferred_name': 'Santamaría, Germán', 'type': 'bf:Person'