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

Service liste pays #139

Open
ChristopheYon opened this issue Oct 11, 2024 · 1 comment
Open

Service liste pays #139

ChristopheYon opened this issue Oct 11, 2024 · 1 comment
Assignees

Comments

@ChristopheYon
Copy link

Service de liste

Pays

Requête

Méthode Requête Description
GET /pays Récupérer les informations concernant les pays

Paramètres

Paramètres Description Type
date La requête renvoie tous les pays actifs à la date donnée. Par défaut, c’est la date courante. Date

Exemples de requête

/geo/pays

/geo/pays?date=1950-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 s’il a été supprimé

Exemple de réponse en XML

<Pays>
	<Pays code="99100" uri="http://id.insee.fr/geo/pays/b7e3f0c9-b653-4a3e-904a-de63b80e108b">
		<Intitule>France</Intitule>
		<IntituleEntier>République française</IntituleEntier>
		<Iso3166alpha2>FR</Iso3166alpha2>
		<Iso3166alpha3>FRA</Iso3166alpha3>
		<Iso3166num>250</Iso3166num>
		<DateCreation>1943-01-01</DateCreation>
	</Pays>
	<Pays code="99101" uri="http://id.insee.fr/geo/pays/2ece43e9-b813-4e66-8285-807065c7c618">
		<Intitule>Danemark</Intitule>
		<IntituleEntier>Royaume du Danemark</IntituleEntier>
		<Iso3166alpha2>DK</Iso3166alpha2>
		<Iso3166alpha3>DNK</Iso3166alpha3>
		<Iso3166num>208</Iso3166num>
		<DateCreation>1943-01-01</DateCreation>
	</Pays>
...
	<Pays code="99517" uri="http://id.insee.fr/geo/pays/c6b48a2a-b7bf-45b5-a43e-0637cc030e7c">
		<Intitule>Palaos</Intitule>
		<IntituleEntier>République des Palaos</IntituleEntier>
		<Iso3166alpha2>PW</Iso3166alpha2>
		<Iso3166alpha3>PLW</Iso3166alpha3>
		<Iso3166num>585</Iso3166num>
		<DateCreation>1994-10-01</DateCreation>
	</Pays>
</Pays>

Exemple de réponse en JSON

[
	{
		"type": "Pays",
		"code": "99100",
		"uri": "http://id.insee.fr/geo/pays/b7e3f0c9-b653-4a3e-904a-de63b80e108b",
		"intitule": "France",
		"IntituleEntier": "République française",
		"Iso3166alpha2": "FR",
		"Iso3166alpha": "FRA",
		"Iso3166num": "250",
		"dateCreation": "1943-01-01"
	},
	{
		"type": "Pays",
		"code": "99101",
		"uri": "http://id.insee.fr/geo/pays/2ece43e9-b813-4e66-8285-807065c7c618",
		"intitule": "Danemark",
		"IntituleEntier": "Royaume du Danemark",
		"Iso3166alpha2": "DK",
		"Iso3166alpha": "DNK",
		"Iso3166num": "208",
		"dateCreation": "1943-01-01"
	},
...
	{
		"type": "Pays",
		"code": "99517",
		"uri": "http://id.insee.fr/geo/pays/baa15226-ddd9-41be-a6f1-cbec54cdefe4",
		"intitule": "Palaos",
		"IntituleEntier": "République des Palaos",
		"Iso3166alpha2": "PW",
		"Iso3166alpha": "PLW",
		"Iso3166num": "585",
		"dateCreation": "1994-10-01"
	}
]

Exemple de requête SPARQL

PREFIX igeo: <http://rdf.insee.fr/def/geo#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?uri ?type ?code ?nom ?nomLong ?iso3166alpha2 ?iso3166alpha3 ?iso3166num ?dateCreation ?dateSuppression
WHERE {
	?s a igeo:Pays ;
		a ?typeRDF ;
		igeo:codeINSEE ?code ;
		igeo:nom ?nom .
	OPTIONAL {?s igeo:nomLong ?nomLong .}
	OPTIONAL {?s igeo:codeIso3166alpha2 ?iso3166alpha2 .}
	OPTIONAL {?s igeo:codeIso3166alpha3 ?iso3166alpha3 .}
	OPTIONAL {?s igeo:codeIso3166num ?iso3166num .}
	BIND(STR(?typeRDF) AS ?type).
	BIND(STR(?s) AS ?uri).
	OPTIONAL {?s ^igeo:creation/igeo:date ?dateCreation }
	OPTIONAL {?s ^igeo:suppression/igeo:date ?dateSuppression }
	FILTER (!BOUND(?dateCreation) || ?dateCreation <= NOW() )
	FILTER (!BOUND(?dateSuppression) || ?dateSuppression > NOW() )
}
ORDER BY ?code

Avec le paramètre date :

PREFIX igeo: <http://rdf.insee.fr/def/geo#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?uri ?type ?code ?nom ?nomLong ?iso3166alpha2 ?iso3166alpha3 ?iso3166num ?dateCreation ?dateSuppression
WHERE {
	?s a igeo:Pays ;
		a ?typeRDF ;
		igeo:codeINSEE ?code ;
		igeo:nom ?nom .
	OPTIONAL {?s igeo:nomLong ?nomLong .}
	OPTIONAL {?s igeo:codeIso3166alpha2 ?iso3166alpha2 .}
	OPTIONAL {?s igeo:codeIso3166alpha3 ?iso3166alpha3 .}
	OPTIONAL {?s igeo:codeIso3166num ?iso3166num .}
	BIND(STR(?typeRDF) AS ?type).
	BIND(STR(?s) AS ?uri).
	OPTIONAL {?s ^igeo:creation/igeo:date ?dateCreation }
	OPTIONAL {?s ^igeo:suppression/igeo:date ?dateSuppression }
	FILTER(!BOUND(?dateCreation) || ?dateCreation <= '1950-01-01'^^xsd:date)
	FILTER(!BOUND(?dateSuppression) || ?dateSuppression > '1950-01-01'^^xsd:date)
}
ORDER BY ?code
@ChristopheYon
Copy link
Author

Le service est globalement OK (bonne structure de requête et les valeurs renvoyées sont OK) mais il y a 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)
  • Dans la sérialisation XML, le nœud racine s'appelle "Countries", il faudrait l'appeler "Pays" ou si ça gêne avec les nœuds en dessous, "Territoires" comme quand on a différents types de territoires
  • Toujours dans la sérialisation XML, chaque nœud s'appelle "Liste de pays", ce qui est incorrect (un parseur croit que le nœud s'appelle "Liste" et tombe en erreur parce que les attributs "de" et "pays" n'ont pas de valeur). Il faudrait avoir "Pays"

Tous ces points se retrouvent également dans les autres services renvoyant des pays, donc je recopie dans les cartes correspondantes (mais je ne doute pas qu'en les réglant une fois, ça réglera pour toutes)

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

When branches are created from issues, their pull requests are automatically linked.

2 participants