WikiLex:Changements sur les données

De WikiLex
Sauter à la navigation Sauter à la recherche

Ajout de données

Ajout des articles

Il serait souhaitable d’ajouter les articles. Dans la base LEGI, chaque enregistrement correspond à une rédaction d’article, i.e. dès que le texte change un nouvel enregistrement est créé, avec une plage de vigueur (début-fin de vigueur, sachant que la fin peut être infinie). Il y a 1,4M d’articles dont 450k pour les codes.

Je (Seb35) pense que ça peut être la bonne granularité ici sur WikiLex, j’aimerais que la quantité de pages ne soit pas trop importante (dans la mesure du possible). Et si des traitements sont faits sur le texte pour en extraire des informations (cf ci-après pour les liens de citations), le texte est l’unité minimale.

J’ai fait un exemple de quelques pages sur le wiki de prototype (wiki distinct qu’on peut casser), avec l’exemple de l’article L. 2183-1 du code de la défense v1 v2 v3. (liste des pages d’articles créés)

Une façon de faire, complémentaire, serait de créer aussi des pages sur le concept de chaque article, par exemple "article L. 2183-1 du code de la défense" indépendement de sa rédaction et qui lierait vers chacune des rédactions. Je pense que ce n’est pas nécessaire, puisqu’on peut faire des requêtes pour demander tel numéro d’article de telle loi, où le numéro d’article est une string et non un item. Et ne pas faire ces pages fait gagner probablement entre 700k et 1M de pages pour la base LEGI.

Ajout des références vers les autres articles

À l’aide de metslesliens (dont il faut créer une vraie librairie JS indépendante et il faut améliorer un peu le format de sortie pour en faire une sortie aussi utilisable que la version Python), il est relativement facile d’extraire les liens.

J’ai (Seb35) fait un exemple de ce à quoi pourrait ressembler ces liens sur le wiki de prototype.

Ajout de la base JORF

La base JORF contient environ 1M de textes alors que la base LEGI contient 1,1K textes. Les textes actuellement manquants dans WikiLex sont probablement des lois anciennes peu importantes (car non-consolidées) et des textes de rang inférieur de toutes dates plutôt abrogés que réécrits (arrêtés).

[en attente de JORF] Ajout de eli:amends aux textes dont le titre comporte "modifiant la loi n° XX-XX"

Au 9 décembre 2019, il y a 7585 telles lois selon la requête SPARQL correspondant à la regex codée dans le script wikilex-sync et 7353 avec la propriété eli:amends [1]. La différence de 232 textes semble être des textes de la base JORF.

Refaire tourner le script sur ces 232 candidats une fois la base JORF ajoutée, il ne devrait alors plus y avoir de tels textes sans correspondance.

[en attente de JORF] Ajout de eli:amends aux textes dont le titre comporte "modifiant la loi du JJ MM AAAA"

Écrire un moteur permettant de rapprocher les textes "modifiant la loi du JJ MM AAAA" en recherchant (espérant) les lois de même type le jour dit, voire en faisant un diff sur le titre des textes. Au 9 décembre 2019, il y a que 260 tels textes dans la base LEGI (241 décrets, 9 arrêtés, 7 lois, 3 ordonnances. Il est toutefois probable que l’ordre de grandeur soit plus important une fois JORF ajoutée, des arrêtés non-consolidés pouvant modifier des arrêtés consolidés.

Normalisation de données

Typographie « loi n°AAAA-NN » versus « loi n° AAAA-NN » (une espace après le °)

Dans la base LEGI, la quasi-totalité est sans espace (n°AAAA-NN). Remarquant cela, j’ai normalisé à la main les labels des items avec espace (n° AAAA-NN) et j’ai normalisé dans le script wikilex-sync la valeur de la propriété eli:title pour forcer avec espace.

Certains items comme décret n° 97-1189 du 19 décembre 1997 pris pour l'application au ministre de l'éducation nationale, de la recherche et de la technologie du 1° de l'article 2 du décret n° 97-34 du 15 janvier 1997 relatif à la déconcentration des décisions admini (Q36536) ont toutefois un eli:title sans espace. Il faut chercher pourquoi.

De plus, il semble que les modifications récentes dans la base LEGI se font systématiquement sans espace : à vérifier dans la base SQL voire dans le XML, mais si cela se confirme ça pourrait être une règle récente codée dans S.O.L.O.N. ou ailleurs qui normalise les entrées modifiées à être sans espace. Si cela se confirme, se reposer la question de l’éventuelle migration en masse vers une forme sans espace. En tous état de cause, il est bien plus pratique d’avoir une forme unique, par exemple pour chercher dans les titres.

Gestion des rangs obsolètes : également pour les anciennes valeurs officielles ?

Pour rappel, les rangs obsolètes n’apparaissent pas dans les résultats SPARQL, du moins pas dans les valeurs directes (avec ces préfixes, ?item wlt:PXX ?value). On peut toutefois y accéder en passant par le statement (?item wlp:PXX ?statement . ?statement wlps:PXX ?value).

Actuellement sur WikiLex, les rangs obsolètes ne sont jamais créés pour les valeurs venant de la base LEGI, mais ils peuvent être positionnés par les humains sur les valeurs officielles (et dans ce cas, les futures synchronisations conserveront ce rang obsolète).

Je (Seb35) m’interroge si ça serait pas intéressant que, lorsqu’une nouvelle synchronisation apporte une nouvelle valeur, l’ancienne valeur soit conservée en rang obsolète. Par exemple un cas classique est lorsqu’une loi est abrogée : actuellement l’ancienne valeur "en vigueur" est perdue (quoiqu’elle reste dans l’historique), la proposition est ici de la conserver en rang obsolète et d’ajouter la nouvelle valeur "abrogé" en rang normal. Cela permettrait des requêtes sur l’historique des changements de valeurs. Une alternative moins puissante étant d’enrichir Wikibase par un "git-blame" permettant de retrouver, pour une propriété d’un item donné, l’historique de ses valeurs.

[à vérifier+discuter] Items ayant des doubles rangs préférés

Tel que wikilex-sync est écrit, les rangs élevés peuvent provenir de deux causes :

  • si le texte dans la base LEGI a plusieurs enregistrements (id) pour un même cid, alors les enregistrements en statut 'modifié' sont de rang normal et les autres enregistrements sont de rang élevé,
  • pour les deux propriétés ELI qui sont naturellement multivaluées, l’ELI correspondant au NOR est de rang élevé et l’ELI correspondant à l’identifiant naturel AAAA-N est de rang normal.

Certains éléments comme arrêté du 19 mars 1987 fixant les modalités d'élection des représentants des régions et des départements et les modalités de désignation des représentants des communes aux comités de bassin (Q6776) ont alors certaines propriétés multivaluées avec plusieurs rangs élevés comme eli:title sur cet exemple. Il y a 62 tels items (requête), l’un (arrêté du 28 août 1987 fixant la composition de la commission technique départementale de la pêche (Q13558)) ayant même jusqu’à trois valeurs de rang élevé. Sur plusieurs exemples, Légifrance réagit également bizarrement, par exemple en affichant deux dates d’abrogation (exemple).

Un type de cas peut être quasiment légitime (exemple) où ce texte, en décembre 2019, est en abrogation différée au 1er janvier 2020 et la version suivante est en vigueur différée au 1er janvier 2020 (changement de nom de INRA en INRAE semble-t-il). Aussi ce type n’est pas réellement abrogé, mais ce moyen de faire sert à annoncer à l’avance la future rédaction. Sur d’autres textes, ce type de comportement est effectué avec une version en 'VIGUEUR' et la future version en 'VIGUEUR_DIFF'.

Fait

Types de lois

Recenser les types de lois spécifiques et récurrents (lois de finances, lois de financement de la Sécurité sociale, lois de programmation, lois de programme…) et tagger cela dans une propriété à définir.

Tenter, autant que faire se peut, de reconnaître automatiquement les différents types afin de disposer de ces règles pour l’avenir (art 2 CC :). Peut-être avec une approche par regex. Bonus : ajouter ces règles à metslesliens.

Implémenté le 22 décembre 2019 dans wikilex-sync pour 5 catégories, uniquement des lois de finances et assimilé : LFI, LFR, LR, LPFP, LFSS (181 textes concernés).
Je n’ai pas implémenté les « lois de programmation » et « lois de programme » car je ne suis pas sûr que la seule mention « de programmation » ou « de programme » dans le titre suffise à caractériser une loi de programmation au sens moderne (notion introduite lors de la révision constitutionnelle de 2008, cf article 34 de la Constitution) car il y a la mention « de programmation » avant 2008 (la première étant en 1982). La dernière mention « de programme » date de 2006. Voir cette requête SPARQL pour la liste des 33 textes concernés.
~ Seb35 [^_^] 23 décembre 2019 à 18:18 (CET)