{
    "$schema": "https://frictionlessdata.io/schemas/table-schema.json",
    "title": "Propositions de Swipe 2027",
    "description": "Une ligne par proposition des candidats à la présidentielle 2027, avec ses sources et le statut de vérification des chiffres.",
    "fields": [
        {
            "name": "id",
            "title": "id",
            "type": "string",
            "description": "Identifiant stable de la proposition. Ne change jamais, même si le texte est corrigé.",
            "constraints": {
                "required": true,
                "unique": true
            }
        },
        {
            "name": "slug",
            "title": "slug",
            "type": "string",
            "description": "Fragment d’adresse de la page publique de la proposition.",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "url_page",
            "title": "url_page",
            "type": "string",
            "description": "Adresse de la page de la proposition sur prometheus-euro.eu.",
            "format": "uri",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "titre",
            "title": "titre",
            "type": "string",
            "description": "Titre court de la proposition, rédigé par PromethEUs.",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "proposition",
            "title": "proposition",
            "type": "string",
            "description": "Énoncé neutre de la proposition, reformulé par PromethEUs (pas une citation).",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "objectif",
            "title": "objectif",
            "type": "string",
            "description": "Objectif poursuivi par la proposition, tel que présenté dans la source."
        },
        {
            "name": "theme_code",
            "title": "theme_code",
            "type": "string",
            "description": "Code du thème.",
            "constraints": {
                "required": true,
                "enum": [
                    "fis",
                    "trav",
                    "soc",
                    "fam",
                    "mig",
                    "sec",
                    "env",
                    "ind",
                    "eur",
                    "def",
                    "inst"
                ]
            }
        },
        {
            "name": "theme",
            "title": "theme",
            "type": "string",
            "description": "Libellé du thème.",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "candidats",
            "title": "candidats",
            "type": "string",
            "description": "Candidat(s) dont le programme ou les déclarations contiennent la proposition, séparés par le caractère « | ». Les noms sont donnés en clair, contrairement à l’interface de test à l’aveugle.",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "nb_candidats",
            "title": "nb_candidats",
            "type": "integer",
            "description": "Nombre de candidats associés à la proposition.",
            "constraints": {
                "required": true,
                "minimum": 1
            }
        },
        {
            "name": "annee_source",
            "title": "annee_source",
            "type": "integer",
            "description": "Année de la source (programme ou annonce). Ce n’est pas la date exacte de publication.",
            "constraints": {
                "required": true,
                "minimum": 2000
            }
        },
        {
            "name": "periode_source",
            "title": "periode_source",
            "type": "string",
            "description": "Libellé de la source : « Programme 2022 », « Programme 2024 », « Annonce 2026 » ou « Programme 2027 ».",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "type_source",
            "title": "type_source",
            "type": "string",
            "description": "Nature de la source déduite du libellé de la période. Les types entretien, discours et vote ne sont pas renseignés dans les données actuelles.",
            "constraints": {
                "required": true,
                "enum": [
                    "programme",
                    "annonce",
                    "non_renseigne"
                ]
            }
        },
        {
            "name": "sources",
            "title": "sources",
            "type": "string",
            "description": "Adresses des sources primaires et de référence consultées, séparées par le caractère « | ».",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "nb_sources",
            "title": "nb_sources",
            "type": "integer",
            "description": "Nombre de sources listées.",
            "constraints": {
                "required": true,
                "minimum": 1
            }
        },
        {
            "name": "types_sources",
            "title": "types_sources",
            "type": "string",
            "description": "Nature de chaque source, dans le même ordre que `sources`, séparées par « | ». Valeurs : programme, annonce, entretien, discours, vote, document_institutionnel, article_presse, agregateur, non_renseigne (source pas encore qualifiée).",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "dates_sources",
            "title": "dates_sources",
            "type": "string",
            "description": "Date de chaque source, dans le même ordre que `sources`, séparées par « | ». Format AAAA, AAAA-MM ou AAAA-MM-JJ selon la précision connue. Vide pour une source non datée ; vide si aucune source n’est datée."
        },
        {
            "name": "statut_verification_code",
            "title": "statut_verification_code",
            "type": "string",
            "description": "Code du statut de la vérification des chiffres.",
            "constraints": {
                "required": true,
                "enum": [
                    "ok",
                    "nu",
                    "est",
                    "vague",
                    "fix"
                ]
            }
        },
        {
            "name": "statut_verification",
            "title": "statut_verification",
            "type": "string",
            "description": "Libellé du statut de la vérification des chiffres.",
            "constraints": {
                "required": true
            }
        },
        {
            "name": "note_contexte",
            "title": "note_contexte",
            "type": "string",
            "description": "Note de contexte rédigée par PromethEUs : ce que prévoit la source, chiffres annoncés."
        },
        {
            "name": "verification_chiffres",
            "title": "verification_chiffres",
            "type": "string",
            "description": "Résultat de la vérification des chiffres, rédigé par PromethEUs."
        },
        {
            "name": "limites_connues",
            "title": "limites_connues",
            "type": "string",
            "description": "Ce que la source ne précise pas (montant, périmètre, calendrier). Vide si rien n’est signalé."
        },
        {
            "name": "date_mise_a_jour",
            "title": "date_mise_a_jour",
            "type": "date",
            "description": "Date de dernière mise à jour de la fiche (AAAA-MM-JJ).",
            "constraints": {
                "required": true
            }
        }
    ],
    "missingValues": [
        ""
    ],
    "primaryKey": "id"
}
