Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Pierlou authored May 17, 2023
0 parents commit afb5503
Show file tree
Hide file tree
Showing 9 changed files with 290 additions and 0 deletions.
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Publication d'une nouvelle version d'un schéma

Vous publiez une nouvelle version d'un schéma ?
Pensez à réaliser les actions suivantes.

- [ ] Mettre à jour les fichiers d'exemples
- [ ] Mettre à jour le champ `version`
- [ ] Mettre à jour le champ `lastModified`
- [ ] Changer les liens vers les fichiers d'exemples présents dans `schema.json` et `README.md`
- [ ] Mettre à jour le fichier `CHANGELOG.md` en incluant une description de la version
- [ ] Merger cette pull-request
- [ ] Publier un nouveau tag et une nouvelle version
- [ ] Prévenir les utilisateurs de ce schéma
28 changes: 28 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Vérification du respect des spécifications

on:
push:

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installation Python 3.7
uses: actions/setup-python@v1
with:
python-version: '3.7'
- name: Cache pip
uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Installation des dépendances
run: pip install -r requirements.txt
- name: Vérification du schéma et des fichiers d'exemples
run: |
frictionless validate --type schema schema.json
frictionless validate --schema schema.json exemple-valide.csv
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
venv
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Changements

Ce fichier répertorie les changements entre différentes versions d'un schéma.

## Version 0.1.1 - 2019-05-06

- Clarification de la description du champ `date_creation`

## Version 0.1.0 - 2018-06-29

Publication initiale.
77 changes: 77 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# LICENCE OUVERTE 2.0 / OPEN LICENCE 2.0

## « Réutilisation » de l'« Information » sous cette licence

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.

**Le « Réutilisateur » est libre de réutiliser l'« Information » :**

- de la reproduire, la copier,
- de l‘adapter, la modifier, l‘extraire et la transformer, pour créer des « Informations dérivées », des produits ou des services,
- de la communiquer, la diffuser, la redistribuer, la publier et la transmettre,
- de l'exploiter à titre commercial, par exemple en la combinant avec d'autres informations, ou en l'incluant dans son propre produit ou application.

**Sous réserve de :**

- 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.

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é.
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 »*.

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 ».

## « Données à caractère personnel »

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.

## « Droits de propriété intellectuelle »

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.

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.

## Responsabilité

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 ».

Le « Réutilisateur » est seul responsable de la « Réutilisation » de l'« Information ».

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.

## Droit applicable

La présente licence est régie par le droit français.

## Compatibilité de la présente licence

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.

## Définitions

Sont considérés, au sens de la présente licence comme :

- 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
- L'**« Information »** :
- 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 ;
- toute information mise à disposition par toute personne selon les termes et conditions de la présente licence.
- La **« Réutilisation »** : l'utilisation de l'« Information » à d'autres fins que celles pour lesquelles elle a été produite ou reçue.
- Le **« Réutilisateur »** : toute personne qui réutilise les « Informations » conformément aux conditions de la présente licence.
- 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.
- 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.
- 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…).

## À propos de cette licence

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

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.

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).

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.

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.

Cette licence est la version 2.0 de la Licence Ouverte.

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.
64 changes: 64 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Template de départ pour Table Schema

Ce dépôt contient les fichiers nécessaires pour démarrer la création d'un dépôt pour un schéma [Table Schema](https://specs.frictionlessdata.io/table-schema/).

## Utiliser ce template

- Si vous créez votre dépôt sur GitHub, il vous suffit d'appuyer sur le bouton vert "Use this template". Consultez [la documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template) pour plus d'infos ;
- Si votre projet sera hébergé ailleurs (par exemple Gitlab), vous pouvez cloner ce répertoire ou télécharger les fichiers correspondants. Utilisez le bouton "Clone or download".

## Fichiers disponibles

Ce dépôt contient un ensemble de fichiers utiles pour un dépôt d'un schéma [Table Schema](https://specs.frictionlessdata.io/table-schema/).

- [`CHANGELOG.md`](CHANGELOG.md) contient la liste des changements entre les différentes versions de votre schéma ;
- [`exemple-valide.csv`](exemple-valide.csv) est un fichier CSV d'exemple conforme par rapport au schéma décrit dans `schema.json` ;
- [`LICENSE.md`](LICENSE.md) est le fichier de licence du dépôt. Nous recommandons d'utiliser la [Licence Ouverte](https://www.etalab.gouv.fr/licence-ouverte-open-licence), cette licence est recommandée par l'administration française pour le partage de données et de documents ;
- [`README.md`](README.md) est le fichier que vous lisez actuellement. À terme, il devra présenter votre schéma ;
- [`requirements.txt`](requirements.txt) liste les dépendances Python nécessaires pour effectuer des tests en intégration continue sur votre dépôt ;
- [`schema.json`](schema.json) est le schéma au format Table Schema.

### Intégration continue

Ce dépôt est configuré pour utiliser de l'intégration continue, si vous utilisez GitHub. À chaque commit, une suite de tests sera lancée via [GitHub Actions](https://github.com/features/actions) afin de vérifier :

- que votre schéma est valide à la spécification Table Schema ;
- que vos fichiers d'exemples sont conformes au schéma.

Si vous n'utilisez pas GitHub, vous pouvez lancer ces tests sur votre machine ou sur un autre service d'intégration continue comme Gitlab CI, Jenkins, Circle CI, Travis etc. Consultez la configuration utilisée dans [`.github/workflows/test.yml`](.github/workflows/test.yml).

Localement, voici la procédure à suivre pour installer l'environnement de test et lancer les tests :

```bash
# Création d'un environnement virtuel en Python 3
python3 -m venv venv
source venv/bin/activate

# Installation des dépendances
pip install -r requirements.txt

# Test de la validité du schéma
frictionless validate --type schema schema.json

# Test de la conformité des fichiers d'exemples
frictionless validate --schema schema.json exemple-valide.csv
```

## Étapes à suivre

Nous détaillons ci-dessous les étapes que nous vous conseillons de suivre après avoir créé votre dépôt Git, tout en utilisant les fichiers d'exemples.

- [ ] Décrire votre schéma dans le fichier `schema.json` en respectant la spécification Table Schema. Le fichier d'exemple comprend des valeurs d'exemples pour toutes les métadonnées possibles. Notez que les champs d'exemple ne comprennent qu'une petite partie des types, formats et contraintes disponibles, référez-vous à [la documentation](https://specs.frictionlessdata.io/table-schema/#types-and-formats) pour toutes les valeurs possibles. Si certaines métadonnées ne sont pas nécessaires pour votre projet, vous pouvez les supprimer. Pour vérifier que votre schéma est conforme, vous pouvez utiliser l'outil [tableschema](https://pypi.org/project/tableschema/) en ligne de commande : `tableschema validate schema.json`
- [ ] Modifier le fichier d'exemple CSV avec des données conforme à votre schéma. L'outil [frictionless](https://pypi.org/project/frictionless/) permet de vérifier que vos fichiers sont conformes au schéma en ligne de commande `frictionless validate --schema schema.json exemple-valide.csv`
- [ ] Modifier le fichier [`CHANGELOG.md`](CHANGELOG.md) pour indiquer la publication initiale
- [ ] Modifier le fichier [`README.md`](README.md), en supprimant tout son contenu tout d'abord. Au sein de plusieurs paragraphes, vous indiquerez le contexte, les modalités de production des données, le cadre juridique, la finalité, les cas d’usage etc. Consultez plusieurs schémas sur [schema.data.gouv.fr](https://schema.data.gouv.fr) pour découvrir quelles informations sont pertinentes à indiquer
- [ ] Vérifier que la licence ouverte vous convient. Si vous devez utiliser une autre licence, modifiez le fichier [`LICENSE.md`](LICENSE.md) et indiquez la licence dans le fichier [`schema.json`](schema.json), dans la clé `licenses`


## Documentation

Pour vous aider dans la construction de votre dépôt, nous vous recommandons de vous référer à :

- [Le guide à destination des producteurs de schéma](https://guides.etalab.gouv.fr/producteurs-schemas/)
- [La documentation de schema.data.gouv.fr](https://schema.data.gouv.fr)
- [La spécification Table Schema](https://specs.frictionlessdata.io/table-schema/)
4 changes: 4 additions & 0 deletions exemple-valide.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
id,date_creation,nom,classification
42,2020-02-27,Brouette,"[""Classification A""]"
44,2020-02-25,Pelle,"[""Classification A"",""Classification B"",""Classification C""]"
45,2020-02-25,Bus,"[""Classification A"",""Classification C""]"
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
frictionless==4.40.8
91 changes: 91 additions & 0 deletions schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
{
"$schema":"https://specs.frictionlessdata.io/schemas/table-schema.json",
"name":"objets-importants",
"title":"Schéma des objets importants",
"description":"Spécification du fichier d'échange relatif aux objets importants gérés par les collectivités.",
"keywords":[
"objets",
"autre-tag"
],
"countryCode":"FR",
"homepage":"https://github.com/mon-orga/schema-objets-importants",
"path":"https://github.com/mon-orga/schema-objets-importants/raw/v0.1.1/schema.json",
"image":"https://github.com/mon-orga/schema-objets-importants/raw/v0.1.1/irve.png",
"licenses":[
{
"title":"Etalab Licence Ouverte 2.0",
"name":"etalab-2.0",
"path":"https://spdx.org/licenses/etalab-2.0.html"
}
],
"resources":[
{
"title":"Fichier valide (CSV)",
"name":"exemple-valide-csv",
"path":"https://github.com/mon-orga/schema-objets-importants/raw/v0.1.1/exemple-valide.csv"
}
],
"sources":[
{
"title":"Arrêté du 12 janvier 2017 relatif aux objets importants",
"path":"https://beta.legifrance.gouv.fr/codes/id/LEGISCTA000031367685/2020-05-25"
}
],
"created":"2018-06-29",
"lastModified":"2019-05-06",
"version":"0.1.1",
"contributors":[
{
"title":"John Smith",
"email":"[email protected]",
"organisation":"Etalab",
"role":"author"
},
{
"title":"Jane Doe",
"email":"[email protected]",
"organisation":"Association très importante",
"role":"contributor"
}
],
"fields":[
{
"name":"id",
"description":"Un identifiant unique de l'objet.",
"example":42,
"type":"integer",
"constraints":{
"required":true,
"minimum":1
}
},
{
"name":"date_creation",
"description":"La date de création de l'objet, au format ISO 8601 AAAA-MM-DD.",
"example":"2020-02-27",
"type":"date",
"constraints":{
"required":true
}
},
{
"name":"nom",
"description":"Le nom de l'objet.",
"example":"Brouette",
"type":"string",
"constraints":{
"required":true
}
},
{
"name":"classification",
"description":"Classification de l'objet.",
"example":"Classification A",
"type":"string",
"constraints": {
"enum": ["Classification A", "Classification B", "Classification C"]
}
}
],
"primaryKey":"id"
}

0 comments on commit afb5503

Please sign in to comment.