Skip to content

Service précédents pays #142

Open
Open

Description

@ChristopheYon

Services territoires précédents

Pays

Requête

Méthode Requête Description
GET /pays/{code}/precedents Récupérer les informations concernant les pays qui précèdent le pays {code}

Paramètres

Paramètres Description Type
date Filtre pour préciser le pays {code} de départ. Par défaut, c’est la date courante qui est utilisée. Date

Exemples de requête

/geo/pays/99309/precedents

/geo/pays/99309/precedents?date=1963-01-01

Champs de la réponse

Champ Description
URI URI du pays
Type « Pays »
Code Code Insee du pays
Intitule Nom du pays
IntituleEntier Nom du pays en forme longue
Iso3166alpha2 Code ISO 3166-1 alpha-2 du pays
Iso3166alpha3 Code ISO 3166-1 alpha-3 du pays
Iso3166num Code ISO 3166-1 numérique du pays
DateCreation Date de création du pays
DateSuppression Date de suppression du pays

Les codes ISO étant surtout précisés pour les pays actifs, ils sont souvent absents des réponses à ce service.

Exemple de réponse en XML

<Pays>
	<Pays code="99309" uri="http://id.insee.fr/geo/pays/aed778dc-3f9e-467d-a7c2-c875a12cb44d">
		<Intitule>Tanganyika</Intitule>
		<IntituleEntier>République du Tanganyika</IntituleEntier>
		<DateCreation>1962-12-09</DateCreation>
		<DateSuppression>1964-04-26</DateSuppression>
	</Pays>
	<Pays code="99362" uri="http://id.insee.fr/geo/pays/3b5c07e0-bc4a-480d-9b29-ef04e1fb775d">
		<Intitule>Zanzibar</Intitule>
		<IntituleEntier>République populaire de Zanzibar</IntituleEntier>
		<DateCreation>1963-12-10</DateCreation>
		<DateSuppression>1964-04-26</DateSuppression>
	</Pays>
</Pays>

Exemple de réponse en JSON

[
	{
		"type": "Pays",
		"code": "99309",
		"uri": "http://id.insee.fr/geo/pays/aed778dc-3f9e-467d-a7c2-c875a12cb44d",
		"intitule": "Tanganyika",
		"IntituleEntier": "République du Tanganyika",
		"dateCreation": "1962-12-09",
		"dateSuppression": "1962-12-09",
	},
	{
		"type": "Pays",
		"code": "99362",
		"uri": "http://id.insee.fr/geo/pays/3b5c07e0-bc4a-480d-9b29-ef04e1fb775d",
		"intitule": "Zanzibar",
		"IntituleEntier": "République populaire de Zanzibar",
		"dateCreation": "1963-12-10",
		"dateSuppression": "1964-04-26"
	},
]

Exemple de requête SPARQL

PREFIX :<http://rdf.insee.fr/def/geo#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?uri ?type ?code ?nom ?nomLong ?iso3166alpha2 ?iso3166alpha3 ?iso3166num ?dateCreation ?dateSuppression
WHERE {
	{
		# Sélection de la ressource d'origine (et de son événement créateur)
		SELECT DISTINCT ?origine ?evenement (?dateCreationOrigine AS ?dateSuppression)
		WHERE {
			?origine a :Pays ;
				:codeINSEE '99309' .
			?evenement :creation ?origine;
				:date ?dateCreationOrigine.
			OPTIONAL {?origine (^:suppression/:date) ?dateSuppressionOrigine.}
			FILTER(!BOUND(?dateCreationOrigine) || xsd:dateTime(?dateCreationOrigine) <= NOW())
			FILTER(!BOUND(?dateSuppressionOrigine) || xsd:dateTime(?dateSuppressionOrigine) > NOW())
		}
	}
	?evenement :suppression ?ressource .
	?ressource a ?typeRDF ;
		a :Pays ;
		:codeINSEE ?code ;
		:codeArticle ?typeArticle;
		:nom ?nom.
		OPTIONAL {?ressource :nomLong ?nomLong .}
		OPTIONAL {?ressource :codeIso3166alpha2 ?iso3166alpha2 .}
		OPTIONAL {?ressource :codeIso3166alpha3 ?iso3166alpha3 .}
		OPTIONAL {?ressource :codeIso3166num ?iso3166num .}
		BIND(STR(?typeRDF) AS ?type).
		BIND(STR(?ressource) AS ?uri).
		OPTIONAL { ?ressource (^:creation/:date) ?dateCreation.}
}
ORDER BY ?code

Avec le paramètre date :

PREFIX :<http://rdf.insee.fr/def/geo#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?uri ?type ?code ?nom ?nomLong ?iso3166alpha2 ?iso3166alpha3 ?iso3166num ?dateCreation ?dateSuppression
WHERE {
	{
		# Sélection de la ressource d'origine (et de son événement créateur)
		SELECT DISTINCT ?origine ?evenement (?dateCreationOrigine AS ?dateSuppression)
		WHERE {
			?origine a :Pays ;
				:codeINSEE '99309' .
			?evenement :creation ?origine;
				:date ?dateCreationOrigine.
			OPTIONAL {?origine (^:suppression/:date) ?dateSuppressionOrigine.}
			FILTER(!BOUND(?dateCreationOrigine) || ?dateCreationOrigine <= '1963-01-01'^^xsd:date)
			FILTER(!BOUND(?dateSuppressionOrigine) || ?dateSuppressionOrigine > '1963-01-01'^^xsd:date)
		}
	}
	?evenement :suppression ?ressource .
	?ressource a ?typeRDF ;
		a :Pays ;
		:codeINSEE ?code ;
		:codeArticle ?typeArticle;
		:nom ?nom.
		OPTIONAL {?ressource :nomLong ?nomLong .}
		OPTIONAL {?ressource :codeIso3166alpha2 ?iso3166alpha2 .}
		OPTIONAL {?ressource :codeIso3166alpha3 ?iso3166alpha3 .}
		OPTIONAL {?ressource :codeIso3166num ?iso3166num .}
		BIND(STR(?typeRDF) AS ?type).
		BIND(STR(?ressource) AS ?uri).
		OPTIONAL { ?ressource (^:creation/:date) ?dateCreation.}
}
ORDER BY ?code

Activity

  1. ChristopheYon commented on Feb 21, 2025

    @ChristopheYon
    Author

    Le service ne renvoie pas ce qu'il devrait, le paramètre date n'est pas correctement utilisé.
    Dans l'exemple du Swagger (/geo/pays/99309/precedents?date=1963-01-01), ce qu'on veut c'est partir du territoire 99309 tel qu'il était le 1er janvier 1963 (ie la République du Tanganyka) et récupérer le ou les pays qui l'on précédé directement (en l'occurrence, le Royaume du Tanganyka, avec le même code 99309)
    Tel qu'il est actuellement, le service semble renvoyer des territoires existants à la date donnée en paramètre, ce n'est pas ce que l'on veut.
    Par ailleurs, pour le Swagger, ce sera probablement plus parlant si on en valeur d'exemple une date postérieure à 1965 histoire de renvoyer Tanganyka et Zanzibar comme prédécesseurs de la Tanzanie.

    Comme pour les autres services, il y a aussi quelques problèmes de forme :

    • le type doit être "Pays" et pas "http://rdf.insee.fr/def/geo#Pays" (à l'instar de ce qu'on fait pour les autres types)
    • le champ contenant le nom du pays doit s'appeler "intitule" et pas "nom" (pour être cohérent avec les autres services, même si ça ne l'est pas vraiment avec le RDF...)
    • le champ contenant le nom développé doit s'appeler "intituleComplet" et pas "nomLong" (NB: dans la spécification, j'avais mis "intituleEntier" mais comme on a déjà un "intituleComplet" pour les intercommunalités, on va limiter le nombre de champs différents, sauf si ça pose problème)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions