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

Liens hypertextes de l'Insee qui retournent une erreur 404 #186

Open
WREATCHED opened this issue Dec 19, 2023 · 3 comments
Open

Liens hypertextes de l'Insee qui retournent une erreur 404 #186

WREATCHED opened this issue Dec 19, 2023 · 3 comments
Assignees
Labels
bug Something isn't working
Milestone

Comments

@WREATCHED
Copy link
Collaborator

Contexte
Plume autorise la saisie de lien hypertexte au travers de listes déroulantes, elles-mêmes générées par des thésaurus.

Un exemple
Je choisis dans un groupe de valeur ‘Thèmes’ le thésaurus Commune française (INSEE) et une valeur dans liste déroulante ‘Ain’
L’url de l’insee retourne une erreur 404 dans le navigateur.

@WREATCHED WREATCHED added the enhancement New feature or request label Dec 19, 2023
@WREATCHED WREATCHED added this to the v2.0 milestone Dec 19, 2023
@alhyss alhyss modified the milestones: v2.0, V1.3 Dec 19, 2023
@alhyss
Copy link
Collaborator

alhyss commented Dec 19, 2023

Visiblement la syntaxe pour consulter les objets du registre de l'INSEE a encore changé... Nous avions déjà dû modifier les URL il y a quelques mois - cf. issue #152.

Par exemple, pour l'URI http://id.insee.fr/geo/commune/01006, l'équivalent de https://rdf.insee.fr/sparql/describe?uri=http%3A//id.insee.fr/geo/commune/01006 est maintenant
http://rdf.insee.fr/sparql/?query=DESCRIBE%20%3Chttp://id.insee.fr/geo/commune/01006%3E - soit la forme encodée de http://rdf.insee.fr/sparql/?query=DESCRIBE <URI de l'objet>. Mais le résultat est aussi de moins en moins lisible...

En alternative, j'envisagerais bien d'utiliser pour les hyperliens le vocabulaire des communes de France sur le registre Loterre (projet du CNRS). Il a l'intérêt de faire la correspondance avec les autres vocabulaires de référence sur le sujet, dont celui de l'INSEE. Il s'agirait soit de pointer directement sur ce registre, soit d'utiliser les pages Wikipédia qu'il référence.

NB1 : Utiliser les requêtes SPARQL DESCRIBE sur le registre de l'INSEE permettrait au moins d'éviter les erreurs 404. Cette solution au moins devrait être mise en oeuvre dès la prochaine version, avant qu'une version ultérieure ne référence des URL alternatives apportant des informations plus exploitables.

NB2 : Les URI formées à partir du code INSEE ont un alias dont la partie identifiante est un UUID, et lancer la requête DESCRIBE sur ceux-là semble apporter davantage d'informations, notamment les libellés des communes. Exemple pour la commune d'Ambléon (01006).

@alhyss alhyss added bug Something isn't working and removed enhancement New feature or request labels Dec 19, 2023
@alhyss alhyss changed the title Liens hypertextes de l'Insee qui retourne une erreur 404 Liens hypertextes de l'Insee qui retournent une erreur 404 Dec 19, 2023
alhyss added a commit that referenced this issue Dec 19, 2023
Correction de la forme des requêtes sur le registre INSEE.

Cf. issue #186
@alhyss
Copy link
Collaborator

alhyss commented Dec 19, 2023

Le commit ci-avant a remplacé les URL https://rdf.insee.fr/sparql/describe?uri={URI de l'objet} par des URL http://rdf.insee.fr/sparql/?query=DESCRIBE <{URI de l'objet}> , ce qui les rend de nouveau fonctionnelles.

Pour mémoire, commandes exécutées :

from urllib.parse import quote
from plume.rdf.namespaces import FOAF, RDF, SKOS
from plume.rdf.rdflib import URIRef
from plume.rdf.utils import graph_from_file, abspath

for vocabulary in ('insee_department', 'insee_commune', 'insee_region', 'insee_individual_territories'):
    g = graph_from_file(abspath(f'rdf/data/vocabularies/{vocabulary}.ttl'), format='turtle')
    for s, o in g.subject_objects(FOAF.page):
        if str(o).startswith('https://rdf.insee.fr/sparql/describe?uri='):
            h = g.remove((s, FOAF.page, o))
            h = g.add(
                (
                    s,
                    FOAF.page, 
                    URIRef('https://rdf.insee.fr/sparql/?query={}'.format(quote(f'DESCRIBE <{str(s)}>')))
                )
            )
    with open(abspath(f'rdf/data/vocabularies/{vocabulary}.ttl'), 'wb') as dest:
        dest.write(g.serialize(encoding='utf-8'))

alhyss added a commit that referenced this issue Dec 19, 2023
Pour les vocabulaires INSEE des départements et régions, les requêtes SPARQL portées par la propriété `foaf:page` sont désormais construites à partir de l'URI synonyme dont la partie identifiante est un UUID et pas un code INSEE, car cet URI porte davantage d'informations.

Cf. issue #186
@alhyss
Copy link
Collaborator

alhyss commented Dec 19, 2023

Les URI synonymes basées sur des UUID étaient intégrées aux vocabulaires pour les régions et départements, donc je les ai utilisées pour créer des liens un peu plus informatifs, même si la présentation de l'information reste peu accessible.

Commandes exécutées, pour mémoire :

from urllib.parse import quote
from plume.rdf.namespaces import FOAF, RDF, SKOS
from plume.rdf.rdflib import URIRef
from plume.rdf.utils import graph_from_file, abspath

for vocabulary in ('insee_department', 'insee_region'):
    g = graph_from_file(abspath(f'rdf/data/vocabularies/{vocabulary}.ttl'), format='turtle')
    for s, o in g.subject_objects(FOAF.page):
        a = g.value(s, SKOS.exactMatch)
        if a and str(o).startswith('https://rdf.insee.fr/sparql/?query='):
            h = g.remove((s, FOAF.page, o))
            h = g.add(
                (
                    s,
                    FOAF.page, 
                    URIRef('https://rdf.insee.fr/sparql/?query={}'.format(quote(f'DESCRIBE <{str(a)}>')))
                )
            )
    with open(abspath(f'rdf/data/vocabularies/{vocabulary}.ttl'), 'wb') as dest:
        dest.write(g.serialize(encoding='utf-8'))

Ce n'est pas fait pour les communes à ce stade, car les URI synonymes n'avaient pas été inclus dans le fichier turtle pour limiter la taille de ce dernier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants