Skip to content

Commit b220073

Browse files
authored
Initial commit
0 parents  commit b220073

File tree

16 files changed

+481
-0
lines changed

16 files changed

+481
-0
lines changed

.github/pull_request_template.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Publication d'une nouvelle version d'un schéma
2+
3+
Vous publiez une nouvelle version d'un schéma ?
4+
Pensez à réaliser les actions suivantes.
5+
6+
- [ ] Mettre à jour les fichiers d'exemples
7+
- [ ] Mettre à jour le champ `version`
8+
- [ ] Mettre à jour le champ `lastModified`
9+
- [ ] Changer les liens vers les fichiers d'exemples présents dans `schema.json` et `README.md`
10+
- [ ] Mettre à jour le fichier `CHANGELOG.md` en incluant une description de la version
11+
- [ ] Merger cette pull-request
12+
- [ ] Publier un nouveau tag et une nouvelle version
13+
- [ ] Prévenir les utilisateurs de ce schéma
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import json
2+
import re
3+
import os
4+
5+
pattern = r"v?\d+\.\d+\.\d+"
6+
7+
8+
def check(obj, version, parents=""):
9+
"""
10+
This functions recursively parses all fields in the schema looking for
11+
version names that would not be the same as the one mentionned
12+
in the 'version' field
13+
"""
14+
errors = []
15+
# if field is a string, we check for a potential version
16+
if isinstance(obj, str):
17+
tmp = re.search(pattern, obj)
18+
if tmp and tmp[0] != version:
19+
errors += [(parents, tmp[0])]
20+
# if field is a list, we check every item
21+
elif isinstance(obj, list):
22+
for idx, k in enumerate(obj):
23+
errors += check(k, version, parents=parents + f"[{str(idx)}]")
24+
# if field is a dict, we check every value
25+
elif isinstance(obj, dict):
26+
for k in obj:
27+
# not checking the fields
28+
if k != "fields":
29+
errors += check(
30+
obj[k],
31+
version,
32+
parents=parents + "." + k if parents else k
33+
)
34+
return errors
35+
36+
37+
to_check = []
38+
39+
if "schema.json" in os.listdir():
40+
to_check.append("schema.json")
41+
42+
elif "datapackage.json" in os.listdir():
43+
with open("datapackage.json", "r") as f:
44+
datapackage = json.load(f)
45+
for r in datapackage["resources"]:
46+
to_check.append(r["schema"])
47+
48+
else:
49+
raise Exception("No required file found")
50+
51+
for schema_path in to_check:
52+
with open(schema_path, "r") as f:
53+
schema = json.load(f)
54+
version = schema["version"]
55+
56+
errors = check(schema, version)
57+
if errors:
58+
message = (
59+
f"Versions are mismatched within the schema '{schema['name']}', "
60+
f"expected version '{version}' but:"
61+
)
62+
for e in errors:
63+
message += f"\n- {e[0]} has version '{e[1]}'"
64+
raise Exception(message)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Vérification de la cohérence des versions dans tous les champs du schéma
2+
3+
on:
4+
push:
5+
6+
jobs:
7+
build:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Checkout Repository
12+
uses: actions/checkout@v4
13+
14+
- name: Set up Python
15+
uses: actions/setup-python@v5
16+
with:
17+
python-version: "3.10"
18+
19+
- run: python .github/workflows/assert_version.py
20+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Vérification du respect des spécifications
2+
3+
on:
4+
push:
5+
6+
jobs:
7+
build:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Checkout Repository
11+
uses: actions/checkout@v4
12+
- name: Set up Python
13+
uses: actions/setup-python@v5
14+
with:
15+
python-version: "3.10"
16+
- name: Cache pip
17+
uses: actions/cache@v1
18+
with:
19+
path: ~/.cache/pip
20+
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
21+
restore-keys: |
22+
${{ runner.os }}-pip-
23+
${{ runner.os }}-
24+
- name: Installation des dépendances
25+
run: pip install -r requirements.txt
26+
- name: Vérification du schéma et des fichiers d'exemples
27+
run: |
28+
frictionless validate --type schema schema.json
29+
frictionless validate --schema schema.json exemple-valide.csv

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
venv

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Changements
2+
3+
Ce fichier répertorie les changements entre différentes versions d'un schéma.
4+
5+
## Version 0.1.1 - 2019-05-06
6+
7+
- Clarification de la description du champ `date_creation`
8+
9+
## Version 0.1.0 - 2018-06-29
10+
11+
Publication initiale.

LICENSE.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# LICENCE OUVERTE 2.0 / OPEN LICENCE 2.0
2+
3+
## « Réutilisation » de l'« Information » sous cette licence
4+
5+
Le « Concédant » concède au « Réutilisateur » un droit non exclusif et gratuit de libre « Réutilisation » de l'« Information » objet de la présente licence, à des fins commerciales ou non, dans le monde entier et pour une durée illimitée, dans les conditions exprimées ci-dessous.
6+
7+
**Le « Réutilisateur » est libre de réutiliser l'« Information » :**
8+
9+
- de la reproduire, la copier,
10+
- de l‘adapter, la modifier, l‘extraire et la transformer, pour créer des « Informations dérivées », des produits ou des services,
11+
- de la communiquer, la diffuser, la redistribuer, la publier et la transmettre,
12+
- de l'exploiter à titre commercial, par exemple en la combinant avec d'autres informations, ou en l'incluant dans son propre produit ou application.
13+
14+
**Sous réserve de :**
15+
16+
- mentionner la paternité de l'« Information » : sa source (au moins le nom du « Concédant ») et la date de dernière mise à jour de l'« Information » réutilisée.
17+
18+
Le « Réutilisateur » peut notamment s'acquitter de cette condition en renvoyant, par un lien hypertexte, vers la source de «l'Information» et assurant une mention effective de sa paternité.
19+
Par exemple : *« Ministère de xxx - Données originales téléchargées sur http://www.data.gouv.fr/fr/datasets/xxx/, mise à jour du 14 février 2017 »*.
20+
21+
Cette mention de paternité ne confère aucun caractère officiel à la « Réutilisation » de l'« Information », et ne doit pas suggérer une quelconque reconnaissance ou caution par le « Concédant », ou par toute autre entité publique, du « Réutilisateur » ou de sa « Réutilisation ».
22+
23+
## « Données à caractère personnel »
24+
25+
L‘ « Information » mise à disposition peut contenir des « Données à caractère personnel » pouvant faire l'objet d'une « Réutilisation ». Si tel est le cas, le « Concédant » informe le « Réutilisateur » de leur présence. L' « Information » peut être librement réutilisée, dans le cadre des droits accordés par la présente licence, à condition de respecter le cadre légal relatif à la protection des données à caractère personnel.
26+
27+
## « Droits de propriété intellectuelle »
28+
29+
Il est garanti au « Réutilisateur » que les éventuels « Droits de propriété intellectuelle » détenus par des tiers ou par le « Concédant » sur l'« Information » ne font pas obstacle aux droits accordés par la présente licence.
30+
31+
Lorsque le « Concédant » détient des « Droits de propriété intellectuelle » cessibles sur l'« Information », il les cède au « Réutilisateur » de façon non exclusive, à titre gracieux, pour le monde entier, pour toute la durée des « Droits de propriété intellectuelle », et le « Réutilisateur » peut faire tout usage de l'« Information » conformément aux libertés et aux conditions définies par la présente licence.
32+
33+
## Responsabilité
34+
35+
L' « Information » est mise à disposition telle que produite ou reçue par le « Concédant », sans autre garantie expresse ou tacite que celles prévues par la présente licence. L'absence de défauts ou d'erreurs éventuellement contenues dans l'« Information », comme la fourniture continue de l'« Information » n'est pas garantie par le « Concédant ». Il ne peut être tenu pour responsable de toute perte, préjudice ou dommage de quelque sorte causé à des tiers du fait de la « Réutilisation ».
36+
37+
Le « Réutilisateur » est seul responsable de la « Réutilisation » de l'« Information ».
38+
39+
La « Réutilisation » ne doit pas induire en erreur des tiers quant au contenu de l'« Information », sa source et sa date de mise à jour.
40+
41+
## Droit applicable
42+
43+
La présente licence est régie par le droit français.
44+
45+
## Compatibilité de la présente licence
46+
47+
La présente licence a été conçue pour être compatible avec toute licence libre qui exige au moins la mention de paternité et notamment avec la version antérieure de la présente licence ainsi qu'avec les licences « Open Government Licence » (OGL) du Royaume-Uni, « Creative Commons Attribution » (CC-BY) de Creative Commons et « Open Data Commons Attribution » (ODC-BY) de l'Open Knowledge Foundation.
48+
49+
## Définitions
50+
51+
Sont considérés, au sens de la présente licence comme :
52+
53+
- Le **« Concédant »** : toute personne concédant un droit de « Réutilisation » sur l'« Information » dans les libertés et les conditions prévues par la présente licence
54+
- L'**« Information »** :
55+
- toute information publique figurant dans des documents communiqués ou publiés par une administration mentionnée au premier alinéa de l'article L.300-2 du CRPA ;
56+
- toute information mise à disposition par toute personne selon les termes et conditions de la présente licence.
57+
- La **« Réutilisation »** : l'utilisation de l'« Information » à d'autres fins que celles pour lesquelles elle a été produite ou reçue.
58+
- Le **« Réutilisateur »** : toute personne qui réutilise les « Informations » conformément aux conditions de la présente licence.
59+
- Des **« Données à caractère personnel »** : toute information se rapportant à une personne physique identifiée ou identifiable, pouvant être identifiée directement ou indirectement. Leur « Réutilisation » est subordonnée au respect du cadre juridique en vigueur.
60+
- Une **« Information dérivée »** : toute nouvelle donnée ou information créées directement à partir de l'« Information » ou à partir d'une combinaison de l'« Information » et d'autres données ou informations non soumises à cette licence.
61+
- Les **« Droits de propriété intellectuelle »** : tous droits identifiés comme tels par le Code de la propriété intellectuelle (notamment le droit d'auteur, droits voisins au droit d'auteur, droit sui generis des producteurs de bases de données…).
62+
63+
## À propos de cette licence
64+
65+
La présente licence a vocation à être utilisée par les administrations pour la réutilisation de leurs informations publiques. Elle peut également être utilisée par toute personne souhaitant mettre à disposition de l'« Information » dans les conditions définies par la présente licence
66+
67+
La France est dotée d'un cadre juridique global visant à une diffusion spontanée par les administrations de leurs informations publiques afin d'en permettre la plus large réutilisation.
68+
69+
Le droit de la « Réutilisation » de l'« Information » des administrations est régi par le code des relations entre le public et l'administration (CRPA).
70+
71+
Cette licence facilite la réutilisation libre et gratuite des informations publiques et figure parmi les licences qui peuvent être utilisées par l'administration en vertu du décret pris en application de l'article L.323-2 du CRPA.
72+
73+
Etalab est la mission chargée, sous l'autorité du Premier ministre, d'ouvrir le plus grand nombre de données publiques des administrations de l'État et de ses établissements publics. Elle a réalisé la Licence Ouverte pour faciliter la réutilisation libre et gratuite de ces informations publiques, telles que définies par l'article L321-1 du CRPA.
74+
75+
Cette licence est la version 2.0 de la Licence Ouverte.
76+
77+
Etalab se réserve la faculté de proposer de nouvelles versions de la Licence Ouverte. Cependant, les « Réutilisateurs » pourront continuer à réutiliser les informations qu'ils ont obtenues sous cette licence s'ils le souhaitent.

