Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Les établissements utilisateurs des données de Hal peuvent se féliciter de la présence de vocabulaires contrôlés disciplinaires tels que JEL, ACM ou MeSH.

Car malheureusement, on revient de loin : la saisie,

Sommaire

L'intérêt des vocabulaires contrôlés dans HAL

L'utilisation par Hal de vocabulaires contrôlés disciplinaires pour l'indexation des publications a tout d'une bonne nouvelle ✨.

En effet, l'utilisation des années durant, de mots-clés libres a généré une "dette technique de données" qui rend délicate pour les établissements, par exemple, la caractérisations caractérisation des profils d'expertise des chercheurs ou des laboratoires .à partir des données Hal [

Footnote

On n'oubliera pas toutefois de mentionner ici toutefois les louables efforts de l'équipe Scanr scanR pour fournir des versions des métadonnées Hal réalignées sur Idref/Rameau et WikiData grinning face  WikiData  !

].

Pour rendre le problème plus parlant confused face , voici la liste des variantes de graphies pour quelques-mots clés, obtenues depuis l'API Hal :

Développer
titleVoire d'étonnantes variantes de graphies de quelques mots-clés Hal


Moyen ÂgeMoyen-ÂgeMoyen âgeMOYEN AGEMoyen ageMoyen ägeMoyen ÄgeMOyen ÂgeMoyen AGeMoyen âgeMoyen ÂgeMOYEN-AGE
Île-de-FranceIle-de-FranceIle-de-franceÎle de FranceIle-de FranceÎle-de-franceIle de franceILE DE FRANCEÏle-de-FranceÎle de franceIle-De-FranceILE-DE-FRANCEÎle-De-FranceÎle-de-France
Partenariat public-privéPartenariat public privéPartenariat Public-PrivéPartenariat public/privéParténariat public-privéPartenariat public-PrivéPartenariat Public PrivéParténariat public-PrivéPartenariat public-privé

...


Même si ces exemples n'ont pas été choisis tout à fait au hasard, ils donnent une petite idée, a posteriori et a contrario, de l'importance qu'il y a à fournir des mécanismes de suggestion ("autocomplétion" ) basés sur des vocabulaires reconnus.

Et pas seulement pour limiter les "variantes" orthographiques.

Car idéalementIdéalement, pour gérer les informations sur la recherche selon les canons des "FAIR Data" sports medal , il faudrait non seulement également disposer pour chaque concept d'un identifiant unique (une URI) se prêtant, si possible, à un "« déréférencement " » : une opération qui consiste à naviguer sur le web 🧭 jusqu'à la source de données indiquée par l'URI (qui est aussi, souvent, une URL , : c'est pratique). 

Par exemple, pour "Partenariat public-privé", si on disposait d'une URI telle que https://catalogue.bnf.fr/ark:/12148/cb13755654m ou https://www.idref.fr/061611514, on pourrait obtenir en tirer une foule de bénéfices  : des traductions, des alignements avec des vocabulaires tiers (https://id.loc.gov/authorities/subjects/sh96011049.html), etcPublic-private sector cooperation de la Library of congress), des variantes... Ou tout simplement vérifier qu'on a des données correctes face with monocle ..

En pratique, c'est un peu compliqué 


Normalement, ce qui précède vous a motivés - si vous ne l'étiez pas déjà - à vouloir tirer tout le parti possible Raison de plus pour vouloir tirer parti des quelques vocabulaires contrôlés (JEL, MeSH, ACM) utilisés proposés au sein de des données Hal.

Des codes JEL, mais pas d'URI

Raison de plus pour vouloir tirer parti au maximum des quelques vocabulaires contrôlés utilisés sur Hal ! C C'est ce que nous avons voulu faire dans le cadre du projet SoVisu+, du consortium CRISalid.

Message Box
titleLe consortium CRISalid
typegeneric

La commauté communauté CRISalid réunit plusieurs établissements qui œuvrent ensemble à l'automatisation de la construction de leur "graphe de connaissance institutionnel", socle de la gestions des informations sur la recherche.

Button Hyperlink
iconview
titleCommunauté CRISALID
typestandard
urlhttps://www.
esup-portail.org/wiki/display/ESUPCRISalid/

Prenons le cas du vocabulaire JEL (pour «Journal of Economic Literature»). C'Le vocabulaire JEL est un système de classification des publications en économie maintenant par qui émane l'American Economic Association (AEA) et s'applique aux publications ... dans le domaine de l'économie (vous vous en étiez doutés).

Sur . Le problème est que sur son site web, l'AEA fournit certes le vocabulaire avec ses codes et ses définitions , mais sans les ne pousse pas la gentillesse jusqu'à proposer les fameuses "URI" qui permettraient d'utiliser les intégrer ces concepts parmi d'autres données "sémantiques". Par exemple, le code "A140A14" représente "Sociology of Economics", mais son unicité est loin d'être garantie , et rien ne permet : bien de choses, sur la terre, sont susceptibles de s’appeler A14, par exemple des autoroutes ou des avions. Le code "A14" ne comporte aucun indice qui permettrait à un système de découvrir l'information associée à ce "A140". Un vocabulaire ". On peut parler de vocabulaire « à l'ancienne " 🕰️ » en quelque sorte, avec des codes qui étaient peut-être suffisants dans un contexte fermé, mais qui ne font plus sens sur le grand océan du web.

Et Mais ce sont ces codes que l'on retrouve dans les données issues de HAL...

Prenons à titre d'exemple une publication en économie dotée pourvue des fameux domaines JEL : https://hal.science/hal-02169144v1

Et interrogeons à son sujet le endpoint Sparql de Hal. (http://sparql.archives-ouvertes.fr/sparql ) :

Développer
titleVoir la requête et le résultat dans l'éditeur de requêtes SPARQL de HAL

Image Added

Image Added

Nos classifications sont JEL figurent bien dans le résultat mais . Mais comment les exploiter thinking face  ?

Image Removed

exploiter ? On voit que l'équipe HAL elle-même a dû être embêtée par l'absence d'un vrai vocabulaire et a essayé de contourner le problème un créant un prédicat ad hoc "jelSubject" dans une ontologie maison... Des pratiques certes courantes sur le web sémantique, mais qui relèvent de la petite cuisine.

Nous pourrions bien nous donner la peine de rabouter les labels et les Nous pourrions bien recoller des labels aux identifiants en interrogeant l'API plus "traditionnelle" JSON de HAL (https://api.archives-ouvertes.fr/search?q=halId_s:hal-02169144&fl=*), à condition de faire confiance à l'ordre des résultats. Mais on est loin de la richesse money-mouth face  promise par les vocabulaires contrôlés !

SKOS à la rescousse

À ce stade, on commence à se dire que ce serait quand-même beaucoup plus simple si quelqu'un avait publié le vocabulaire JEL quelque part sur le web dans un format moderne, typiquement SKOS (simple knowledge organization system), qui est le standard du web sémantique pour la représentation des vocabulaires. 

Ça tombe bien : quelqu'un l'a fait ! Le Leibniz-Informationszentrum Wirtschaft (non, n'essayez pas de le prononcer). Cette institution a converti le vocabulaire JEL au format SKOS et l'a publié sur l'application Skosmos https://zbw.eu/beta/skosmos/jel/en/. L'information qu'il contient est devenue ainsi accessible aussi bien aux robots qu'aux humains.

Une petite «concaténation» plus tard et le tour est joué : quand Hal nous envoie "G.G1.G13", il ne nous reste plus :

Mais n'avons nous pas vendu un peu vite la trop vite la peau de l'ours ...

Image Added

À l'usage, il s'avère que le site https://zbw.eu/beta/skosmos n'est pas en pleine forme et qu'il cesse rapidement de répondre lorsque les requêtes arrivent en rafales... Pour couronner le tout, les liens de téléchargement proposés par l’institution sur la page d'accueil du vocabulaire répondent invariablement "404".

En serons nous quitte pour pour refaire tout le travail de formalisation SKOS et republier le vocabulaire dans un nouveau domaine ?

Sauvés par la Wayback Machine

C'est dans ces cas là qu'il faut penser à la fameuse "Wayback Machine" d'Internet Archive (https://web.archive.org/) [

Footnote

Si vous ne connaissez pas ou mal Internet archive, on vous recommande d'écouter la radio.

]. Coup de chance , le fichier SKOS contenant l'ensemble du vocabulaire JEL de la ZBW a été régulièrement archivé, et la dernière fois, pas plus tard qu'en janvier 2024 ! 

https://web.archive.org/web/20240000000000*/https://zbw.eu/beta/external_identifiers/jel/download/jel.rdf.zip

« La confiance n'exclut pas le contrôle »  : un petit coup de qSkos, le magnifique utilitaire de Christian Mader, permettra de lever les doutes (on peut aussi jouer avec le fichier sur SkosPlay).

Développer
titleVoir le rapport qSkos
Html-bobswift
<pre><font color="#12488B"><b>~/qSKOS/target</b></font>$ java -jar qSKOS-cmd.jar analyze -dc mil,bl ../jel_2024.rdf -o report.txt
Initializing evaluation repository for jel_2024.rdf...
trying to create report file report.txt
file.exists()=false
file.canRead()=false
file.canWrite()=false
file.canExecute()=false
Processing issue 1 of 27 (Empty Labels)
Processing issue 2 of 27 (Omitted or Invalid Language Tags)
Processing issue 3 of 27 (Incomplete Language Coverage)
Processing issue 4 of 27 (Undocumented Concepts)
guessing publishing host
Guessed authoritative resource identifier: 'zbw.eu'         
Processing issue 5 of 27 (No Common Languages)              
Processing issue 6 of 27 (Missing Labels)
Processing issue 7 of 27 (Overlapping Labels)
Collecting resource labels
Processing issue 8 of 27 (Orphan Concepts)                  
Processing issue 9 of 27 (Disconnected Concept Clusters)
Processing issue 10 of 27 (Cyclic Hierarchical Relations)   
Creating hierarchy graph
Processing issue 11 of 27 (Valueless Associative Relations)
Processing issue 12 of 27 (Solely Transitively Related Concepts)
Processing issue 13 of 27 (Omitted Top Concepts)
Processing issue 14 of 27 (Top Concepts Having Broader Concepts)
Processing issue 15 of 27 (Hierarchical Redundancy)
Processing issue 16 of 27 (Mapping Relations Misuse)        
Processing issue 17 of 27 (Reflexively Related Concepts)
Processing issue 18 of 27 (Ambiguous Notation References)   
Processing issue 19 of 27 (Unprintable Characters in Labels)
Processing issue 20 of 27 (Missing Out-Links)               
finding resources
Processing issue 21 of 27 (Undefined SKOS Resources)        
Processing issue 22 of 27 (Unidirectionally Related Concepts)
Processing issue 23 of 27 (HTTP IRI Scheme Violation)
Processing issue 24 of 27 (Relation Clashes)
Processing issue 25 of 27 (Mapping Clashes)                 
Processing issue 26 of 27 (Inconsistent Preferred Labels)
Processing issue 27 of 27 (Disjoint Labels Violation)
Report complete!

* Summary of Quality Issue Occurrences:
Empty Labels: OK (no potential problems found)
Omitted or Invalid Language Tags: OK (no potential problems found)
Incomplete Language Coverage: OK (no potential problems found)
Undocumented Concepts: FAIL (997)
No Common Languages: OK (no potential problems found)
Missing Labels: OK (no potential problems found)
Overlapping Labels: FAIL (365)
Orphan Concepts: OK (no potential problems found)
Disconnected Concept Clusters: FAIL (20)
Cyclic Hierarchical Relations: OK (no potential problems found)
Valueless Associative Relations: OK (no potential problems found)
Solely Transitively Related Concepts: OK (no potential problems found)
Omitted Top Concepts: FAIL (1)
Top Concepts Having Broader Concepts: OK (no potential problems found)
Hierarchical Redundancy: OK (no potential problems found)
Mapping Relations Misuse: OK (no potential problems found)
Reflexively Related Concepts: OK (no potential problems found)
Ambiguous Notation References: OK (no potential problems found)
Unprintable Characters in Labels: OK (no potential problems found)
Missing Out-Links: FAIL (997)
Undefined SKOS Resources: OK (no potential problems found)
Unidirectionally Related Concepts: FAIL (977)
HTTP IRI Scheme Violation: FAIL (1)
Relation Clashes: OK (no potential problems found)
Mapping Clashes: OK (no potential problems found)
Inconsistent Preferred Labels: OK (no potential problems found)
Disjoint Labels Violation: OK (no potential problems found)
</pre>


Zéro erreur sur les critères de qualité essentiels ! Une performance qu'on se doit de saluer.

Pour nous, voilà qui offrait une vraie issue : une fois le vocabulaire récupéré, il suffisait de le charger dans un serveur adapté aux données sémantiques (Apache Jena Fuseki) et d'empaqueter le tout dans un container Docker !

Le tout est publié sur Github et le Dockerhub sous le doux nom de "svp-jel-proxy' (les informaticiens sont des poètes...)

Fancy Bullets
typecircle

C'est juste une toute petite surcouche sur les "Docker Tools" d'Apache Jena Fuseki  - au passage, dommage qu'on ne puisse pas s'appuyer plutôt sur une image Docker officielle.

Le vocabulaire JEL du Leibniz-Informationszentrum Wirtschaft sera désormais disponible  au sein de notre système "SoVisu+" sous forme d'un microservice, afin d'assister l'intégration des données de Hal au graphe de connaissance institutionnel !

Do it yourself

À ce stade, vous brûlez d'impatience de manipuler vous-même ce composant, et on le comprend bien.

Info
titlePrérequis

On suppose que vous disposez d'un environnement en ligne de commande de type Unix, comme un Mac, le Windows subsystem for linux, ou pourquoi pas - on a tous le droit de rêverfirst quarter moon face - une vraie machine sous Linux, et que vous y avez déjà installé Docker.

Démarrez svp-jel-proxy sur un port de votre choix (dans cet exemple, 8888) :

Bloc de code
docker container run --rm -it -p 8888:3030 crisalidesr/svp-jel-proxy

Votre machine héberge désormais un Fuseki chargé avec le vocabulaire Jel et disponible à l'adresse http://localhost:8888/jel/sparql. 

Pour la suite, installez un outil tel que Postman qui vous facilitera l'édition de requêtes. Utilisez de préférence le verbe HTTP POST, sans quoi vous aurez du mal avec les sauts de lignes.

Développer
titleVoir une requête SPARQL de base dans Postman

Image Added

Pour tester l'affichage de la notice complète de http://zbw.eu/beta/external_identifiers/jel#E24

Développer
titleRequête SPARQL pour la notice complète
Bloc de code
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX void: <http://rdfs.org/ns/void#>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dc: <http://purl.org/dc/terms/>
CONSTRUCT { ?concept rdf:type skos:Concept ; skos:prefLabel ?prefLabel ; skos:altLabel ?altLabel ; skos:notation ?notation ; skos:relatedMatch ?relatedMatch ; skos:narrowMatch ?narrowMatch ; skos:broadMatch ?broadMatch ; skos:inScheme ?scheme ; dc:isPartOf ?dataset ; rdfs:label ?label . ?scheme rdf:type skos:ConceptScheme ; skos:prefLabel ?schemeLabel . ?dataset rdf:type void:Dataset ; rdfs:label ?datasetLabel .}
WHERE { BIND(<http://zbw.eu/beta/external_identifiers/jel#E24> AS ?concept)
OPTIONAL { ?concept skos:prefLabel ?prefLabel . }
OPTIONAL { ?concept skos:altLabel ?altLabel . }
OPTIONAL { ?concept skos:notation ?notation . }
OPTIONAL { ?concept skos:relatedMatch ?relatedMatch . }
OPTIONAL { ?concept skos:narrowMatch ?narrowMatch . }
OPTIONAL { ?concept skos:broadMatch ?broadMatch . }
OPTIONAL { ?concept skos:inScheme ?scheme . ?scheme skos:prefLabel ?schemeLabel . }
OPTIONAL { ?concept dc:isPartOf ?dataset . ?dataset rdfs:label ?datasetLabel . }
OPTIONAL { ?concept rdfs:label ?label . FILTER (LANG(?label) = "en" || LANG(?label) = "de" || LANG(?label) = "fr" || LANG(?label) = "es") }}

En guise de conclusion

On prend la mesure au travers de cet exemple du caractère fragile du déploiement des technologies du web sémantique. La pratique est souvent bien loin de la théorie, selon laquelle les données vont s'agréger miraculeusement par la seule vertu des URI et des inférences. Même en utilisant des plateformes nationales , ayant pignon sur rue, telles que Hal, les établissements doivent faire eux-même une grande partie du chemin🚶‍♂️ jusqu'aux "linked data"...

Raison de plus pour travailler en mode mutualisé, sachant qu'il sera toujours plus facile de réaliser la maintenance corrective/adaptative sur des composants partagés. Imaginez que demain

  • le Leibniz-Informationszentrum Wirtschaft corrige les problèmes de son serveur
  • ... ou publie une nouvelle version du vocabulaire JEL...
  • ... ou que HAL ou une autre institution publie le vocabulaire dans son propre domaine...
  • ... ou que HAL remplace les codes par des URI dans les données...

Notre solution n'apparaîtra plus que comme un bricolage provisoire qui aura vocation à être modifié ou remplacé !

...

Notes

...

Footnotes Display