From b3f8260f28bd4aa87adf934eeedc1785d72cabde Mon Sep 17 00:00:00 2001 From: Pierre Choffet Date: Thu, 19 Mar 2026 22:26:05 -0400 Subject: [PATCH] First release of fully working import process --- README | 198 ++ banq2wd.sh | 176 +- export_strings.xslt | 119 +- filter_marcxml.xslt | 69 +- fix_label_description_duplicates.xslt | 75 + marc_banq2wdef.xslt | 2575 +++++++++++++++++++++++++ matches.xml | 2442 +++++++++++++++++++++++ matches_occupations.xml | 207 ++ matches_places.xml | 1054 ++++++++++ matches_roles.xml | 11 + merge_fixes.xslt | 191 -- merge_marcxml.xslt | 94 +- property_with_no_qids.xslt | 47 + 13 files changed, 7022 insertions(+), 236 deletions(-) create mode 100644 fix_label_description_duplicates.xslt create mode 100644 marc_banq2wdef.xslt create mode 100644 matches.xml create mode 100644 matches_occupations.xml create mode 100644 matches_places.xml create mode 100644 matches_roles.xml delete mode 100644 merge_fixes.xslt create mode 100644 property_with_no_qids.xslt diff --git a/README b/README index 19ff4d9..0ee7b31 100644 --- a/README +++ b/README @@ -5,6 +5,12 @@ Bibliothèque et Archives nationales du Québec (BAnQ) et les publier dans Wikid L’environnement d’utilisation nécessite la disponibilité des outils suivants : - Bash - https://www.gnu.org/software/bash/ Interpréteur des scripts + + - jq - https://jqlang.org/ + Interpréteur JSON utilisé au moment de l’envoi des données dans Wikidata + + - wikibase-cli - https://github.com/maxlath/wikibase-cli + Envoi des données dans Wikidata - Xmlstarlet - http://xmlstar.sourceforge.net/ Processeur XSD et XSLT @@ -15,6 +21,10 @@ Les outils disponibles sont les suivants : Liste les zones des notices bibliographiques faisant référence à des notices d’autorité absentes du fichier MARCXML. + - fix_label_description_duplicates.xslt + Corrige les éléments ayant des labels et descriptions similaires, ce qui est + interdit dans Wikidata. + - fix_marcxml.xslt Corrige les erreurs connues des fichiers MARCXML exportés de la base de données de BAnQ pour qu’ils soient valides au regard du schéma officiel. @@ -30,5 +40,193 @@ Les outils disponibles sont les suivants : Exporte les chaînes de titres et sous titres pour les entrées bibliographiques vers un fichier TSV. + - marc_banq2wdef.xslt + Feuille de style pour convertir le fichier MARC contenant les données de + BAnQ vers un fichier wdef. + + - matches_occupations.xml, matches_places.xml, matches_roles.xml + Liste des équivalents connus dans Wikidata, maintenus manuellement. + - merge_fixes.xslt Importe le fichier TSV contenant les titres et sous-titres une fois corrigé. + + +Le dépôt dépend de deux sous-modules hébergés sur un serveur tiers. Ils doivent +être téléchargés via la commande suivante : + + $ git submodule update + + +Exemple d’usage : + +Le traitement est effectué par des fichiers XSLT, mais ils s’accompagnent d’un +script Bash pour des raisons de convivialité. Ils sont conçus pour être exécutés +par étapes successives, chacune reprenant la sortie de la précédente, ou une +modification manuelle effectuée par un humain. + +Les fichiers source sont les exports au format MARCXML tels qu’extraits de la +base de données interne de l’institution. Dans notre cas, l’export a produit +quatre fichiers nommés EST_AUT.xml, EST_BIB.xml, ID_AUT.xml et ID_BIB.xml. + +0. La première étape consiste en la fusion de ces fichiers source. + + $ ./banq2wd.sh --merge-marcxml EST_AUT.xml EST_BIB.xml ID_AUT.xml ID_BIB.xml > 1-merged.xml + +Les entrées présentes en plusieurs exemplaires sont dédoublonnées, la dernière +occurrence étant la seule conservée. Le résultat est écrit dans un fichier nommé +1-merged.xml. + + +1. Ensuite, le fichier est validé et les données non voulues ou invalides sont +filtrées. La liste des modifications appliquées est résumée en en-tête du +fichier filter_marcxml.xslt. + + $ ./banq2wd.sh --filter-marcxml 1-merged.xml > 2-filtered.xml 2>/tmp/filter.log + +La sortie se fait dans le fichier 2-filtered.xml et un journal d’exécution est +généré dans le fichier /tmp/filter.log dans le but d’être consulté par un humain. +Les traitements concernant les notices filtrées y sont détaillés ce qui permet +une validation ou un correctif des données sources avant de continuer aux étapes +suivantes. + + +2. L’étape suivante regroupe la majeure partie du travail devant être conduit +par un humain. Elle consiste à extraire les données textuelles qui ne peuvent +pas être nettoyées automatiquement par une machine dans le contexte d’un import +dans Wikidata. + +Pour assurer une continuité dans les modifications successives réalisées par des +humains, le script fait appel à des fichiers externes au format XML. Ceux-ci +conservent l’état des changements à appliquer, réplicables d’un import à l’autre. +Les modifications à ces fichiers peuvent être effectuées directement via un +logiciel de type bloc-notes mais d’autres outils sont fournis pour les gérer +plus facilement. + +Pour les données bibliographiques, les données sont enregistrées dans le fichier +records_fix.xml . L’extraction des titres et des données afférentes en tenant +compte des modifications déjà connues se fait via la commande suivante : + + $ xmlstarlet tr export_strings.xslt -s strings-fix-path=records_fix.xml -s target=bibliographic 2-filtered.xml > /tmp/titres.tsv 2>/tmp/titres.log + +Le fichier généré est un export des titres présent dans le fichier 2-filtered.xml, +incluant les modifications apportées précédemment via le fichier records_fix.xml. +Un journal du traitement est écrit dans le fichier /tmp/titres.log. + +Les modifications dans le fichier titres.tsv nouvellement généré devrait être +fait par une personne qui connaisse les données de BAnQ et les règles de graphie +pour les titres d’œuvres en vigueur sur Wikipédia. +Une fois l’édition terminée, les correctifs sur les titres peuvent être +réintégrés dans le fichier records_fix.xml via la commande suivante : + + $ ./banq2wd.sh --merge-fixes records_fix.xml /tmp/titres.tsv + + +3. L’import vers Wikidata requiert que les données soient format dont la +structure est similaire à l’organisation utilisée dans Wikidata. + +Les entités secondaires telles que les occupations ou les lieux ne sont pas +créés automatiquement au moment de l’import. Ils doivent donc être réconciliés +manuellement avec les entrées déjà existantes. Ils sont répertoriés et peuvent +être maintenus via les fichiers matches_occupations.xml, matches_places.xml et +matches_roles.xml. + +La conversion se fait avec la commande suivante : + + $ xmlstarlet tr marc_banq2wdef.xslt -s strings-fix-path=records_fix.xml -s occupations-matches-path=matches_occupations.xml -s places-matches-path=matches_places.xml -s roles-matches-path=matches_roles.xml -s records-matches-path=matches.xml 2-filtered.xml > 3-wdef.xml 2>/tmp/wdef.log + +Le processus génère un journal d’exécution répertoriant dans /tmp/wdef.log le +travail effectué. Il peut être lu en vue de vérifier la conversion et modifier +les données source au besoin. + + +4. Recherche et enregistrement de nouveaux équivalents + +Le fichier matches.xml répertorie les identifiants connus pour les entrées +d’autorité. Sa maintenance se fait de manière semi-automatisée via la commande +suivante : + + $ ./banq2wd.sh --check-matches 3-wdef.xml matches.xml > matches_new.xml + +En fonction des identifiants uniques répertoriés pour les différentes entrées, +le script va chercher sur Wikidata les entrées déjà existantes. Le travail +pourrait nécessiter d’être complété par un être humain. + +Si de nouveaux éléments préexistants sur Wikipédia ont été trouvés, il est +nécessaire de supprimer le fichier 3-wdef.xml et de procéder à une nouvelle +génération. On retourne alors à l’étape 3 en remplaçant le paramètre +« records-matches-path » par l’emplacement du nouveau fichier matches_new.xml + + +5. Une fois le fichier wdef validé, il doit être confronté aux propriétés et +valeurs connues dans les éléments déjà existants dans Wikidata. Ces données +doivent être supprimées dans le fichier local avant l’import. Nous utilisons +pour cela un script pré-existant gérant l’opération de manière automatique. + + $ mkdir cache + $ ./merge_wd_properties.sh 4-wdef-matches.xml cache/ > 5-wdef-reduced.xml 2>/tmp/reduce.log + + +6. Déduplication des labels et descriptions + +Wikidata n’autorise pas deux éléments avec un label et une description communs. +Le projet contient un schema pour dédupliquer les éléments concernés en ajoutant +l’identifiant BAnQ à la description. Il s’invoque de la manière suivante : + + $ xmlstarlet tr fix_label_description_duplicates.xslt 5-wdef-reduced.xml > 6-wdef-dedup.xml + + +8. Le fichier est converti vers sa version canonique. Le contenu est le même, +seule la structure est purgée des entrées inutiles : + + $ xmlstarlet tr wdef_tools/xslts/canonicalize.xslt 6-wdef-dedup.xml > 7-wdef-canonicalized.xml + + +7. Dernière étape avant l’import, il s’agit de vérifier que le fichier utilisé +pour l’opération est bien valide. Cette validation se fait au moyen d’un schéma +XSD fourni dans le dépôt wdef_schemas : + + $ xmlstarlet val wdef_schemas/wdef.xsd 7-wdef-canonicalized.xml + + +9. Cette dernière étape couvre l’import effectif vers Wikidata. L’opération se +fait au moyen de « wikibase-cli ». Dans la mesure où il traite des opérations en +écriture, la création d’un compte utilisateur sur Wikidata est obligatoire. Par +la suite, le lien entre le compte et l’application est détaillé dans la +documentation de l’outil à cette adresse : +https://github.com/maxlath/wikibase-cli/blob/main/docs/write_operations.md . +Il convient aussi d’adjoindre au compte le statut de bot, tel que décrit à cette +adresse : https://www.wikidata.org/wiki/Wikidata:Bots . La configuration du +statut de bot se fait enfin dans wikibase-cli via la commande suivante : + + $ wd config bot true + +Le script d’import qui contrôle wikibase-cli est maintenu indépendamment et se +trouve dans le dépôt wdef_tools. Plutôt que de tout importer en une étape, il +est conçu de manière à fragmenter les étapes à réaliser pour conserver un +historique de contribution aussi granulaire que possible sur les éléments Wikidata +modifiés. Il fonctionne donc de manière générationnelle à partir d’un fichier +wdef : à chaque étape, la première valeur importable est extraite, importée dans +Wikidata et un nouveau fichier wdef complet mais sans cette donnée est généré. +Le but de ce fonctionnement est de pouvoir reprendre à tout moment l’import à +partir de la dernière génération en cas de nécessité de couper temporairement +l’opération. + +S’il est validé que le fichier obtenu à l’étape précédente correspond +parfaitement aux besoins de l’import, il peut être importé dans Wikidata via la +commande suivante : + + $ wdef_tools/scripts/import.sh 7-wdef-canonicalized.xml ids 2>>errors + +Le premier paramètre correspond au fichier wdef à importer. Dans le fichier +choisi en second paramètre seront écrits les identifiants des éléments tels que +renseignés dans le fichier wdef ainsi que leurs QIDs équivalents nouvellement +créés dans Wikidata. Il pourra par exemple être utilisé pour renseigner les +identifiants Wikidata directement dans la base de données de BAnQ. Un fichier +errors contient la sortie stderr, journal des opérations effectuées. Il débute +notamment par une référence du répertoire temporaire utilisé pour les fichiers +wdef correspondants aux différentes générations de l’import. + +Le script est écrit de manière à s’arrêter par lui-même s’il détecte un +comportement anormal du fichier source ou de Wikidata, mais il reste conseillé +de surveiller de loin ses contributions dans Wikidata pour s’assurer qu’il +effectue bien les modifications attendues. diff --git a/banq2wd.sh b/banq2wd.sh index 99bfd27..7877fad 100755 --- a/banq2wd.sh +++ b/banq2wd.sh @@ -1,5 +1,20 @@ #!/bin/bash +# bash2wd.sh - Wrapper to banq_wikidata xslt stylesheets collection. +# Copyright (C) 2025, 2026 Pierre Choffet +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of version 3 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + #set -x # Trace commands, for development purpose only set -Ceuo pipefail @@ -11,13 +26,17 @@ declare -ar longoptions=('help') declare -ar optdescriptions=('afficher l’aide et quitter') declare -ar script_dir="$(dirname -- "${BASH_SOURCE[0]}")/" -declare -ar commands=('merge-marcxml' 'merge-fixes') -declare -ar commandsdescriptions=('fusionner différents fichiers MARCXML' 'récupérer les nettoyages manuels sur les titres d’œuvres') +declare -ar commands=('merge-marcxml' 'filter-marcxml' 'merge-fixes' 'check-matches' 'apply-matches') +declare -ar commandsdescriptions=('fusionner différents fichiers MARCXML' 'filtre les données non voulues ou invalides du fichier MARCXML' 'récupérer les nettoyages manuels sur les titres d’œuvres' 'rechercher les identifiants des entrées équivalentes sur Wikidata' 'remplace les identifiants des éléments connus sur Wikdata dans un fichier WDEF') # Runtime parameters declare command declare -a merge_filepaths +# Hardcoded parameters +declare -r wdef_tools_path='wdef_tools' +declare -r wikidata_sparql_endpoint='https://query.wikidata.org/bigdata/namespace/wdq/sparql' + # Workaround libxslt limitation where string parameters with quote and # double-quote characters are illegal. Double-quotes will be replaced by string # that will be fixed in xslt. @@ -70,6 +89,12 @@ function getParams() { shift done + break + elif [ "${command}" == 'filter-marcxml' ] + then + source_filepath="${1}" + shift + break elif [ "${command}" == 'merge-fixes' ] then @@ -77,6 +102,20 @@ function getParams() { shift merge_filepath="${1}" + break + elif [ "${command}" == 'check-matches' ] + then + wdef_filepath="${1}" + shift + matches_filepath="${1}" + + break + elif [ "${command}" == 'apply-matches' ] + then + wdef_filepath="${1}" + shift + matches_filepath="${1}" + break else echo 'No valid command.' @@ -91,10 +130,22 @@ function getParams() { command='merge-marcxml' shift ;; + --filter-marcxml) + command='filter-marcxml' + shift + ;; --merge-fixes) command='merge-fixes' shift ;; + --check-matches) + command='check-matches' + shift + ;; + --apply-matches) + command='apply-matches' + shift + ;; # *) # usage # exit 1 @@ -143,12 +194,28 @@ mergeMarcXML() { local tmp_path="$(mktemp)" xmlstarlet tr "${script_dir}merge_marcxml.xslt" -s "marcxml-path=${path}" "${old_tmp_path}" >| "${tmp_path}" rm "${old_tmp_path}" + + if [ ! -s "${tmp_path}" ] + then + echo "Le fichier récupéré après la fusion est vide. Interruption." >&2 + exit 1 + fi + old_tmp_path="${tmp_path}" shift done echo "${tmp_path}" } +filterMarcXML() { + local -r source_path="${1}" + shift + + local -r output_path="$(mktemp)" + xmlstarlet tr filter_marcxml.xslt "${source_path}" >| "${output_path}" 2>&2 + + echo "${output_path}" +} mergeFixes() { local -r fixes_path="${1}" shift @@ -208,6 +275,96 @@ mergeFixes() { echo "${fixes_path_tmp}" } +# Return a path to a copy of the given matches.xml updated with new matches +checkMatchesProperty() { + local -r wdef_path="${1}" + shift + local -r matches_path="${1}" + shift + local -r pid="${1}" + shift + + local -r new_matches_path="$(mktemp)" + cp "${matches_path}" "${new_matches_path}" + + # Get IDs of entries with given property and no QID + missing_qids_with_property="$(mktemp)" + xmlstarlet tr property_with_no_qids.xslt -s "matches-path=${matches_path}" \ + -s "pid=${pid}" "${wdef_path}" >| "${missing_qids_with_property}" + + # Query all ISNI to Wikidata + while IFS= read -r id + do + qid_found=$(${wdef_tools_path}/scripts/get_qid_from_property.sh ${wdef_path} ${id} ${pid} 2>/dev/null) + + # Update matching entries in matches file + if [ "${qid_found}" != '' ] + then + xmlstarlet ed --inplace -s /matches -t elem -n match \ + --var match '$prev' \ + -i '$match' -t attr -n id -v "${id}" \ + -i '$match' -t attr -n qid -v "${qid_found}" \ + "${new_matches_path}" + fi + + sleep 2 + done < "${missing_qids_with_property}" + + # Cleanup and return new matches file path + rm "${missing_qids_with_property}" + echo "${new_matches_path}" +} + +checkMatches() { + local -r wdef_path="${1}" + shift + local -r matches_path="${1}" + shift + + # Get matching entries from Wikidata using various IDs + local -r matches_isni_path=$(checkMatchesProperty "${wdef_path}" "${matches_path}" P213) + + local -r matches_isbn10_path=$(checkMatchesProperty "${wdef_path}" "${matches_isni_path}" P957) + rm "${matches_isni_path}" + + local -r matches_isbn13_path=$(checkMatchesProperty "${wdef_path}" "${matches_isbn10_path}" P212) + rm "${matches_isbn10_path}" + + local -r matches_loc_path=$(checkMatchesProperty "${wdef_path}" "${matches_isbn13_path}" P244) + rm "${matches_isbn13_path}" + + local -r matches_banq_path=$(checkMatchesProperty "${wdef_path}" "${matches_loc_path}" P3280) + rm "${matches_loc_path}" + + echo "${matches_banq_path}" +} + +applyMatches() { + local -r wdef_path="${1}" + shift + local -r matches_path="${1}" + shift + + # Get all known matches + local -r ids_path=$(mktemp) + xmlstarlet sel -t -m '/matches/match' -v '@id' -o ' ' -v '@qid' -n "${matches_path}" >| "${ids_path}" + + # Loop on a copy of wdef file + local wdef_tmp_path="$(mktemp)" + cp "${wdef_path}" "${wdef_tmp_path}" + while IFS=$'\t' read -r id qid + do + new_wdef_path="$(mktemp)" + xmlstarlet tr ${wdef_tools_path}/xslts/replace_id.xslt -s "old-id=${id}" -s "new-id=${qid}" "${wdef_tmp_path}" >| "${new_wdef_path}" + rm "${wdef_tmp_path}" + wdef_tmp_path="${new_wdef_path}" + done <"${ids_path}" + + rm "${ids_path}" + + echo "${wdef_tmp_path}" +} + checkEnv getParams "$@" @@ -217,9 +374,24 @@ then merged_path="$(mergeMarcXML "${merge_filepaths[@]}")" cat "${merged_path}" rm "${merged_path}" +elif [ "${command}" == 'filter-marcxml' ] +then + filtered_path=$(filterMarcXML "${source_filepath}") + cat "${filtered_path}" + rm "${filtered_path}" elif [ "${command}" == 'merge-fixes' ] then merged_path=$(mergeFixes "${fixes_filepath}" "${merge_filepath}") cat "${merged_path}" rm "${merged_path}" +elif [ "${command}" == 'check-matches' ] +then + matches_path=$(checkMatches "${wdef_filepath}" "${matches_filepath}") + cat "${matches_path}" + rm "${matches_path}" +elif [ "${command}" == 'apply-matches' ] +then + new_wdef_path=$(applyMatches "${wdef_filepath}" "${matches_filepath}") + cat "${new_wdef_path}" + rm "${new_wdef_path}" fi diff --git a/export_strings.xslt b/export_strings.xslt index c3a7e28..10f72a5 100644 --- a/export_strings.xslt +++ b/export_strings.xslt @@ -37,6 +37,10 @@ + + + + @@ -53,9 +57,13 @@ + ID Nom original Langue du nom Nom corrigé + + ID Nom original Nom corrigé + @@ -170,20 +178,26 @@ - + " " " + + " " " " - " + " - + Un correctif pour la notice de l’entrée - existe, mais le titre dans la notice a été modifié depuis. La valeur de correction est ignorée. + existe, mais le titre dans la notice a été modifié depuis( + + → + + ). La valeur de correction est ignorée. " @@ -378,19 +392,106 @@ - - Pas encore implémenté + + - + + + + " + + " " + + " " + + " + + + + Un correctif pour la notice de l’entrée + + existe, mais le nom dans la notice a été modifié depuis. La valeur de correction est ignorée. + + " + + " " + + " + + + + + + + " + + " " + + " + + + + + - Corporate--> - + Pas encore implémenté + " + + " " diff --git a/filter_marcxml.xslt b/filter_marcxml.xslt index df6350f..8c0c6bf 100644 --- a/filter_marcxml.xslt +++ b/filter_marcxml.xslt @@ -3,7 +3,7 @@ xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> @@ -33,27 +34,17 @@ - - + - - + - - + - - - + @@ -81,6 +72,9 @@ + + + @@ -185,13 +179,30 @@ - + + yes + + + + +  : les données n’identifient pas le type d’œuvre comme étant un catalogue ou une estampe. + + no + + + + + + + + yes -  : l’entrée n’identifie pas le type d’œuvre comme étant un catalogue ou une estampe. +  : il s’agit d’œuvres regroupées, la notice est ignorée. no @@ -218,16 +229,16 @@ + - + + - - @@ -243,6 +254,9 @@ no + + no + yes @@ -259,9 +273,10 @@ - + + - + @@ -293,9 +308,10 @@ - + + - + @@ -323,9 +339,10 @@ - + + - + diff --git a/fix_label_description_duplicates.xslt b/fix_label_description_duplicates.xslt new file mode 100644 index 0000000..47d9bfc --- /dev/null +++ b/fix_label_description_duplicates.xslt @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + false + + + + + false + + + + + + + + + + + + + + + (ID BAnQ : + + ) + + + + + diff --git a/marc_banq2wdef.xslt b/marc_banq2wdef.xslt new file mode 100644 index 0000000..21c6f3e --- /dev/null +++ b/marc_banq2wdef.xslt @@ -0,0 +1,2575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : l’entrée est ignorée car l’œuvre ne s’identifie ni comme une estampe ni comme un catalogue d’exposition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  : le catalogue a déjà un équivalent connu sur Wikidata, l’édition ne sera pas créée. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fr + + + + + + + + fr + + artiste + + + + + + + + + + + P31 + + + + + + + + + Q5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rda + + + rcaa2 + + + + + + + + + + print + + + + catalog + + + + + : impossible de déterminer le type d’œuvre. La conversion est interrompue pour éviter de générer un fichier non conforme. + + + + + + + + + + + + + + + + + + + + + + + : impossible de déterminer le prénom de la personne physique + + + + + + + + + + + + + + + + + + + + + + + : impossible de déterminer le nom de famille de la personne physique + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + édition d’un catalogue d’exposition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fr + + + + + estampe + + + + catalogue d’exposition + + + + + Type d’œuvre invalide + + + + + + + + + + anonyme + + + + + + + + + + + + + + + + + + + + + + P31 + + + + + + + + + + + + + Q11060274 + + + + Q47461344 + + + + + Type d’œuvre invalide + + + + + + + + + + + + + + + + + + + + + P31 + + + + + + + + + + Q3331189 + + + + + + + + + + + + + + + + + + + + + + + + P50 + + + + + + + + + + + + + + + + + + + + + + + + + + + : impossible de trouver la notice du créateur en + + + 100 : + + + + 110 : + + + + 111 : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P170 + + + + + + + + + + + + + + + + + + + + + + + + + + + : impossible de trouver la notice du créateur en + + + 100 : + + + + 110 : + + + + 111 : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P170 + + + + + + + + + + + + + + + + + + + + + + + + + + + : impossible de trouver la notice du créateur en + + + 100 : + + + + 110 : + + + + 111 : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 9 + + + 10 + + + 11 + + + + +  : date de publication invalide : «  + +  » + + + + + + + + + + + + + P577 + + + + + + + + + + + + + + + gregorian + + + + + + -00-00 + + + -00 + + T00:00:00Z + + + + + + + + + + + + + + + + + + + + + + + + + + P767 + + + + + + + + + + + + + + + + + + + + + Atelier Circulaire + + + + + + + + + + + + + + + + + : impossible de trouver la notice du créateur en + + + 700 : + + + + 710 : + + + + 711 : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P195 + + + + + + + + + + Q39628 + + + + + + + + + + + + + + + + + P217 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Q39628 + + + + + + + + + + + + + + + + + + + + P957 + + + P212 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  : l’ISBN est ignoré : «  + +  » + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  : l’éditeur «  + + » n’a pas d’équivalent connu dans Wikidata + + + + + + + + + + + + + + + + + + + + + + +  : l’éditeur «  + + » n’a pas d’équivalent connu dans Wikidata + + + + + + + + + + + + + + + + PUBLISHER 710 + + + PUBLISHER 711 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  : pas d’équivalent répertorié pour le lieu suivant : «  + +  » + + + + + + + + + + + P291 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P629 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P1476 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P1680 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + P1823 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P19 + + + + + + + + + + + + + + + + + + + +  : pas d’équivalent répertorié pour le lieu suivant : «  + +  » + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P20 + + + + + + + + + + + + + + + + + + + +  : pas d’équivalent répertorié pour le lieu suivant : «  + +  » + + + + + + + + + + + + + + + + + + + + + + + + P106 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P213 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P244 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P569 + + + + + + + + + + + + 9 + gregorian + + + + -00-00T00:00:00Z + + + + + + + +  : pas d’année de naissance extraite. + + + + + + + + + + + + + + + + + + + + + 9 + 10 + 11 + + + +  : date de mort extraite invalide. + + + + + + + + + + + + + + + + + + + + + + + + + + + P570 + + + + + + + + + + + + + gregorian + + + + + + + + +  : pas de date de mort extraite. + + + + + + + + + + + + + + + + + + P3280 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P6379 + + + + + + + + + Q39628 + + + + + + + + + + + + + + + + + + + fr + + + personne morale (corporate) + + + + + + + + + + + + + + + + + + fr + + + personne morale (meeting) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Type d’entrée inconnu : + + + + + + + + + + + + + + + + + + + + + + + + + ? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : date de publication extraite invalide ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : année de publication extraite invalide ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  : impossible de déterminer le prénom/nom ou le pseudonyme de cette personne. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  : impossible de trouver la notice bibliographique + + + false + + + + +  : impossible de trouver la notice d’autorité + + + false + + + + + + + + + + + + + + + + + + + + + + + + + : le créateur + + ( + + - + + ) a moins de 15 ans au moment de la publication de l’œuvre ( + + ). + + false + + + + + + : le créateur + + ( + + - + + ) est mort depuis plus de 2 ans au moment de la publication de l’œuvre ( + + ). + + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/matches.xml b/matches.xml new file mode 100644 index 0000000..0cc61e4 --- /dev/null +++ b/matches.xml @@ -0,0 +1,2442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Musée McCord d'histoire canadienne, + diff --git a/matches_occupations.xml b/matches_occupations.xml new file mode 100644 index 0000000..8d54afd --- /dev/null +++ b/matches_occupations.xml @@ -0,0 +1,207 @@ + + + Acteurs + Administrateurs coloniaux + Affichistes + Agents de développement + Animateurs (Cinéma) + Animateurs de radio + Animateurs de télévision + Anthropologues + Aquafortistes + Aquarellistes + Archéologues + Architectes + Archivistes + Artiste + Artistes + Artistes$Professeurs d'universités + Artistes du livre + Artistes enseignants + Artsites + Avocats + Batteurs (Instrumentistes) + Bibliothécaires + Bijoutiers + Calligraphes + Cardinaux + Caricaturistes + Cartographes + Céramistes + Chanoines + Chanteurs + Chargés de cours + Chefs d'entreprises + Chercheurs + Chorégraphes + Cinéastes + Commerçants + Commissaire d'exposition + Commissaires d'exposition + Commissaires d'expositions + compositeurs + Compositeurs + Conférencières + Conférenciers + Conservateurs de musée + Conservateurs de musée d'art + Conservatrices de musée + Conteurs + Couturiers (Créateurs de mode) + Créateurs de costumes + Critique d'art + Critiques + Critiques d'art + Danseurs + Danseuses + Décorateurs de cinéma + Designers + Dessinateur + Dessinateurs + Dessinateurs de bandes dessinées + Directeurs artistiques + Directeurs d'école secondaire + Directeurs de musée + Directeurs de musée d'art + Doctorants + Dramaturges + Ébénistes + Économistes + Écrivaines + Écrivains + Écrivains critiques d'art + Écrivains pour la jeunesse + Éditeurs + Éditrices + Éducateurs spécialisés + Éducatrices + Éducatrices spécialisées + Enseignantes + Enseignants + Essayistes + Ethnologues + Étudiants de deuxième cycle + Explorateurs + Femmes artistes + Femmes critiques d'art + Femmes journalistes + Femmes peintres + Femmes photographes + Fonctionnaires + fre + Généraux + Géographes + Géomètres + Graphistes + Graveurs + Graveurs d'estampes + Graveuses + Guitaristes + Historiennes + Historiennes d'art + Historiens + Historiens d'art + Historiens de l'art + Historiens des sciences + Hommes d'affaires + Hommes d'État + Hommes politiques + Humoristes + illustrateurs + Illustrateurs + Imprimeurs + Imprimeurs sérigraphes + Ingénieurs + Journaliste + Journalistes + Journalistes scientifiques + Libraires + Lithographes + Maîtres de conférences + Marchandes d'art + Marchandes d'œuvres d'art + Marchands d'œuvres d'art + Marinistes + masculin + Miniaturistes + Muralistes + Muséologues + Musiciens + Mycologues + Naturalistes + Nouvellistes + Officiers + Officiers de marine + Orfèvres + Paroliers + Pastellistes + Paysagistes + Pédopsychiatres + Peintre + Peintres + Peintres-graveurs d'estampes + Performers + Performeuses (Artistes) + Pharmaciens + Philanthropes + Philosophes + Photographe + Photographes + Pianistes + Planificateurs d'événements + Poètes + Poètes québécois + Politologues + Prêtres + Producteurs et metteurs en scène de théâtre + Producteurs et réalisateurs de cinéma + Producteurs et réalisateurs de radio + Producteurs et réalisateurs de télévision + Professeure d'université + Professeur (Enseignement supérieur) + Professeurs + Professeurs adjoints + Professeurs agrégés + Professeurs d'art + Professeurs de cégep + Professeurs de chant + Professeurs de littérature + Professeurs de musique + Professeurs de philosophie + Professeurs d'histoire + Professeurs d'université + Professeurs d'universités + Professeurs émérites + Professeurs (Enseignement collégial) + Professeurs (Enseignement supéieur) + Professeurs (Enseignement supérieur) + Psychanalystes + Psychiatres + Rappeurs + Réalisateurs de cinéma + Restaurateurs (Art) + Romanciers + Romanciers québécois + Scénaristes + Scénaristes de bandes dessinées + Sculpteurs + Sculpteurs sur bois + Sculptrices + Sérigraphiste + Sérigraphistes + Sociologues + Soldats + Sopranos (Chanteurs) + Spécialistes de l'information + Théologiens + Tisserands + Traducteurs + Traductrices + Travailleurs sociaux + Typographes + Urbanistes + Verriers d'art + Vétérinaires + Vidéastes + Vitraillistes + diff --git a/matches_places.xml b/matches_places.xml new file mode 100644 index 0000000..c3f79c1 --- /dev/null +++ b/matches_places.xml @@ -0,0 +1,1054 @@ + + + Aachen [Allemagne] [etc.] : + Aberdeenshire (Écosse) + Abitibi (Québec : Région) + Acton Vale (Québec) + Aix-en-Provence (France) + Albany (N.Y.) + Albuquerque : + Albuquerque (N.-M.) + Alexandrie (Égypte) + Alger (Algérie) + Algérie + Allemagne + [Alma : + Alma : + [Alma, Québec] : + [Alma, Québec], + Alma (Québec) + Alma, Québec + Alma, Québec : + Alma (Québec) : Toronto (Ontario) : + Amos (Québec) + Amos (Québec) : + [Amsterdam : + Amsterdam (Pays-Bas) + Angers (France) + Angers (France) : + Angleterre + Angola + [Annecy (France) : + Annecy (France) + A Paris : + [Arenys de Munt, Espagne] : + Argentine + [Arles, France] : + Arthabaska (Québec) + Arvida (Québec) + à Savona : + Asbestos (Québec) + Athènes (Grèce) + Athlone (Irlande) + [Augsburg : + Augsburg (Allemagne) + Australie + Autriche + Aylesbury (Angleterre) + Baden (Switzerland) : + Baie-Comeau (Québec) + Baie-Johan-Beetz (Québec) + [Baie-Saint-Paul] : + Baie-Saint-Paul : + Baie-Saint-Paul (Québec) + Baie-Saint-Paul (Québec) : + Baie-Saint-Paul, Région de (Québec) + Bâle : + Barbade + [Barcelona] : + Barcelona : + Barcelone : + Barcelone (Espagne) + Barranquilla (Atlántico, Colombie) + Barrie (Ontario) : + [Basel : + Basel [Schweiz] : + Bayeux (France) + Beauce-Sartigan (Québec) + Belfast : + [Belgique] : + Belgique + Belgrade (Serbie) + Bellefeuille (Saint-Jérôme, Québec) + Belleville (Ont.) + Beograd [etc.] : + Berlin : + Berlin (Allemagne) + Berlin, Germany : + Berne (Suisse) + Berthierville (Québec) + Bielefeld, Allemagne : + Bielefeld, Germany : + Big Indian (N.Y.) + [Bilbao : + Birmingham (Angleterre) + Black Lake (Thetford Mines, Québec) + Boischatel (Québec) + Bologne (Italie) + [Bonaventure], + Bonaventure (Québec) + Boucherville : + [Boucherville, Québec] : + Bourges (France) + Brantford (Ont.) + Brantford (Ont.) : + Brantford, Ont. : + Brantford, Ontario Canada : + Brest (France) + Bristol ; + Bristol (Angleterre) + Brno (République tchèque) + Bromptonville (Sherbrooke, Québec) + Bronx (New York, N.Y.) + [Brooklyn, N.Y.] ; + Brooklyn, N.Y. ; + Brooks (Alb.) + Brossard : + Bruges (Belgique) + Brurnaby, C.-B. + [Bruxelles] : + Bruxelles : + [Bruxelles, Belgique] : + Bruxelles (Belgique) + Bruxelles [Belgique] : + Bucarest (Roumanie) + Buch, Pays de (France) + Budapest (Hongrie) + Buenos Aires (Argentine) + Burlington (Verm.) : + Burnaby, B.C. : + Burnaby, C.-B. + Busigny [France] : + Caen (France) + [Calgary] : + Calgary : + Calgary (Alb.) + [Calixa-Lavallée] : + [Canada : + [Canada] : + Canada + [Candiac] : + [Candiac], + Candiac, France + Canoe, Lac (Nipissing, Ont.) + Canton (Chine) + Cantons-de-l'Est (Québec) + Cantons-de-l'Est, Québec + Cap-Chat (Québec) + Cap-de-la-Madeleine (Trois-Rivières, Québec) + Cape Dorset : + [Cap-Rouge] : + Caracas (Venezuela) + Caribou (Maine) + Carignan : + Carleton : + Caroline du Nord + Carp, Ontario, Canada : + Casablanca (Maroc) + Catalogne (Espagne) + Centre-Saint-Simon (N.-B.) + Chambly (Québec) + Chapleau (Ont.) + Charlesbourg : + Charlevoix (Québec) + [Charlottetown] : + Charlottetown (Î.-P.-É.) + [Chartres] : + Chibougamau : + Chibougamau (Québec) + Chicago : + Chicago (États-Unis) + Chicago (Ill.) + [Chicoutimi : + [Chicoutimi] : + Chicoutimi : + Chicoutimi-Nord (Saguenay, Québec) + Chicoutimi (Québec) + Chicoutimi, Québec + Chicoutimi (Saguenay, Québec) + Chine + Cincinnati (Ohio) + Ciudad de Mexico : + Claremont (Ont.) + Coaticook (Québec) + Coleraine (Irlande du Nord) + Cologne, Allemagne : + Colombie + Colombie-Britanique : + Colombie-Britannique + Colombie-Britannique : + Constance (Allemagne) + Cookshire (Cookshire-Eaton, Québec) + Copenhague (Danemark) + Córdoba + Cork (Irlande) + Cowansvile (Québec) + Cowansville (Québec) + [Cracovie] : + Culiacán (Sinaloa, Mexique) + Danemark + Danville (Québec) + Danvillle (Québec) : + Dartford, Angleterre + Dartmouth (N.-É.) + Daugavpils (Lettonie) + Deep River (Ont.) + Denver (CO) : + Denver (Col.) + Détroit (Mich.) + Deux-Montagnes (Québec) + Deventer (Pays-Bas) + Dijon, France : + Dolbeau (Québec) + Dorset : + Dorval : + Dreux (France) + [Drummondville] : + Drummondville : + [Drummondville, Québec] : + Drummondville (Québec) + Dublin (Irlande) + Duisburg : + Dumham (Québec) + Dunham : + [Dunham, Québec] : + Dunham (Québec) + Dunham [Québec] : + Dunkirk (France) + Durham-Sud, Qc : + Eastman : + Écosse + [Édimbourg, Écosse] : + Édimbourg (Écosse) + Édimbourg, Écosse + Edmondon, Alberta : + Edmondton (Alb.) + Edmonton : + Edmonton (Alb.) + Edmonton (Alberta) + Égypte + Elberfeld (Wuppertal, Allemagne) + Espagne + Espagne : + Estrie (Québec) + États-Unis + États-Unis : + É.-U. + Exeter (Angleterre) + Eymoutiers [France] : + [Farnham, Québec] : + [Farnham, Québec] ; + Farnham (Québec) + Fère-en-Tardenois (France) + Finlande + Fortierville (Québec) + [France : + France + France : + Francfort-sur-le-Main (Allemagne) + Frankfurt/Main, Germany : + Fredericton (N.-B.) + Fredericton (N.-B.) : + Fredericton (Nouveau-Brunswick) Canada : + Fredericton, Nouveau-Brunswick, Canada : + Frelighsburg, QC : + Galt (Cambridge, Ont.) + Gand : + Gaspé (Québec) + Gaspésie-Îles-de-la-Madeleine (Québec) + Gatineau : + [Gatineau, Québec] : + Gatineau (Québec) + Gatineau (Québec) Canada : + Gdańsk (Pologne) + Genève : + Glatz (Allemagne) + Granby (Québec) + Granby (Québec) + Grande-Bretagne + Grand-Mère (Shawinigan, Québec) + [Grand-Métis, Québec] : + Grand-Métis (Québec) + Grèce + Grenoble : + Grenoble (France) + Grondines (Deschambault-Grondines, Québec) + Guangzhou [China] : + Guatemala : + Guysborough, N.-É. + Haida Gwaii (C.-B.) + Haïfa (Israël) + Haileybury (Ont.) + Haïti + Halifax : + Halifax (N.-É.) + [Halifax, Nouvelle-Écosse] : + Halifax, Nova Scotia : + Hambourg (Allemagne) + Hamburgh : + Hamilton : + Hamilton (Ont.) + [Hampstead, Québec] : + Hartford (Conn.) + Havre-aux-Maisons : + Heidelberg ; + [Hildburghausen, Allemagne] : + Holguin, Cuba + Hongkong + Hongrie + Hudson (Québec) + Hull : + Hull (Québec) + Iaşi (Roumanie) + Illinois + Inde + Inukjuak (Québec) + Iran + Irlande + Isère (France) + Israël + Issoudun (France) + Italie + Izmir (Turquie) + [Japon : + Japon + Japon : + [Joliette : + [Joliette] : + Joliette : + Joliette, Qué. : + [Joliette, Québec] : + Joliette (Québec) + Joliette (Québec) : + Jonquière (Québec) + Kabylie (Algérie) + Kahnawake (Québec : Réserve indienne) + Karl-Marx-Stadt (Allemagne) + Kasterlee : + Kasterlee, Belgique : + Kaunas (Lituanie) + Kelowna, B.C. : + Kelowna (C.-B.) + Kensington (Londres, Angleterre) + Kent (Angleterre) + Kerala (Inde) + Kingston ; + Kingston (Ont.) + Kingston [Ont.] : + Kittery (Maine : Ville) + Kleinburg, Ont. : + Kleinburg (Ontario) Canada : + Kleinburg, Ontario, Canada : + Kraków : + La Baie (Saguenay, Québec) + Lac-Brome (Québec) + Lac-Brome [Québec] : + Lachine : + Lachute, Québec + Lacombe (Alb.) + Lakeside [Mich.] : + Lanoraie (Québec) + L'Anse-de-Roche (Québec) + La Pocatière : + [La Pocatière, Québec] : + La Prairie : + La Rochelle (France) + [LaSalle : + La Salle : + LaSalle : + LaSalle (Montréal, Québec) + [LaSalle, Québec] : + La Sarre (Québec) + L'Assomption : + L'Assomption, QC : + L'Assomption (Québec) + La Tuque (Québec) + Lausanne : + [Lausanne, Suisse] : + Lausanne (Suisse) + Lauzon (Lévis, Québec) + [Laval : + [Laval] : + Laval : + Laval, + Laval, QC : + [Laval, Québec] : + Laval (Québec) + Laval (Québec) : + Leicestershire (Angleterre) + Leipzig (Allemagne) + [Le Relecq-Kerhuon, France], + Les Éboulements (Québec) + Le Sud-Ouest (Montréal, Québec) + Lethbridge (Alberta) : + Lévis : + [Lévis, Québec] : + Lévis (Québec) + [Lieu de production non identifié], + Lima (Pérou) + Linares (Espagne) + Lisbonne, Portugal + Lituanie + [London : + [London] : + London : + London ; + London [England] : + London (Ont.) + London, United Kingdom : + [Londres] : + Londres : + [Londres, Angleterre] : + Londres (Angleterre) + Londres, Royaume-Uni : + [Long Beach (Calif.)] : + Long Beach (Calif.) + [Longueuil] : + [Longueuil] ; + [Longueuil], + Longueuil : + [Longueuil, Québec] : + Longueuil (Québec) + Longueuil, Québec + Longueuil (Québec) Canada : + Longueuil (Québec), Canada : + Longueuil Québec, Canada : + Longueuil, Québec, Canada : + Longwy (France) + Lorraine : + Lorraine (France) + Los Angeles : + Los Angeles (Calif.) + Lotbinière (Québec) + Louiseville (Québec) + [Lyon] : + Lyon : + [Lyon (France) : + Lyon (France) + Macamic (Québec) + Madrid (Espagne) + [Magog : + Magog : + Magog (Québec) + Magog, Québec + Manawan (Québec : Réserve indienne) + Mandeville : + Manitoba + Manitoba : + Manitoba (Province) + Maria (Québec) + Marieville (Québec + Maroc + Marseille (France) + Martinique + [Mascouche : + [Mashteuiatsh] : + [Masset, Colombie-Britannique] : + Matane : + [Matane, Québec] : + Matane (Québec) + Mauricie (Québec) + Mayne, Île (C.-B.) + Medellín (Colombie) + Memphis (Tenn.) + Messines (Québec) + Metz, France : + Meudon (France) + Mexico : + Mexico (Mexique) + Mexique + Miami (Flor.) + Milan : + Milan (Italie) + Milan (Italie) : + Milano : + Mission (C.-B.) + Mississauga (Ont.) + Monaco + Monaco : + Moncton : + [Moncton, N.-B.] : + [Moncton, N.B. : + Moncton (N.-B.) + Moncton (N.-B.) : + Moncton, N.-B. + Moncton, N.B. : + [Moncton, Nouveau-Brunswick], + Moncton, Nouveau-Brunswick (Canada) : + Monroe (Wash.) + Montbéliard (France) : + Montérégie (Québec) + [Mont-Joli : + Mont-Joli (Québec) + [Montmagny, Québec] : + Montmagny (Québec) + [Montpellier, France] : + Montpellier (France) + [Montpellier, Québec] : + [Montréa] : + [Montreal : + [Montreal] : + Montreal : + Montreal ; + [Montréal : + [Montréal, + [Montréal: : + [Montréal] : + [Montréal], + [Montréal], : + Montréal + Montréal : + Montréal ; + Montréal, + Montreal, Canada : + Montréal (Canada) + Montréal, Canada : + Montréal-Nord, QC : + Montreal, QC : + Montréal (Qc) : + Montréal, Qc : + Montréal (QC) : + Montréal, Qc, Canada : + Montréal, QC Canada : + Montréal, QC, Canada : + Montreal, Quebec : + Montreal (Québec) : + [Montréal, Québec] : + Montréal (Québec) + Montréal (Québec) : + Montréal (Québec] : + Montréal(Québec) + Montréal, Québec + Montréal, Québec : + Montréal, Québec ; + MOntréal (Québec) + Montreal (Quebec) Canada : + Montreal, Quebec, Canada : + Montreal, Québec, Canada : + Montréal (Québec) Canada : + Montréal (Québec), Canada : + Montréal, Québec, Canada : + Montreuil, France : + [Mont-Saint-Hilaire] : + [Mont-Saint-Hilaire, Québec] : + Mont-Saint-Hilaire (Québec) + Mont-Saint-Hilaire (Québec) Canada : + Mtl : + MTL, Québec, CA, + Mumbai (Inde) + Munich (Allemagne) + Nagasawa : + Naim (Écosse) + Nanaimo (C.-B.) + Nantes (France) + Naples, Italie + Nassau (N.Y.) + Natashquan (Québec) + N.-B. + New Hampshire + Newport : + New Richmond (Québec) + New Richmond (Québec) : + [New York] : + New York : + New York ; + [New York, N.Y.] : + New York (N.Y.) + New York, N.Y. + New-York (N.Y.) + Niagara Falls (Ont.) + [Nicolet : + [Nicolet] : + Nicolet : + Nicolet, + Nicolet (Québec) + Nicolet-Sud : + Nipissing (Ont. : Canton) + Normétal (Québec) + North Vancouver : + North York (Ont.) : + Norvège + Nouveau-Brunswick + Nouvelle-Delhi : + N.Y. : + Ont. + Ontario + Osfildern, Germany : + Oshawa : + [Ottawa : + [Ottawa] : + Ottawa : + Ottawa (Ont.) + Ottawa, Ont. + Ottawa (Ontario) + [Outremont : + [Outremont] : + Outremont : + Outremont (Montréal, Québec) + Oxford (Angleterre) + Paisley (Écosse) + Palerme (Italie) + Palestine + [Paris] : + [Paris], + Paris + Paris : + Paris ; + Paris, + Paris, : + (Paris (France) + (Paris) France + [Paris, France] : + [Paris, France], + Paris (France) + Paris [France] : + Paris(France) + Paris, France + Paris, France : + Paris (FRance) + Pays-Bas + Pemberton, N.J. + Percé : + Percé (Québec) + Pérou + Perth (Ont.) + Petite-Rivière-Saint-François (Québec) + Philadelphie, Penns. + Philippines + Piémont (Québec) + Pierrefonds (Montréal, Québec) + Pierreville (Québec) + [Piopolis, Québec] : + Piopolis (Québec) + PIopolis (Québec) + Pirot (Serbie) + Pittsburgh (Penns.) + Plessisville (Québec) + Pointe-aux-Trembles (Montréal, Québec) + Pointe-Claire : + Pointe-Claire (Montréal) + Pointe-du-Lac : + Pointe Gatineau, Québec + Pologne + Pont-en-Royans : + Pontevedra, España : + Port-au-Persil : + Port-au-Prince (Haïti) + [Portneuf], + Portneuf (Québec) + Portugal + Poularies (Québec) + Povungnituk : + Prague (République tchèque) + Prince George (C.-B.) + Prince George (C.-B.) : + [Puebla, Mexique], + Pully : + Pully (Suisse) + Puvinitu Kaipi Kanata [i.e. Puvirnituq, Québec, Canada] : + Puvirnituk, + [Puvirnituq, Québec] : + Puvirnituq (Québec) + [Québec : + [Québec] : + [Québec], + Québec + Québec : + Québec, + Québec,, + QUébec + Québec, Canada : + Québec, P.Q. : + Quebec (Province) : + Québec (province) + (Québec Province) + [Québec (Province) : + [Québec (Province), + [Québec (Province): : + [Québec (Province)] : + [Québec (Province)], + Québec (Province) + Québec (Province) : + Québec (Province), + Québec(Province) : + [Québec, Québec] : + [Québec, Québec], + Québec (Québec) + Québec (Québec) : + Québec, Québec + Québec (Québec) Canada : + Quimper (France) + Racine (Wisc.) + Rawdon (Québec) + Red Deer (Alb.) + Regina : + Regina (Sask.) + Regina (Sask.) : + [Repentigny : + [Repentigny] : + Repentigny (Québec) + Repentigny, Québec + République tchèque + Reutlingen : + [Richelieu] : + [Richelieu, Québec], + Richelieu (Québec) + Richmond (Virg.) + [Rimouski : + [Rimouski] : + Rimouski : + [Rimouski, Québec] : + Rimouski (Québec) + Rimouski (Québec) : + Rimouski, Québec + Rivière-du-Loup : + Rivière-du-Loup (Québec) + Rivière-Koksoak (Québec) + Roberval (Québec) + Roma : + Rome (Italie) + [Rosemère] : + Rostock (Allemagne) + Rotterdam (Pays-Bas) + Rouen (France) + Roumanie + Rouyn : + Rouyn-Noranda : + Rouyn-Noranda, Qc, Canada : + Rouyn-Noranda (Québec) + Rouyn-Noranda (Québec) : + Rovaniemi (Finlande) + Roxboro : + Royaume-Uni + Rueil-Malmaison [France] : + Russie + Sackville (N.-B.) + [Saguenay] : + Saguenay : + Saguenay-Lac-Saint-Jean (Québec) + Saguenay, Québec + Saint-Alban : + Saint-Alexis-de-Matapédia (Québec) + Saint-Alphonse-Rodriguez (Québec) + Saint-Antoine-de-l'Isle-aux-Grues (Québec) + Saint-Antoine-sur-le-Richelieu : + Saint-Antoine-sur-Richelieu (Québec) + Saint-Apollinaire (Québec) + Saint-Apollinaire, Québec : + [Saint-Armand, Québec] : + Saint-Armand (Québec) + Saint-Augustin-de-Desmaures (Québec) + Saint-Barthélemy + Saint-Basile-le-Grand : + Saint-Benoît (Mirabel, Québec) + Saint-Boniface : + Saint-Boniface-de-Shawinigan (Québec) + Saint-Boniface (Man.) : + Saint-Casimir (Québec) + Saint-Charles-de-Bellechasse (Québec) + Saint-Charles-de-Bourget (Québec) : + [Saint-Constant : + Saint-Damien (Québec) + [Saint-Denis-sur-Richelieu, Québec] : + Saint-Donat : + Sainte-Adèle (Québec) + Sainte-Agathe des Monts (Québec) + Sainte-Agathe-des-Monts (Québec) + Sainte-Anne-de-Beaupré : + Sainte-Anne-de-Beaupré (Québec) + Sainte-Anne-de-la-Pérade (Québec) + Sainte-Anne-des-Monts (Québec) + Sainte-Catherine-de-la-Jacques-Cartier (Québec) + Sainte-Catherine (La Jacques-Cartier, Québec) + [Sainte-Cécile-de-Lévrard : + Sainte-Croix (Suisse) + Saint-Edmond-de-Grantham (Québec) + Saint-Edmond-de-Grantham, Québec : + Sainte-Foy (Québec) + Sainte-Foy, Québec + [Sainte-Hélène-de-Kamouraska, Québec] : + [Sainte-Hélène-de-Mancebourg : + [Sainte-Hélène-de-Mancebourg] : + [Sainte-Hélène-de-Mancebourg], + Sainte-Hélène-de-Mancebourg : + [Sainte-Hélène-de-Mancebourg, Québec], + Sainte-Julie : + Sainte-Justine (Québec) + Sainte-Marguerite-Marie (Mistassini, Québec) + Sainte-Marie (La Nouvelle-Beauce, Québec) + Sainte-Mélanie (Québec) + Sainte-Perpétue : + [Sainte-Pétronille, Québec] : + Sainte-Rose (Laval, Québec) + Sainte-Thérèse : + [Saint-Étienne : + Saint-Étienne-de-la-Malbaie (La Malbaie, Québec) + [Saint-Étienne-de-Lauzon : + Saint-Étienne-de-Lauzon (Lévis, Québec) + Saint-Eugène-de-Guigues (Québec) + Saint-Germain (Québec) + Saint-Hermas (Québec) + Saint-Hilaire (Québec) + Saint-Honoré de Chicoutimi : + Saint-Hubert (Longueuil, Québec) + [Saint-Hyacinthe] : + Saint-Hyacinthe + Saint-Hyacinthe : + Saint-Hyacinthe (Québec) + Saint-Hyacinthe (Québec) : + Saint-Hyacinthe, Québec + Saint-Hyacinthe (Québec) Canada : + Saint-Hyacinthe (Québec) : Expression, Centre d'exposition de Saint-Hyacinthe ; + [Saint-Jacques-le-Mineur, Québec], + Saint-Jean : + [Saint-Jean-de-Matha : + [Saint-Jean-de-Matha] : + [Saint-Jean-des-Piles : + [Saint-Jean-des-Piles] : + Saint-Jean-des-Piles (Shawinigan, Québec) + [Saint-Jean-Port-Joli] : + Saint-Jean-Port-Joli (Québec) + Saint-Jean-Port-Joli (Québec)2rvm + [Saint-Jean-sur-Richelieu] : + [Saint-Jean-sur-Richelieu], + Saint-Jean-sur-Richelieu : + [Saint-Jean-sur-Richelieu, Québec] : + Saint-Jean-sur-Richelieu (Québec) + Saint-Jean-sur-Richelieu (Québec) Canada : + [Saint-Jérôme : + [Saint-Jérôme] : + Saint-Jérôme : + Saint-Jérôme (La Rivière-du-Nord, Québec) + Saint-Jérôme (Québec) + Saint-Jérôme (Québec) : + Saint-Joseph-de-Beauce : + Saint-Joseph-de-la-Rive : + [Saint-Lambert] : + Saint-Lambert : + Saint-Lambert [Québec] : + [Saint-Laurent : + [Saint-Laurent] : + Saint-Laurent (Montréal, Québec) + Saint-Majorique-de-Grantham (Québec) + Saint-Malo (France) + Saint-Mathieu-de-Rioux (Québec) + Saint-Maurice : + Saint-Maurice (Québec) + Saint-Paul (Alpes-Maritimes, France) + [Saint-Paul-d'Abbotsford] : + [Saint-Paul-d'Abbotsford, Québec] : + Saint-Paul-d'Abbotsford (Québec) + Saint-Paul de Vence : + Saint-Paul [France] : + Saint-Pétersbourg (Russie) + Saint-Pierre-de-Broughton (Québec) + Saint-Robert (Québec) + Saint-Roch-de-l'Achigan (Québec) + [Saint-Sévère, Québec], + Saint-Séverin (Mékinac, Québec) + Saint-Simon : + Saitama (Japon) + Salaberry-de-Valleyfield (Québec) + [Salamanque, Espagne] : + Salamanque (Espagne) + San Agustín Etla (Mexique) + San Antonio (Tex.) + [San Antonio, Texas] : + San Francisco (Calif.) + Santiego del Estero (Argentine) + São Miguel (Açores) + Sarreguemines (France) + Saskatchewan + Saskatoon : + Savona : + Savone : + Savone (Italie) : + Sayabec (Québec) + Scottsdale (Ariz.) : + Sénégal + Séoul (Corée) + Sept-Îles : + Serbie + Séville (Espagne) + Shannon : + Shawinigan (Québec) + Shenyang (Chine) + [Shenzhen, Chine] : + [Sherbrooke : + [Sherbrooke] : + Sherbrooke : + Sherbrooke, Qc : + Sherbrooke, QC : + [Sherbrooke (Québec)] : + [Sherbrooke, Québec] : + Sherbrooke (Québec) + Sherbrooke (Québec) : + Sherbrooke, Québec + Shropshire (Angleterre) + [Sillery] : + [S.l. : + S.l. : + [S.n. : + Soleure, Suisse + [Sorel] : + Sorel (Québec) + Sorel (Sorel-Tracy, Québec) + Sorel-Tracy (Québec) + Split (Croatie) + Staffordshire (Angleterre) + Stanford (Calif.) + Stanstead (Québec) + Staunton (Virg.) + St. Boniface (Winnipeg, Man.) + St-Étienne, Lévis [Québec] : + Stettin (Allemagne) + St-Hilaire-sur-Richelieu (Québec) + St-Hyacinthe : + St-Hyacinthe (Québec) + St. John's, T.-N. : + St. John's (T.-N.-L.) + St. John's, T.-N.-L. + [St-Laurent] : + St. Marys (Ont.) + St. Michael's, T.-N. : + Stockholm : + Stoneham (Québec) + Strasbourg : + Strasbourg (France) + Strasbourg, France + Stratford (Ont.) : + Stuttgart (Allemagne) + Sudbury : + Sudbury (Ont.) : + Suisse + Sulmona (Italie) + Sunderland (Tyne and Wear, Angleterre) + Surrey (C.-B.) : + Sutton : + [Sutton, Québec], + Sutton (Québec) + Sutton, Québec, Canada : + Swanage (Angleterre) + Sydney : + Taipei : + Taipei (Taiwan) + Téhéran, Iran + Terre-Neuve + Terre-Neuve-et-Labrador : + Thaïlande + Thetford-Mines (Québec) + Thionville (France) + Tokyo : + Tōkyō (Japon) + Tonronto (Ont.) + [Toronto : + [Toronto] : + Toronto : + Toronto, Canada : + Toronto, ON : + Toronto, ON. ; + Toronto (Ont.) + Toronto, Ont. : + Toronto (Ontario) + Toronto, Ontario : + Toronto (Ontario) Canada : + Toronto, Ontario, Canada : + Torreón (Coahuila, Mexique) + Totonto (Ont.) + [Toulouse] : + Toulouse : + Tourcoing : + Tourcoing (France) + Tournai (Belgique) + Tournai (Belgique) : + Tours (France) + Tracy (Québec) + Trieste (Italie) + Trinité (Île) + [Trois-Rivières] : + [Trois-Rivières], + Trois-Rivières + Trois-Rivières : + [Trois-Rivières, Québec] : + Trois-Rivières (Québec) + Trois-Rivières (Québec) : + Troy (N.Y.) + Truro (N.-É.) + Tübingen (Allemagne) + Tunisie + Turquie + Utah + [Valcourt] : + Valcourt : + Valcourt (Québec) + [Val-David : + [Val-David] : + Val-David : + [Val-David, Québec] : + Val-David (Québec) + Val-David, Québec + Val d'Or (Québec) + Val-d'Or (Québec) + Valence (Espagne) + Vallée-Jonction : + [Val-Morin, Québec] : + Val-Paradis (Baie-James, Québec) + [Vancouver : + [Vancouver] : + Vancouver : + Vancouver (B.C.) + Vancouver (C.-B.) + Vancouver, C.-B. + Vankleek Hill (Ont.) + Vanves [France] : + Varennes : + Vaucluse (France) + [Vaudreuil-Dorion] : + Vaudreuil-Dorion : + Vaudreuil-Dorion, Qc : + Vaudreuil-Dorion (Québec) + Vaudreuil-Soulanges (Québec) + Vaughan (Ont.) + Vence : + Verchères : + Verdun (Québec) + Vernon (C.-B.) + Vérone (Italie) + Vevey (Suisse) + Victoriaville, Qc : + Victoriaville (Québec) + Vienne (Autriche) + Vieux-Montréal, Québec, Canada : + [Vieux-Québec] : + Villafranca (Italy) : + Villars-sur-Ollon (Suisse) + Vincennes (France) + Vitebsk (Biélorussie) + [Vitry-sur-Seine, France] : + Walpole (N.H.) [etc.] : + Washington : + Washington D.C. : + Washington D.C. ; : + Waterloo (Québec) + Wemotaci (Québec : Réserve indienne) + [Westmount] : + Westmount : + Westmount (Québec) + Westmount, Québec : + Westmount, Québec, Canada : + Whitby (Ont.) + Windsor (Québec) + Winnipeg : + Winnipeg : Galerie d'art de Winnipeg, + Winnipeg (Man.) + Winnipeg (Manitoba) : + [Yonne, France], + Yonne (France) + York (Angleterre) + Yorkshire (Angleterre) + Yougoslavie + Zadar (Croatie) + Zambie + Zurich, Suisse : + Zurich, Switzerland : + diff --git a/matches_roles.xml b/matches_roles.xml new file mode 100644 index 0000000..8a12752 --- /dev/null +++ b/matches_roles.xml @@ -0,0 +1,11 @@ + + + architecte + artiste + auteur + auteur de texte ajouté + graveur + lithographe + photographe + sculpteur + diff --git a/merge_fixes.xslt b/merge_fixes.xslt deleted file mode 100644 index cf5ce43..0000000 --- a/merge_fixes.xslt +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - - - - - - - - %DOUBLEQUOTE-WORKAROUND% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - subtitle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - L’entrée avec le leader - - a un titre dans la langue «  - -  » qui a été conservé en plus du nouveau titre en «  - -  ». - - - - - - - - - - - - - title - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/merge_marcxml.xslt b/merge_marcxml.xslt index 1fb114e..f4b6814 100644 --- a/merge_marcxml.xslt +++ b/merge_marcxml.xslt @@ -3,7 +3,7 @@ xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.53.0