README.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Modèle de dépôt Github pour les standards CNIG
2+
3+
> [!IMPORTANT]
4+
> **Attention** : Le modèle de fichier README débute après ce paragraphe. Dans la suite,
5+
>
6+
> * toutes les consignes en citation, comme cette ligne, doivent être supprimées,
7+
> * tout ce qui est <mark>_surligné_</mark> doit être remplacé.
8+
>
9+
> Vous trouverez l'ensemble des consignes et conseils pour utiliser ce modèle de dépôt sur [cette page de la documentation](https://app.gitbook.com/o/w6D6SnLwCXQaMMSzcTvp/s/weZQRU1RV5So9WzNyxlW/~/changes/19/la-fabrique-des-standards/realisation-du-standard/utiliser-le-modele-de-depot-github).
10+
11+
---
12+
<!-- Supprimer les trois tirets précédents (qui insèrent une ligne) -->
13+
14+
# Standard <mark>_Nom_</mark>
15+
16+
<!-- Indiquer le nom du standard à la place de <mark>_Nom_</mark>. Le texte entre les balises "<mark>_" et "_</mark>" apparaît en italique surligné et doit être remplacé dans ce modèle -->
17+
18+
> _Insérer une description du standard et des données concernées en quelques lignes. Ici comme dans la suite, il est recommandé de réutiliser le contenu du mandat du GT ou d'autres documents déjà rédigés. Voici plusieurs exemples pour vous inspirer dans la rédaction :_
19+
>
20+
> * _[standard des opération d'aménagement](https://github.com/cnigfr/schema-operations-amenagement/)_
21+
> * _[standard risques](https://github.com/cnigfr/Geostandards-Risques)._
22+
>
23+
> _Afin de clarifier la lecture de cette description sur le site schema.data.gouv, préciser ici lorsque le standard n'est pas accompagné d'un schéma sur schema.data.gouv:_
24+
>
25+
> [!TIP]
26+
> Ce standard CNIG ne possède pas de schéma de données directement accessible sur schema.data.gouv.fr.
27+
28+
Davantage de documentation peut être trouvée sur le site du CNIG au lien suivant : <mark>_insérer le lien vers la page du GT_</mark>.
29+
30+
> Insérer une (ou plusieurs) image(s) pour illustrer la thématique en remplaçant le logo du CNIG ci-dessous.
31+
<!-- Pour remplacer le logo du CNIG, suivre le modèle "![texte alternatif](lien vers l'image) Les images peuvent être chargées sur le dépôt Github dans un dossier image -->
32+
![logo du CNIG à remplacer par l'image du standard](https://cnig.gouv.fr/IMG/png/cnig2022_geolocalise-petit.png)
33+
34+
## Contexte
35+
36+
> _Décrire le contexte dans lequel le schéma a été élaboré. Il peut être utile de renvoyer ici vers la page du GT CNIG où la documentation du standard correspondant peut être trouvée._
37+
38+
## Cadre juridique
39+
40+
> _Citer les textes liés aux données sur lesquelles porte le schéma. Même lorsque l'utilisation du schéma n'est pas mentionnée dans les textes, il peut être utile de faire référence ici aux lois, décrets, arrêtés portant spécifiquement sur les données, leurs conditions de collecte, de partage, etc. Il n'est pas utile de citer les textes plus généraux (portant sur l'open data par exemple)._
41+
42+
## Finalité
43+
44+
> _Les enjeux et objectifs liés à la création du standard doivent être précisés ici._
45+
46+
## Cas d’usage
47+
48+
> _Présenter ici quelques cas d'usage de données conformes au schéma. Ces cas peuvent exister ou être fictifs._
49+
50+
## Organisation du dépôt
51+
52+
* Le dossier [ressources](ressources) contient les documents utiles pour les utilisateurs du standard ;
53+
* Le dossier [groupe_de_travail_CNIG](groupe_de_travail_CNIG) contient les comptes-rendus de réunions et les documents de suivi du groupe de travail ;
54+
* Le dossier [standard](standard) contient le standard ainsi que les documents qui lui sont liés ;
55+
56+
> _A supprimer en l'absence de schéma JSON :_
57+
58+
* Le dossier [schéma](schéma) contient le schéma ainsi que les documents qui lui sont liés.
59+
60+
## Modalités de production des données
61+
62+
> _Dans le cas où la création du standard interviendrait alors que les données sont déjà produites, documenter ici comment leur production a lieu. Dans le cas contraire, cette partie peut être supprimée._
63+
64+
### Données ouvertes
65+
66+
> _Dans le cas où les données sont publiées en open data, sinon, cette partie peut être supprimée._
67+
68+
Les données relatives à <mark>_la thématique_</mark> sont ouvertes et sont à la disposition de tous. Elles seront publiées sur <https://www.data.gouv.fr>
69+
70+
## Informations et participation au groupe de travail
71+
72+
### Méthodologie
73+
74+
> _Cette partie peut être laissée telle quelle. Elle vise à expliquer les modalités d'adoption d'un standard par le CNIG._
75+
76+
La méthodologie des groupes de travail du CNIG repose sur une diversité d'approches complémentaires :
77+
78+
* Construire **une gouvernance ouverte** à l'ensemble des parties prenantes, afin de susciter l’adhésion et de créer le cadre favorable à la pérennité du dispositif ;
79+
* Promouvoir et exploiter **les retours d'expériences** afin d'étudier les diversités d'usages et embarquer les acteurs en les positionnant au centre du processus d’alimentation des référentiels géographiques ;
80+
* Privilégier **l’interopérabilité** entre système d'informations à l’échelle nationale pour favoriser le partage et l’échange de données : éviter les doubles stockages, doubles saisies, etc. ;
81+
* S'appuyer sur les **processus éprouvés** de [standardisation du CNIG](http://cnig.gouv.fr/les-standards-cnig-a18959.html#Etapes-de-creation-d-un-Standard-CNIG) et de modélisation suivant [schema.data.gouv.fr](https://guides.etalab.gouv.fr/producteurs-schemas/).
82+
L’objectif est d'aboutir à terme à un consensus qui se traduise en un standard et un modèle de donnée commun pour la thématique considérée.
83+
84+
### Actualisation
85+
86+
> _Préciser ici la phase d'avancement dans laquelle se trouve le standard selon la terminologie de [la Fabrique des standards](https://guides.data.gouv.fr/guides-de-data.gouv.fr/fabrique-des-standards/la-fabrique-des-standards) (rédaction, validation, déploiement, etc.). Il peut être utile de donner des éléments de calendrier comme la date de passage en commission des standards ou devant le conseil plénier._
87+
> _Indiquer également les évolutions prévues ou prévisibles du standard (en fonction des évolutions réglementaires, des retours des utilisateurs, etc.), ainsi que les évolutions prévues pour les bases de données, logiciels, API, etc. concernées par le standard._
88+
89+
Le projet de standard <mark>_thématique_</mark>, puis le standard une fois validé par le CNIG, évoluera en fonction des évolutions réglementaires et de l'expression des besoins de la communauté des utilisateurs.
90+
91+
Les ressources associées et les bases de données correspondantes seront actualisées conformément au standard CNIG <mark>_thématique_</mark>. Les mises à jour de base de données sont effectuées en modifiant le cas échéant les données qui y figurent déjà.
92+
93+
### Comment contribuer
94+
95+
> _Indiquer ici comment contribuer au standard. Par exemple :_
96+
Vous pouvez contribuer au standard en créant une issue sur cette page (il s'agit d'une fonctionnalité permettant de poser une question, de faire une remarque, une suggestion etc. directement sur github, ce qui en informe automatiquement les responsables du dépôt).
97+
98+
### Nous contacter
99+
100+
Pour contacter le GT CNIG <mark>_thématique_</mark>, écrire à l’adresse cnig[at]cnig.fr.
101+
102+
### Licence
103+
104+
Les travaux du GT CNIG <mark>_thématique_</mark> sont réalisés sous [Licence Ouverte Etalab 2.0](https://www.etalab.gouv.fr/licence-ouverte-open-licence/).

exemple-valide.csv

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
id,date_creation,nom,classification
2+
42,2020-02-27,Brouette,Classification A
3+
44,2020-02-25,Pelle,Classification C
4+
45,2020-02-25,Bus,Classification A

groupe_de_travail_CNIG/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Espace du Groupe de travail du CNIG
2+
3+
_Ce dossier est dédié aux travaux du GT du CNIG. Il a vocation à héberger les documents de travail (CR de GT, supports, etc.). Il n'est pas obligatoire de le conserver, notamment si un autre outil que github est utilisé pour le travail collaboratif._

0 commit comments

Comments
 (0)