belgif / fedvoc

Federal Vocabularies
6 stars 0 forks source link

Auth.source Country-services #15

Closed MarcBruyland closed 1 year ago

MarcBruyland commented 3 years ago

Context

BOSA is going to provide REST services besides already existing SOAP services.

Datamodel of the A.S.

CountryServices

REST URLs proposed to REST styleguide workgroup:

GET /REST/countries/v1/isoCodes?referenceDate= GET /REST/countries/v1/nisCodes?referenceDate= 

GET /REST/nationalities/v1/nationality?isoAlpha2= , GET /REST/nationalities/v1/nationality?isoAlpha3=, GET /REST/nationalities/v1/nationality?isoNum3=, GET /REST/nationalities/v1/nationality?nisNum3= GET /REST/nationalities/v1/nationalities?referenceDate= GET /REST/nationalities/v1/history?referenceDate=&isoAlpha3= 

GET /REST/addressCountries/v1/addressCountry?isoAlpha2= , GET /REST/addressCountries/v1/addressCountry?isoAlpha3= , GET /REST/addressCountries/v1/addressCountry?isoNum3= , GET /REST/addressCountries/v1/addressCountry?nisNum3= , GET /REST/addressCountries/v1/addressCountries?referenceDate= GET /REST/addressCountries/v1/history?referenceDate=&isoAlpha3= 

GET /REST/placeCountries/v1/placeCountry?isoAlpha2= , GET /REST/placeCountries/v1/placeCountry?isoAlpha3= , GET /REST/placeCountries/v1/placeCountry?isoNum3= , GET /REST/placeCountries/v1/placeCountry?nisNum3= , GET /REST/placeCountries/v1/placeCountries?referenceDate= GET /REST/placeCountries/v1/history?referenceDate=&isoAlpha3=

Today in standard vocabulary:

countryIsoCode : Country represented by an ISO 3166-1 alpha-2 code countryNisCode: Country represented by a NIS code countryWithHistoryIsoCode: Country represented by an ISO 3166-1 alpha-2 (current country) or ISO 3166-3 alpha-4 (former country) code. geographicName: A proper noun applied to a spatial object.

Today in draft vocabulary:

Country: A country is a political state, nation, or territory which is controlled. It is often referred to as the land of an individual's birth, residence, or citizenship. territory: Territory can refer to a country or a part of a country (existing or not) CountryIsoCode: The conceptscheme "CountryIsoCode" contains countries represented by an ISO 3166-1 alpha-2 code. CountryWithHistoryIsoCode: The conceptscheme "CountryWithHistoryIsoCode" contains countries represented by an ISO 3166-1 alpha-2 (current country) or ISO 3166-3 alpha-4 (former country) code. TerritoryOfAddress: "ConceptScheme for territories related to addresses. Authorized concepts come from ISO-3166-1 alpha2 (recommended) and from NIS (only in case information regarding territory recognition by the Belgian state is relevant)" TerritoryOfNationality: "ConceptScheme for nationalities. Authorized concepts come from ISO-3166-1 alpha3 (recommended) and from NIS (only in case information regarding territory recognition by the Belgian state is relevant)" TerritoryOfPlace: "ConceptScheme for territories related to places (e.g. place of birth, place of death). Authorized concepts come from ISO-3166-1 alpha2 (recommended) and from NIS (only in case information regarding territory recognition by the Belgian state is relevant)"

Missing in federal vocabulary:

referenceDate  isoAlpha2 isoAlpha3 isoNum3 nisNum3

pvdbosch commented 3 years ago

Some first (incomplete) feedback:

smals-vea commented 3 years ago

Before validate this API, it will important to have the logical data model and compare this with the swagger file

smals-vea commented 3 years ago

AS IS Statbel: https://statbel.fgov.be/fr/propos-de-statbel/methodologie/classifications/codes-pays

Fichier ISO alpha 2: 294 rows Fichier ISO alpha3: 296 rows Fichier ISO NUM3: 295 rows Fichier NIS num3: 320 rows (de 101 à 694 + 999, dont qqs doublons) Je pensais qu'il y avait une correspondance 1-1 entre ISO alpha2, alpha3 et num3, ce n'est pas le cas, est-ce normal?

