Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposition identifiants standard 1 et 2 #11

Open
mbrasebin opened this issue Dec 14, 2023 · 11 comments
Open

Proposition identifiants standard 1 et 2 #11

mbrasebin opened this issue Dec 14, 2023 · 11 comments
Labels

Comments

@mbrasebin
Copy link

mbrasebin commented Dec 14, 2023

Proposition

Suite à la réunion du 28 novembre 2023, nous avons établi qu'il serait nécessaire de spécifier les identifiants des standards de niveau 1 et 2 afin de de pas laisser une URI libre et aléatoire pour faciliter :
1/ le développement d'outils exploitant le lien entre ces URI
2/ la possibilité pour un humain de faire le lien entre l'URI et les objets associés

Le principal général est de produire des URI en cascade qui reprennent l'URI de la classe mère et d'en ajouter des éléments spécifiques à la classe.

La proposition se fait au regard du schéma ci dessous (avec pour rappel en orange les classes du standard de niveau 1 et en vert et bleu les classes de standard niveau 2).

image

Standard niveau 1 :

Classe ReglementPLU

L'idée serait d'appuyer l'identifiant de cette classe sur l'URI tel que défini dans le standard CNIG PLU où l’identificateur IDURBA est construit par concaténation du code INSEE de la commune ou du numéro SIREN de l’intercommunalité avec le type de document et sa date d'approbation (voir le paragraphe 4.3 de la norme pour plus de détail : https://cnig.gouv.fr/IMG/pdf/221108_standard_cnig_plu_v2022-10_comm_std.pdf)

image

Pour cet identifiant, nous proposons donc d'ajouter un suffixe /reglement/ pour préciser qu'il s'agit de l'identifiant du règlement.

Ainsi, si on considère deux documents d'urbanismes avec les identifiants IDURBA :

  • 44712_PLU_20041103
  • 244400189_PLUI_20111215

Les identifiants des règlements deviendraient :

  • 44712_PLU_20041103/reglement
  • 244400189_PLUI_20111215/reglement

Classe Titre

Le titre représente les différents titres du règlement d’urbanisme qui peuvent être liés à un zonage et à une prescription. La classe titre est récursive dans le sens où un article ayant un titre peut être composé d'articles ayant leur propres sous-titres.

Comme cette classe fait le lien avec le règlement d'urbanisme, il est proposé de construire l'identifiant à partir du règlement auquel il est associé et du libellé de la zone d'urbanisme à laquelle le titre est associé.

Cela donne dans le cas d'une zone UE :

  • 44712_PLU_20041103/reglement/UE
  • 244400189_PLUI_20111215/reglement/UE

Si cette zone UE est sous décomposée en zone UE1 et UE2 (pour prendre en compte la sous décomposition en sous-titres), on ajoutera l'identifiant de sous-titre au titre parent. Cela donne :

  • 44712_PLU_20041103/reglement/UE/UE1
  • 44712_PLU_20041103/reglement/UE/UE2
  • 244400189_PLUI_20111215/reglement/UE/UE1
  • 244400189_PLUI_20111215/reglement/UE/UE2
    Cette hiérarchisation facilitera le fait de retrouver des éléments réglementaires définis au niveau de l'article parent et qui s'appliquent au niveau de règlement.

Enfin, pour les articles qui ne sont pas associés à une zonage du PLU (par exemple, les dispositions générales), un code est ajouté à la place de l'identifiant de la zone. Par exemple, le code serait dg pour les dispositions générales, les URI seraient alors les suivants :

  • 44712_PLU_20041103/reglement/dg/
  • 244400189_PLUI_20111215/reglement/dg/

TODO : définir la liste des codes pour spécifier ces articles sans zonage associé
REP : comme vu en SG6 du 08/01/2024, il ne semble pas y avoir d'autres code que dg à prévoir :

Classe Contenu

Le Contenu correspond à un ou plusieurs paragraphes à l’intérieur d’un Titre.

Concernant l'identifiant, celui-ci serait construit à partir de l'identifiant du titre parent et en ajoutant le préfixe contenu puis un numéro par ordre croissant en fonction du nombre de paragraphes sous le titre. Ce numéro serait codé sur 3 caractères et serait incrémental à partir de 1 et défini par identifiant de titre parent.

En reprenant les exemples précédents d'URI :

  • 44712_PLU_20041103/reglement/UE
  • 44712_PLU_20041103/reglement/UE/UE2

