Qualifier les candidats de liens contre une base de données
Afin d’être certain de la validité d’un lien, il est proposé de vérifier, dans une base de données, son existence à la date de vigueur du texte.
De surcroît, cette étape permet le cas échéant d’obtenir l’identifiant de destination du lien, par exemple un LEGIARTI + LEGITEXT/JORFTEXT si on veut faire un lien vers Légifrance. Selon l’architecture d’URLs/de navigation, les programmes peuvent ne pas recourir à un identifiant si par exemple tous les articles d’un texte sont mis à plat /article-1, /article-2, etc, la vérification ne sert alors qu’à éviter d’arriver sur des documents inexistants (404).
legi.py
permet cette vérification pour les textes de loi en vigueur, mais ça ne couvre pas d’autres bases comme le JORF, KALI, les projets/propositions de loi, les textes européens, etc. Pour que metslesliens
s’adapte à plusieurs contextes, il faut donc prévoir une interface générique et un petit dictionnaire pour orienter vers tel ou tel base de données selon la nature du lien reconnu. L’interface générique peut aussi embarquer un système de cache. Pour des raisons de performance, je pense qu’il faut prévoir une vérification en masse/en batch des liens (et bien sûr à l’unité également).
Je verrais bien aussi un indice ou statut de fiabilité, par exemple un lien qualifié serait fiable, mais un lien avec l’expression « du même code » le serait moins, du moins tant que le texte n’est pas structuré/contextualisé plus finement. Je n’ai pas encore d’idée arrêtée sur le sujet toutefois.
Les erreurs doivent être loguées/retournées, peut-être avec un statut de fiabilité spécifique. A priori j’imagine qu’il s’agira essentiellement de faux négatifs partiels, i.e. des expressions pas assez reconnues pour que leur qualification contre la base de données corresponde. Par exemple, dans l’article 1 de la loi 2016-1321, en attendant que l’expression « audit premier alinéa de l’article L. 300-2 » ne soit reconnue et comprise, l’article en question sera rattaché au texte en cours (et sera donc inexistant) et non au code (des relations entre le public et l’administration) mentionné plus haut dans le texte.