Dans le fichier PLACE, 355 rows, dont 27 rows n'ont pas d'ISO alpha2 mais ont un NIS et 34 rows n'ont pas de NIS mais ont un ISO alpha2

Dans le fichier ADDRESS, 273 rows, dont 20 rows n'ont pas d'ISO alpha2 mais ont un NIS et 23 rows n'ont pas de NIS mais ont un ISO alpha2

Dans le fichier NATIONALITIES, 362 rows, dont 2 rows n'ont pas d'ISO alpha3 mais ont un NIS (Kosovo 153, Congo 362) et 1 row n'a pas de NIS mais a un ISO alpha3 (VDR North Vietnam)

AS IS KSZ/RN/Smals

Fichier NIS num 3 : 475 rows:

TO BE Il y a donc une petite trentaine de codes ISO qui n'ont pas de NIS, si on leur assignait un NIS, on pourrait avoir un identifiant unique NIScode pour identifier les adresses, les historiques et les nationalités. (Sachant qu'il y a environ 420 NISnum encore disponible)

AN AQ AW AX BQ BQ BV CC CW CX FO FX GG GS HM IM IO JE JT MF MI MP NF NQ NT PU SJ SK SX TF UM VD WK YT

Qu'en pensez-vous ?

pvdbosch commented 3 years ago

Before validate this API, it will important to have the logical data model and compare this with the swagger file

I agree that the semantics should be clear first:

Then there's also the modelling of mapping ISO<>NIS code:

Only when this is clear, the REST API can be defined with Swagger/OpenAPI

There are also data quality issues, but they don't need to block the definition of the API.

smals-vea commented 3 years ago

Lors de la réunion du 30/07/2021, il a été décidé de valider (FedVoc Standard)

par contre, de laisser en Draft en attendant les décisions du groupe de travail des Affaires étrangères (prévu en 09/2021)

@MarcBruyland , peux-tu déplacer le concept countryIsoCode vers Draft ?

Enfin, le concept "referenceDate" ne sera pas ajouté au FedVoc car trop spécifique à un contexte.

pvdbosch commented 3 years ago

For CountryIsoCode ( = the alpha 2 code), I don't remember if we discussed it specifically. Depending on the outcome of the working group, we may decide to recommend it to use in all international contexts (nationality, address, ...) where a currently existing country is needed by default, rather than the num-3 or alpha-3 equivalents. I think this is why the "Alpha2" wasn't put explicit in the name, but we would consider to rename it to CountryIsoAlpha2Code as well.

MarcBruyland commented 2 years ago

New proposal for the REST services:

GET /countries/v1/isoCodes?referenceDate= GET /countries/v1/nisCodes?referenceDate=

GET /countries/v1/nationalities?isoAlpha2= , GET /countries/v1/nationalities?isoAlpha3=, GET /countries/v1/nationalities?isoNum3=, GET /countries/v1/nationalities?nisNum3= GET /countries/v1/nationalities?referenceDate= GET /countries/v1/nationalities/history?referenceDate=&isoAlpha3=

GET /countries/v1/addressCountries?isoAlpha2= , GET /countries/v1/addressCountries?isoAlpha3= , GET /countries/v1/addressCountries?isoNum3= , GET /countries/v1/addressCountries?nisNum3= , GET /countries/v1/addressCountries?referenceDate= GET /countries/v1/addressCountries/history?referenceDate=&isoAlpha3=

GET /countries/v1/placeCountries?isoAlpha2= , GET /countries/v1/placeCountries?isoAlpha3= , GET /countries/v1/placeCountries?isoNum3= , GET /countries/v1/placeCountries?nisNum3= , GET /countries/v1/placeCountries?referenceDate= GET /countries/v1/placeCountries/history?referenceDate=&isoAlpha3=

smals-vea commented 2 years ago

A few comments:

Clients can query the history collection with any business attributes deemed relevant, but they can also use the "date" query parameter to find the history entry that was active at a given date.

pvdbosch commented 2 years ago

I'd leave the "countries" as part of "addressCountries" / "placeCountries", because it'd be confusing to name the resource types being consulted "addresses" or "places". In general an API name is a domain, but may expose different resource types.

For validity period of a resource, maybe we could use a property "validityPeriod" with type "Period" from belgif-openapi-time ; but we'll wait for discussion in the technical WG then.

MarcBruyland commented 2 years ago

New proposal for the REST services:

GET /country/v1/countryIsoCodes/history?date= GET /country/v1/countryNisCodes/history?date=

GET /country/v1/addressCountries?countryIsoAlpha2Code= , GET /country/v1/addressCountries?countryIsoAlpha3Code= , GET /country/v1/addressCountries?countryIsoNum3Code= , GET /country/v1/addressCountries?countryNisCode= , GET /country/v1/addressCountries/history?date= GET /country/v1/addressCountries/history?date=&countryIsoAlpha3Code=

GET /country/v1/placeCountries?countryIsoAlpha2Code= , GET /country/v1/placeCountries?countryIsoAlpha3Code= , GET /country/v1/placeCountries?countryIsoNum3Code= , GET /country/v1/placeCountries?countryNisCode= , GET /country/v1/placeCountries/history?date= GET /country/v1/placeCountries/history?date=&countryIsoAlpha3Code=

Postponed until discussed at the country workgroup:

GET /country/v1/nationalities?countryIsoAlpha2Code= , GET /country/v1/nationalities?countryIsoAlpha3Code=, GET /country/v1/nationalities?countryIsoNum3Code=, GET /country/v1/nationalities?countryNisCode= GET /country/v1/nationalities/history?date= GET /country/v1/nationalities/history?date=&countryIsoAlpha3Code=

MarcBruyland commented 2 years ago

Input from my colleague Liesbet D'Hondt wrt nationality:

Met nationaliteit wordt bedoeld: de relatie aanduiden tussen een individu en een Staat, cultuur of loyaliteit. Nationaliteit heeft een tweeledige betekenis:

  1. het bezit van het staatsburgerschap van een land of meer landen;
  2. het op grond van herkomst of afstamming behoren tot een bepaalde etniciteit en (indien aanwezig) de natie; nationaliteit staat in deze definitie los van het staatsburgerschap.

Bron: Landencodes | Statbel (fgov.be)

Nog even verder gezocht: deze praktijk is ook volledig in lijn met de ISO 3166-1 standaard:
“… In addition, in machine-readable passports, the codes are used to determine the nationality of the user and, when we send money from one bank to another, the country codes are a way to identify where the bank is based. …” https://www.iso.org/iso-3166-country-codes.html ISO bepaalt de nationaliteit dus ook op basis van het land met bijhorende landencode.

MarcBruyland commented 2 years ago

Difference between an Address Country and a Place Country ?

(question raised at the functional wg meeting of 2022-06-28)

See https://statbel.fgov.be/sites/default/files/Over_Statbel_FR/Nomenclaturen/NVcountrycodewhitpaper_nl.pdf " Country codes worden gebruikt voor het representeren van het land van een adres, de nationaliteit en het land van een plaats (geboorte- of van overlijden).

Met land wordt bedoeld: het territorium van één Staat. Een Staat is de binnen een afgebakend grondgebied werkzame, in hoge mate soevereine organisatie die gezag uitoefent over de op dat grondgebied wonende bevolking, die deze bevolking naar buiten toe vertegenwoordigt en die over de benodigde machtsmiddelen beschikt.

Met een adres wordt bedoeld: de aanduiding van een bepaalde locatie, doorgaans van een huis, woning, gebouw of faciliteit. De bekendste vorm is het adres, dat aangeeft waar een persoon woont (het woonadres of domicilie) of verblijft (verblijfadres), waar een bedrijf of rechtspersoon is gevestigd (het vestigingsadres), waar post moet worden bezorgd (het postadres). Het hoogste niveau van detaillering is het land.

Met nationaliteit wordt bedoeld: de relatie aanduiden tussen een individu en een Staat, cultuur of loyaliteit. Nationaliteit heeft een tweeledige betekenis: • het bezit van het staatsburgerschap van een land of meer landen; • het op grond van herkomst of afstamming behoren tot een bepaalde etniciteit en (indien aanwezig) de natie; nationaliteit staat in deze definitie los van het staatsburgerschap.

Met plaats wordt bedoeld: een aanduiding voor een locatie waar zich iets heeft voorgedaan (geboorte of overlijden). Het hoogste niveau van detaillering is het land.

De nuance tussen adres en plaats is dat het adres de actuele toestand is. Bv. Het land van de geboorteplaats bestaat mogelijk vandaag niet meer, dus kan niet als adres gebruikt worden. Bv. Fusie Oost en West Duitsland. "

smals-vea commented 2 years ago

Dag Marc, à quoi sert alors l'historique d'une adresse ? si je comprends quand ça devient "historique" on ne parle plus de "address" mais de "place" ? bvb; Zaire is een "place" ?

pvdbosch commented 2 years ago

@MarcBruyland ,

Ik sluit me erbij aan dat dit onderscheid kunstmatig lijkt, en in contradictie met de webservice waarin nog wél gesproken wordt over de historiek van een "adressCountry".

Ik verwijs ook even naar de nota uit #4:

De authentieke bron beschrijft drie business contexten:
-   Adres: altijd een ‘actueel’ land
-   Plaats van een gebeurtenis: actueel of historisch
-   Nationaliteit van een persoon: actueel of historisch
Het onderscheid tussen ‘adres’ en ‘plaats’ is verwarrend: een adres kan in praktijk, net zoals nationaliteit of plaats, een historisch of actueel gegeven zijn.
We stellen voor om business contexten opnieuw te formuleren als volgt:
1.  Plaats 
•   kan zowel van een gebeurtenis zijn als onderdeel van een adres
•   indien geen soeverein (independent) land, behoort tot een ander soeverein land dat de nationaliteit van de burgers bepaalt 
•   de context bepaalt of en welke historische landen toegelaten zijn
o   bvb alle landen die bestonden op datum van aangifte van een adres
o   bvb alleen actuele landen bij bepalen adres voor verzending van een brief
2.  Nationaliteit
•   Hier gebruikt in de betekenis van staatsburgerschap
•   alleen soevereine landen toegelaten (in ISO: independent=yes)
•   de context bepaalt of en welke historische landen toegelaten zijn 
MarcBruyland commented 2 years ago

De startdate is ingevuld voor 61 territories: deze territories kunnen weggefilterd worden voor een datum in het verleden. Een ondervraging van address countries met een datum als parameter kan dus relevant zijn. Wat het onderscheid tussen 'address countries' en 'place countries' betreft: dit is een onderwerp dat moet worden besproken in de werkgroep "Country services".

<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">

codeId | version | startDate | mainCountryId | otherCountryId | name_nl | name_fr | name_de | name_en -- | -- | -- | -- | -- | -- | -- | -- | -- 240 | V0_02 | 1984-01-01 | 129 | [00963] | Kiribati | Kiribati | Kiribati | Kiribati 138 | V0_02 | 1986-01-01 | 185 |   | Palau | Palaos | Palau | Palau 150 | V0_02 | 1992-01-01 | 201 |   | Rusland | Russie | Russland | Russia 250 | V0_02 | 2007-01-01 | 208 |   | Sint Maarten (Frans deel) | Saint-Martin (partie française) | Sankt Martin (französischen Teil) | Saint Martin (French Part) 161 | V0_02 | 2006-06-23 | 216 |   | Servië | Serbie | Serbien | Serbia 207 | V0_02 | 1980-04-18 | 279 |   | Zimbabwe | Zimbabwe | Zimbabwe | Zimbabwe 277 | V0_02 | 2008-02-24 | 301 |   | Kosovo | Kosovo | Kosovo | Kosovo 55 | V0_02 | 1993-05-24 | 77 |   | Ethiopië | Ethiopie | Äthiopien | Ethiopia 246 | V0_02 | 1986-01-01 | 180 |   | Noordelijke Marianen | Iles Mariannes du Nord | Nördliche Marianen | Northern Mariana Islands 236 | V0_02 | 2006-01-01 | 103 |   | Guernsey | Guernesey | Guernsey | Guernsey 96 | V0_02 | 1991-08-31 | 854 |   | Kirgistan | Kirgisistan | Kirgisistan | Kyrgyzstan 247 | V0_02 | 1999-01-01 | 186 |   | Bezette Palestijnse gebieden | Palestinien Occupé, Territoire | Besetzte Palästinensische Gebiete | Palestinian Territory, Occupied 38 | V0_02 | 1997-05-17 | 55 |   | Congo | Congo | Kongo | Congo 53 | V0_02 | 1993-05-24 | 74 |   | Eritrea | Erythrée | Eritrea | Eritrea 153 | V0_02 | 1983-09-19 | 206 |   | Saint Kitts en Nevis | Saint Kitts et Nevis | Saint Kitts und Nevis | Saint Kitts and Nevis 6 | V0_02 | 1983-09-19 | 8 |   | Anguilla | Anguilla | Anguilla | Anguilla 113 | V0_02 | 1986-10-21 | 151 |   | Marshalleilanden | Iles Marshal | Marshallinseln | Marshall Islands 65 | V0_02 | 1990-10-04 | 91 |   | Duitsland | Allemagne | Deutschland | Germany 222 | V0_02 | 2004-01-01 | 2 |   | Ålandeilanden | Îles Åland | Ålandinseln | Åland Islands 9 | V0_02 | 1991-09-21 | 12 |   | Armenië | Arménie | Armenien | Armenia 223 | V0_02 | 1986-01-01 | 13 |   | Aruba | Aruba | Aruba | Aruba 12 | V0_02 | 1991-08-30 | 16 |   | Azerbeidzjan | Azerbaïdjan | Aserbaidschan | Azerbaijan 18 | V0_02 | 1977-01-01 | 24 |   | Benin | Bénin | Benin | Benin 225 | V0_02 | 2010-01-01 | 28 |   | Bonaire, Sint-Eustatius en Saba | Bonaire, Saint-Eustache et Saba | Bonaire, St. Eustatius und Saba | Bonaire, Saint Eustatius and Saba 22 | V0_02 | 1993-01-01 | 29 |   | Bosnië en Herzegovina | Bosnie-Herzégovine | Bosnien und Herzegowina | Bosnia And Herzegovina 27 | V0_02 | 1984-08-04 | 37 |   | Burkina Faso | Burkina Faso | Burkina Faso | Burkina Faso 125 | V0_02 | 1989-06-18 | 38 |   | Myanmar | Myanmar | Myanmar | Myanmar 211 | V0_02 | 1990-01-01 | 40 |   | Cambodja | Cambodge | Kambodscha | Cambodia 41 | V0_02 | 1992-01-01 | 59 |   | Kroatië | Croatie | Kroatien | Croatia 44 | V0_02 | 1993-01-01 | 63 |   | Tsjechië | Tcheque | Tschechische Rep. | Czech Republic 46 | V0_02 | 1977-06-27 | 66 |   | Djibouti | Djibouti | Dchibuti | Djibouti 235 | V0_02 | 1979-01-01 | 86 |   | Franse zuidelijke gebieden | Terres Australes Francaises | Französische Südgebiete | French Southern Territories 64 | V0_02 | 1991-04-09 | 90 |   | Georgië | Géorgie | Georgien | Georgia 77 | V0_02 | 1996-01-01 | 109 |   | Heilige stoel | Saint-Siege | Heiliger Stuhl | Holy See 91 | V0_02 | 1991-12-16 | 127 |   | Kazachstan | Kazakhstan | Kasachstan | Kazakhstan 118 | V0_02 | 1986-11-03 | 157 |   | Micronesië | Micronésie | Mikronesien | Micronesia 119 | V0_02 | 1992-01-01 | 159 |   | Moldavië | Moldova | Moldawien | Moldova 139 | V0_02 | 1980-01-01 | 188 |   | Panama | Panama | Panama | Panama 151 | V0_02 | 2007-01-01 | 203 |   | Saint-Barthélemy | Saint-Barthélemy | Saint-Barthélemy | Saint-Barthélemy 253 | V0_02 | 2010-01-01 | 222 |   | Sint Maarten (Nederlands deel) | Saint-Martin (partie néerlandaise) | Sankt Martin (niederländischen Teil) | Sint Maarten (Dutch Part) 164 | V0_02 | 1993-01-01 | 223 |   | Slowakije | Slovaquie | Slowakei | Slovakia 165 | V0_02 | 1993-01-01 | 224 |   | Slovenië | Slovénie | Slowenien | Slovenia 254 | V0_02 | 1993-01-01 | 229 |   | Zuid-Georgië en de Zuid-Sandwicheilanden | Géorgie du Sud et les Îles Sandwich du Sud | Südgeorgien und den Süd-Sandwich-Inseln | South Georgia and the South Sandwich Islands 169 | V0_02 | 2011-07-09 | 230 |   | Zuid-Soedan | Soudan du Sud | Südsudan | South Sudan 172 | V0_02 | 2011-07-09 | 233 |   | Soedan | Soudan | Sudan | Sudan 178 | V0_02 | 1992-01-01 | 242 |   | Tadzjikistan | Tadjikistan | Tadschikistan | Tajikistan 181 | V0_02 | 2002-05-20 | 245 |   | Oost-Timor | Timor-Oriental | Osttimor | East Timor 188 | V0_02 | 1992-01-01 | 252 |   | Turkmenistan | Turkménistan | Turkmenistan | Turkmenistan 190 | V0_02 | 1979-01-01 | 254 |   | Tuvalu | Tuvalu | Tuvalu | Tuvalu 192 | V0_02 | 1992-01-01 | 256 |   | Oekraïne | Ukraine | Ukraine | Ukraine 276 | V0_02 | 1986-01-01 | 260 |   | Kleine afgelegen eilanden van de Verenigde Staten | Îles mineures éloignées des Etats-Unis | Kleinere Inselbesitzungen der Vereinigten Staaten | United States Minor Outlying Islands 197 | V0_02 | 1992-01-01 | 264 |   | Oezbekistan | Ouzbékistan | Usbekistan | Uzbekistan 198 | V0_02 | 1980-07-30 | 265 |   | Vanuatu | Vanuatu | Vanuatu | Vanuatu 200 | V0_02 | 1976-07-02 | 267 |   | Vietnam | Vietnam | Vietnam | Vietnam 205 | V0_02 | 1990-05-22 | 276 |   | Jemen | Yémen | Jemen | Yemen 233 | V0_02 | 2010-01-01 | 61 |   | Curaçao | Curaçao | Curaçao | Curaçao 265 | V0_02 | 2006-01-01 | 119 |   | Eiland Man | Ile de Man | Insel Man | Isle of Man 266 | V0_02 | 2006-01-01 | 124 |   | Jersey | Jersey | Jersey | Jersey 242 | V0_02 | 1993-07-01 | 155 |   | Mayotte | Mayotte | Mayotte | Mayotte 122 | V0_02 | 2006-06-23 | 162 |   | Montenegro | Monténégro | Montenegro | Montenegro 286 | V0_02 | 2019-02-12 | 972 |   | Noord-Macedonië | Macédoine du Nord | Nordmazedonien | North Macedonia

smals-vea commented 2 years ago

@MarcBruyland, je suis d'accord que la date est "relevant" mais les pays ci-dessus sont en fait actifs à partir d'une date, et le sont encore. Il ne s'agit donc pas d'historique mais plutôt d'un statut "actif" à la date du ...

MarcBruyland commented 2 years ago

As discussed in the federal wg meeting on 2022-09-30: BOSA is waiting for new xml files from Statbel before starting the development of REST services. Once available, BOSA decided to do an as-is remake in REST. Attached an analysis of the old xml files is available. Country_Services_002.docx

smals-vea commented 1 year ago

@MarcBruyland, je propose que l'API REST/country puisse offrir les données telles présentées sur le site Statbel (à savoir plus que 1 seul fichier xls (https://statbel.fgov.be/fr/propos-de-statbel/methodologie/classifications/codes-pays)). Une revue par le REST Board Smals (avec Peter VDB en plus) serait aussi une garantie de qualité et du respect des Guidelines REST. Le REST Board a la bonne habitude de suggérer une simplification du swagger/API, qui est win-win pour la maintenance évolutive du service. Qu'en penses-tu ?

MarcBruyland commented 1 year ago

Issue closed as decided by the functional wg on 2023-06-09. Design was approved. Development is ongoing at BOSA.