cela donnerait :

  • 44712_PLU_20041103/reglement/UE/contenu001
  • 44712_PLU_20041103/reglement/UE/contenu002
  • 44712_PLU_20041103/reglement/UE/contenu003
  • 44712_PLU_20041103/reglement/UE/UE2/contenu001
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002

Standard niveau 2 :

Classe RegleStructurante

La classe règle structurante fait le lien entre les standards de niveau 1 et de niveau 2. Elle traduit le fait qu'une partie d'un article est traduite dans le format structuré d'exploitation des règles. Ainsi, il y a potentiellement plusieurs règles structurantes associées à un contenu d'article.

L'idée est de construire l'identifiant à partir du contenu auquel la règle est associée et d'ajouter le suffixe regle un numéro incrémental à 3 chiffres qui débute à 001 en fonction du nombre de règles associées à l'article.

Les identifiants suivants de contenu :

  • 44712_PLU_20041103/reglement/UE/contenu001
  • 44712_PLU_20041103/reglement/UE/UE2/contenu001

Impliquent les identifiants suivants de règles structurantes :

  • 44712_PLU_20041103/reglement/UE/contenu001/regle001
  • 44712_PLU_20041103/reglement/UE/contenu001/regle002
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle002

Classe ConditionUnitaire et ContrainteUnitaire

Ces classes associées à la classe de règles structurées permettent de définir les conditions à vérifier pour qu'une règle s'applique et les implications en termes de contraintes. Ces contraintes et conditions sont chaînées pour former des conditions et contraintes composites.

L'idée est de construire les identifiants à partir de la règle structurante à laquelle ces conditions et contraintes sont associées et d'ajouter un nombre codé sur 3 chiffres de manière incrémentale. Un préfixe (cdu ou ctu pour condition ou contrainte) est ajouté de manière à éviter les doublons et spécifier le type d'objet associé à la classe.

Pour les identifiants de règles structurantes suivants :

  • 44712_PLU_20041103/reglement/UE/contenu001/regle002/
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/

Les conditions unitaires seront codées comme suit :

  • 44712_PLU_20041103/reglement/UE/contenu001/regle002/cdu001
  • 44712_PLU_20041103/reglement/UE/contenu001/regle002/cdu002
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu001
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu002

et les contraintes unitaires :

  • 44712_PLU_20041103/reglement/UE/contenu001/regle002/ctu001
  • 44712_PLU_20041103/reglement/UE/contenu001/regle002/ctu002
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu001
  • 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002

Les différentes implémentations des classes ConditionUnitaire et ContrainteUnitaire (par exemple, BandeConstructibilité ou RetraitAlignement) ont les identifiants construits de la même manière en limitant à 5 caractères le préfixe des classes. Par exemple :

TODO : à moduler en fonction des classes et noms de classes finalement retenes dans le standard SRU de niveau 2

  • hauteur : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002/haut001
  • Coefficient biotope : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002/coefb001
  • Retrait alignement : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002/retal001
  • CES : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002/ces001
  • Interdiction : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002/int001
  • Autorisation : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/ctu002/aut001
  • ChampApplication : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/chaapp001
  • Bande de constructibilité : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/bcons001
  • Type de bâtiment : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/typba001
  • Surface de parcelle : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/surfpa001
  • Voirie bordante : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/voibo001
  • Contrainte unitaire spécifiques : 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/ctusp001
@GT-CNIG-DDU
Copy link
Collaborator

Merci @mbrasebin j’approuve cette proposition !

La syntaxe serait donc quelque chose comme :
<IDURBA>/reg/<zone>/.../<ZONE_URBA.LIBELLE>/<IDCONTENU>/<IDREGLE>/ID<condition|contrainte>/ID<CLASSE>/...

Propositions d'améliorations :

  • remplacer reg par reglement
  • préfixer chaque identifiant par le nom ou plutôt une abréviation du nom de la classe :
    • remplacer 001 le numéro de contenu par contenu01, contenu02, etc.
    • remplacer 001 le numéro de règle par regle01, regle02, etc.
    • cdu01, cdu02 (condi et contr est bien aussi mais contr fait penser à contrôle, non ?)
    • ctu01, ctu02 (mais pas PSC qui est trop connoté "prescription" d'urbanisme, et est utilisé pour les prescriptions)

Nouvelle syntaxe :
<IDURBA>/reglement/<titre>/<sous-titre>/.../<ZONE_URBA.LIBELLE>/contenu<ii>/regle<ii>/<CDU|CTU><ii>/<CLASSE><ii>/...

Il sera sans doute utile de réduire les noms de classe à une abréviation limitée par exemple à 5 caractères

Exemples :

Document d’urbanisme :

  • 44712_PLU_20041103
  • 244400189_PLUI_20111215

Règlement du document d’urbanisme :

  • 44712_PLU_20041103/reglement
  • 244400189_PLUI_20111215/reglement

Titre ou « Ensemble de zones d’urbanisme »

  • 44712_PLU_20041103/reglement/UE
  • 244400189_PLUI_20111215/reglement/UE

Dispositions générales :

  • 44712_PLU_20041103/reglement/dg/
  • 244400189_PLUI_20111215/reglement/dg/

Zone d’urbanisme :

  • 44712_PLU_20041103/reglement/UE
  • 44712_PLU_20041103/reglement/UE/UE1
  • 44712_PLU_20041103/reglement/UE/UE2
  • 244400189_PLUI_20111215/reglement/UE/UE1

Contenu :

  • 44712_PLU_20041103/reglement/UE/contenu01
  • 44712_PLU_20041103/reglement/UE/contenu02
  • 44712_PLU_20041103/reglement/UE/contenu03
  • 44712_PLU_20041103/reglement/UE/UE2/contenu01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02

Règles structurantes :

  • 44712_PLU_20041103/reglement/UE/contenu01/regle01
  • 44712_PLU_20041103/reglement/UE/contenu01/regle02
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle02

Conditions unitaires :

  • 44712_PLU_20041103/reglement/UE/contenu01/regle02/cdu01
  • 44712_PLU_20041103/reglement/UE/contenu01/regle02/cdu02
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu02

Contraintes unitaires :

  • 44712_PLU_20041103/reglement/UE/01/contenu02/ctu01
  • 44712_PLU_20041103/reglement/UE/01/contenu02/ctu02
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02

Classes :

  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02/hauteur01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02/coefficientbiotope01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02/retraitalignement01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02/ces01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02/interdiction01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/ctu02/autorisation01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/perimetreunitaire01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/bandeconstructibilite01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/typebatiment01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/surfaceparcelle01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/routebordante01
  • 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/contrainteunitairespecifique01

@MFrangi
Copy link

MFrangi commented Dec 18, 2023

Bonjour,

Je suis désolé mais j'ai beaucoup de mal à comprendre le fonctionnement attendu.

Rappel du fonctionnement de l'outil de saisi à l'heure actuelle :

Il n'y a que 3 éléments qui disposent d'un identifiant dans l'outil : les règlement, les titres et les contenus.

Un règlement est composé de plusieurs titres. Les titres sont composés de un ou plusieurs contenus.

Un contenu peut éventuellement être de la classe "article". D'ailleurs, je ne comprends pas à quoi sert cette fonctionnalité qui était déjà là quand j'ai repris le projet.

Un paragraphe n'est pas égal à un contenu. Si tous les paragraphes d'un titre ont les mêmes métadonnées, le titre n'aura qu'un seul contenu regroupant tous les paragraphes.

Questions

Partant de là, une phrase comme "La classe titre est récursive dans le sens où un article ayant un titre peut être composé d'articles ayant leur propres sous-titres." est incompréhensible pour moi. Peut-être que le comportement actuel de l'outil ne convient pas ?

Je ne comprends pas la syntaxe des identifiants des titres. Est-ce que les "UE1" et "UE2" sont des incréments ou est-ce que ça fait référence à autre chose ? On aurait une syntaxe du type {identifiant_plu}/reg/{zone}/{zone}{incrément} ?

Si la zone n'a pas été renseignée par l'utilisateur, comment on fait ? On parle de mettre "dg" dans le cas des dispositions générales mais comment on sait qu'on est dans des dispositions générales ?

Pour les contenus, ça me semble plus clair : on prend l'identifiant du titre parent et on ajoute un incrément.

P.S. Je ne parle que pour le standard de niveau 1 étant donné que c'est le standard utilisé par l'outil de saisi.

@GT-CNIG-DDU
Copy link
Collaborator

GT-CNIG-DDU commented Dec 19, 2023

Pour te répondre @MFrangi :

Il n'y a que 3 éléments qui disposent d'un identifiant dans l'outil : les règlement, les titres et les contenus.

Exact, et dans le standard CNIG SRU de niveau 2 tous les objets de toutes les classes portent un identifiant

Un règlement est composé de plusieurs titres. Les titres sont composés de un ou plusieurs contenus.

Note également qu'un titre peut également avoir des sous-titres

Un contenu peut éventuellement être de la classe "article".

Je ne vois pas de classe article dans le standard CNIG SRU.

Un paragraphe n'est pas égal à un contenu. Si tous les paragraphes d'un titre ont les mêmes métadonnées, le titre n'aura qu'un seul contenu regroupant tous les paragraphes.

  • En effet : "Le Contenu correspond à un ou plusieurs paragraphes à l’intérieur d’un Titre" (Standard SRU1 §3.3.3)
  • parlons plutôt d'attributs que de métadonnées

une phrase comme "La classe titre est récursive dans le sens où un article ayant un titre peut être composé d'articles ayant leur propres sous-titres." est incompréhensible pour moi.

@mbrasebin fait référence à la relation "a pour sous-titre" :

image

Je ne comprends pas la syntaxe des identifiants des titres. Est-ce que les "UE1" et "UE2" sont des incréments ou est-ce que ça fait référence à autre chose ?

Non, ce ne sont pas des incréments mais des noms de zones d'urbanisme (ici : urbaines et économiques)

comment on sait qu'on est dans des dispositions générales ?

il s'agit d'un chapitre particulier, clairement identifié dans le règlement, qui en général précède les chapitres par zone puisque les dispositions générales s'appliquent par définition à toutes les zones.

@MFrangi
Copy link

MFrangi commented Dec 19, 2023

Bonjour,

Merci pour les réponses.

Je dois avouer que je n'avais pas fait attention que nous n'étions pas sur le github de l'outil de saisie quand j'ai cliqué sur le lien pour venir sur cette discussion. Cependant, étant donné qu'il faudra sûrement que j'implémente les identifiants dans l'outil, je pense que ce n'est pas plus mal que j'essaie de comprendre dès le début.

Dans l'outil, il y a des titres de différents niveaux (1 à 4), est-ce que cela correspond à la notion de sous-titre ?

Puisqu'il n'y a pas de notion d'article dans le standard, je pense qu'il faudra l'enlever de l'outil. Sûrement un reliquat d'une ancienne version qui n'a plus lieu d'être.

Du coup, comment incrémente-t-on les identifiants des titres. J'ai peut-être mal compris mais j'ai l'impression que tel que c'est décrit pour l'instant, des titres différents pourraient avoir le même identifiant.

Il faudra mettre en place un moyen pour l'utilisateur d'indiquer dans l'outil qu'un chapitre correspond aux dispositions générales. Ce n'est pas prévu à l'heure actuelle.

@GT-CNIG-DDU
Copy link
Collaborator

@MFrangi : cette issue est dédiée à la définition des identifiants pour le standard SRU niveau 1 et 2.
=> Peux-tu migrer cette discussion dans le Github dédié à l'outil d'édition du règlement ?

@mbrasebin
Copy link
Author

Les commentaires d'Arnaud me conviennent, je les ai intégrées à la proposition initiale

@alisonlenain
Copy link
Collaborator

Modifications intégrées dans le document

@GT-CNIG-DDU
Copy link
Collaborator

GT-CNIG-DDU commented Jun 3, 2024

Le projet de standard présente des incohérences entre le nom de l’attribut id<classe> et le nom de la classe retenu dans l’exemple.
Exemples :
1/ IdTypeBa et 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/typba01

2/ idDimParc et 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cdu003/surfpa01

3/ idBcons et 44712_PLU_20041103/reglement/UE/UE2/contenu02/regle01/cdu03/bandeconstructibilite01

etc.

@alisonlenain
Copy link
Collaborator

alisonlenain commented Jul 22, 2024

Garder le libellé entier dans le nom de l’attribut id et l’abréviation dans l’URI. exemples : idTypeBatiment et 44712_PLU_20041103/reglement/UE/UE2/contenu002/regle001/cd003/typba01

@GT-CNIG-DDU
Copy link
Collaborator

Cette issue est indiquée comme "en cours" dans le CR du 11 juin, mais au vu du projet de standard v2024-08 elle semble maintenant résolue sur le fond.
Sur la forme, la solution de codification des identifiants pourrait être centralisée / factorisée dans la partie "Règles d'organisation et de codification" au lieu d'être illustrée dans chaque classe d'objets.
La règle de construction des identifiants (issue de cette issue Github) serait alors complétée d'une nomenclature des diminutifs employés pour chaque classe d'objets (par exemple "typba" pour la classe "TypeBatiment", etc

(@alisonlenain : je mets cela en pense-bête pour le futur, pas pour prise en compte immédiate)

@GT-CNIG-DDU
Copy link
Collaborator

La solution de codification des identifiants a été centralisée / factorisée dans la partie "Règles d'organisation et de codification" du projet de standard à l'occasion de son reformatage durant le mois de novembre 2024.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants