@prefix cw: <http://ns.cubicweb.org/cubicweb/0.0/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://www.logilab.fr/24394906> cw:tags <https://www.logilab.fr/26106200>,
        <https://www.logilab.fr/4716152> .

<https://www.logilab.fr/24394964> cw:tags <https://www.logilab.fr/26106200> .

<https://www.logilab.fr/2475637> cw:wf_info_for <https://www.logilab.fr/2474699> .

<https://www.logilab.fr/26106247> cw:wf_info_for <https://www.logilab.fr/26106200> .

<https://www.logilab.fr/3873779> cw:wf_info_for <https://www.logilab.fr/3873776> .

<https://www.logilab.fr/4716549> cw:wf_info_for <https://www.logilab.fr/4716152> .

<https://www.logilab.fr/9342299> cw:tags <https://www.logilab.fr/2474699>,
        <https://www.logilab.fr/26106200>,
        <https://www.logilab.fr/3873776>,
        <https://www.logilab.fr/4716152> .

<https://www.logilab.fr/9342304> cw:tags <https://www.logilab.fr/2474699> .

<https://www.logilab.fr/9342450> cw:tags <https://www.logilab.fr/3873776> .

<https://www.logilab.fr/9748824> cw:tags <https://www.logilab.fr/4716152> .

<https://www.logilab.fr/9748873> cw:tags <https://www.logilab.fr/26106200> .

<https://www.logilab.fr/987894> cw:tags <https://www.logilab.fr/2474699> .

<https://www.logilab.fr/3873776> a cw:BlogEntry,
        <siocBlogPost> ;
    cw:content """*Elodie Thiéblin, développeuse chez Logilab et spécialiste du Web sémantique*\r
\r
Du 3 au 6 novembre, j'ai participé à la conférence [ISWC (International Semantic\r
Web Conference)](https://iswc2020.semanticweb.org/), qui est une\r
des références internationales dans le domaine du Web Sémantique. On y parle\r
des problématiques du web de données liées et de réprésentation des\r
connaissances. Je partage ici mes notes sur les sujets qui m'ont le plus marquée.\r
\r
## Débriefing général de la conférence\r
\r
Cette année, il y a eu de nombreux articles\r
consacrés à [SHACL (Shape Constraint Language)](https://www.w3.org/TR/shacl/).\r
\r
L'idée de remettre l'utilisateur des données et technologies du Web sémantique\r
au centre des innovations à venir a été répétée à plusieurs reprises.\r
\r
L'intervention de Miriam Fernandez sur la diversité des données était\r
enrichissante. Elle invite les producteurs de données à se poser la question du\r
biais de leurs données et de la représentation du monde qu'elles renferment.\r
\r
> Des données biaisées peuvent provoquer de désastreux effets sociaux.\r
\r
Elle cite notamment [cet\r
article](https://ajph.aphapublications.org/doi/abs/10.2105/AJPH.2011.300275)\r
qui présente les résultats d'une étude comparant les blessures des femmes et des\r
hommes avec une ceinture de sécurité lors d'accidents de la route entre 1998\r
et 2008. La différence de 47% entre les deux sexes serait imputable\r
aux mannequins de test de l'industrie automobile dimensionnés sur des hommes.\r
\r
## Résumé de présentations\r
\r
Deux papiers ont retenu mon attention pour faciliter l'utilisation des\r
technologies du Web sémantique par les développeuses et les développeurs Web.\r
\r
### ON2TS: Typescript generation from OWL ontologies and SHACL\r
\r
[ON2TS](https://github.com/jeswr/on2ts) est un prototype permettant de générer des classes et interfaces\r
TypeScript à partir d'ontologies OWL et de règles en SHACL.  Les développeurs\r
peuvent donc utiliser directement les classes et interfaces générées pour\r
valider la structure et la forme de leurs données lors de l'exécution.\r
\r
Ce prototype utilise la bibliothèque `@ldflex/comunica`, le moteur de requêtes\r
pour langage LDflex, qui est décrit ci-dessous.\r
\r
Pour plus de détails, lisez l'[article](http://ceur-ws.org/Vol-2721/paper590.pdf).\r
\r
### LDflex: a Read/Write Linked Data Abstraction for Front-End Web Developers\r
\r
[LDflex](https://github.com/LDflex/LDflex) est un langage dédié qui fait\r
apparaîtr les données liées du Web comme des structures de données en\r
JavaScript. La [vidéo de la présentation](https://www.youtube.com/watch?v=2BHV1p2QzNw)\r
est en ligne et il est possible d'expérimentation dans un\r
[bac à sable](https://solid.github.io/ldflex-playground/).\r
\r
Selon Ruben Verborgh, une des grandes différences entre les applications Web et\r
le Web sémantique est la "prédicabilité" : la structure et l'emplacement des données\r
sont prédéfinis dans une application Web (souvent choisie par les développeurs\r
de ladite application), tandis que dans le cas du Web sémantique, les ontologies\r
sont hétérogènes et les données sont distribuées.\r
\r
Le but de LDflex est de simplifier la gestion des différents formats\r
et modes d'interrogation des serveurs de Web de données liées: des données\r
en RDF peuvent être récupérées depuis le Web puis interrogées localement en SPARQL.\r
\r
Avec LDflex il est possible de manipuler une structure de données locale, qui\r
est mise en correspondance avec les données RDF d'origine au moyen d'un contexte.\r
Par exemple, le contexte suivant permet d'écrire `user.friends` pour\r
récupérer les individus ayant un lien `foaf:knows` vers user.\r
\r
```json\r
 "@context": {\r
    "@vocab": "http://xmlns.com/foaf/0.1/",\r
    "friends": "knows",\r
    "label": "http://www.w3.org/2000/01/rdf-schema#label",\r
  }\r
```\r
\r
Si le modèle évolue, il peut suffire de modifier le contexte pour adapter\r
l'application, ce qui en simplifie la maintenance.\r
\r
LDflex semble donc à première vue une bonne alternative à rdflib.js. Comme\r
cette dernière, elle dépend toutefois des bibliothèques d'authentification Solid\r
qui prennent une [taille non négligeable\r
(~500ko)](https://bundlephobia.com/result?p=@ldflex/comunica@3.4.2) dans le\r
bundle final.\r
\r
La bibliothèque `ldflex` inclut le langage LDflex et doit être accompagnée de\r
`@ldflex/comunica`, son moteur de requêtes sur le Web.\r
\r
Un rapide test sur logilab.fr (avec l'extension CORS Everywhere\r
activée) a suffit à montrer qu'on peut utiliser [LDflex pour interroger les\r
instances de Cubicweb en version 3.28](https://solid.github.io/ldflex-playground/#%5B'https%3A%2F%2Fwww.logilab.fr%2F2474699'%5D.type)\r
\r
Autres tests et remarques :\r
- Test sur http://dbpedia.org/resource/Paris\r
    &rarr; *Mixed Blocked* depuis le bac à sable en HTTPS\r
- Test sur https://aims.fao.org/aos/agrovoc/c_30969\r
     &rarr; *301 Moved Temporarily* mais pas de requête sur l'URL cible (en HTTP)\r
- Test sur https://www.wikidata.org/entity/Q535\r
    &rarr; redirection à travers les différentes URL pour obtenir le RDF est gérée et fonctionne\r
    &rarr; requêtage en SPARQL ne fonctionne pas car l'entité est décrite en HTTP et non HTTPS dans le RDF\r
\r
Il sera intéressant de suivre l'évolution de ce projet pour répondre aux\r
questions suivantes:\r
\r
- Comment gérer plusieurs contextes simultanément (récupérer `foaf:name` et\r
  `schema:name` à la fois par exemple) ?\r
- Comment contourner le problème des requêtes *Mixed Blocked* en gardant les\r
  données distribuées sur le Web ?\r
\r
## Conclusion\r
\r
Cette expérience a été très enrichissante, comme chaque année. Je suis contente\r
qu'il y ait de plus en plus d'initiatives pour rendre le Web sémantique agréable\r
et accessible aux développeuses et aux développeurs Web. Cela va peut-être encourager\r
la valorisation des entrepôts de données liées dans des applications en production.\r
\r
Un des sujets resté sans réponse est la gestion des configurations des serveurs\r
sur le Web de données liées pour notamment la gestion des erreurs\r
[CORS](https://developer.mozilla.org/fr/docs/Web/HTTP/CORS), [Mixed\r
Blocked](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content),\r
etc.\r
\r
Rendez-vous l'année prochaine pour vérifier ces hypothèses.""" ;
    cw:content_format "text/markdown" ;
    cw:creation_date "2021-01-20T00:02:14.065539+00:00"^^xsd:dateTime ;
    cw:cw_source <http://beta.logilab.fr1> ;
    cw:entry_of <https://www.logilab.fr/3792644> ;
    cw:has_creator <https://www.logilab.fr/9342011> ;
    cw:heading """*Elodie Thiéblin, développeuse chez Logilab et spécialiste du Web sémantique*\r
\r
Du 3 au 6 novembre, j'ai participé à la conférence [ISWC (International Semantic\r
Web Conference)](https://iswc2020.semanticweb.org/), qui est une\r
des références internationales dans le domaine du Web Sémanti...""" ;
    cw:in_state <http://beta.logilab.fr1339> ;
    cw:modification_date "2021-01-20T00:04:54.415341+00:00"^^xsd:dateTime ;
    cw:title "Résumé de la conférence ISWC 2020" ;
    cw:word_count 798 ;
    dcterms:title "Résumé de la conférence ISWC 2020" ;
    <sioccontent> """*Elodie Thiéblin, développeuse chez Logilab et spécialiste du Web sémantique*\r
\r
Du 3 au 6 novembre, j'ai participé à la conférence [ISWC (International Semantic\r
Web Conference)](https://iswc2020.semanticweb.org/), qui est une\r
des références internationales dans le domaine du Web Sémantique. On y parle\r
des problématiques du web de données liées et de réprésentation des\r
connaissances. Je partage ici mes notes sur les sujets qui m'ont le plus marquée.\r
\r
## Débriefing général de la conférence\r
\r
Cette année, il y a eu de nombreux articles\r
consacrés à [SHACL (Shape Constraint Language)](https://www.w3.org/TR/shacl/).\r
\r
L'idée de remettre l'utilisateur des données et technologies du Web sémantique\r
au centre des innovations à venir a été répétée à plusieurs reprises.\r
\r
L'intervention de Miriam Fernandez sur la diversité des données était\r
enrichissante. Elle invite les producteurs de données à se poser la question du\r
biais de leurs données et de la représentation du monde qu'elles renferment.\r
\r
> Des données biaisées peuvent provoquer de désastreux effets sociaux.\r
\r
Elle cite notamment [cet\r
article](https://ajph.aphapublications.org/doi/abs/10.2105/AJPH.2011.300275)\r
qui présente les résultats d'une étude comparant les blessures des femmes et des\r
hommes avec une ceinture de sécurité lors d'accidents de la route entre 1998\r
et 2008. La différence de 47% entre les deux sexes serait imputable\r
aux mannequins de test de l'industrie automobile dimensionnés sur des hommes.\r
\r
## Résumé de présentations\r
\r
Deux papiers ont retenu mon attention pour faciliter l'utilisation des\r
technologies du Web sémantique par les développeuses et les développeurs Web.\r
\r
### ON2TS: Typescript generation from OWL ontologies and SHACL\r
\r
[ON2TS](https://github.com/jeswr/on2ts) est un prototype permettant de générer des classes et interfaces\r
TypeScript à partir d'ontologies OWL et de règles en SHACL.  Les développeurs\r
peuvent donc utiliser directement les classes et interfaces générées pour\r
valider la structure et la forme de leurs données lors de l'exécution.\r
\r
Ce prototype utilise la bibliothèque `@ldflex/comunica`, le moteur de requêtes\r
pour langage LDflex, qui est décrit ci-dessous.\r
\r
Pour plus de détails, lisez l'[article](http://ceur-ws.org/Vol-2721/paper590.pdf).\r
\r
### LDflex: a Read/Write Linked Data Abstraction for Front-End Web Developers\r
\r
[LDflex](https://github.com/LDflex/LDflex) est un langage dédié qui fait\r
apparaîtr les données liées du Web comme des structures de données en\r
JavaScript. La [vidéo de la présentation](https://www.youtube.com/watch?v=2BHV1p2QzNw)\r
est en ligne et il est possible d'expérimentation dans un\r
[bac à sable](https://solid.github.io/ldflex-playground/).\r
\r
Selon Ruben Verborgh, une des grandes différences entre les applications Web et\r
le Web sémantique est la "prédicabilité" : la structure et l'emplacement des données\r
sont prédéfinis dans une application Web (souvent choisie par les développeurs\r
de ladite application), tandis que dans le cas du Web sémantique, les ontologies\r
sont hétérogènes et les données sont distribuées.\r
\r
Le but de LDflex est de simplifier la gestion des différents formats\r
et modes d'interrogation des serveurs de Web de données liées: des données\r
en RDF peuvent être récupérées depuis le Web puis interrogées localement en SPARQL.\r
\r
Avec LDflex il est possible de manipuler une structure de données locale, qui\r
est mise en correspondance avec les données RDF d'origine au moyen d'un contexte.\r
Par exemple, le contexte suivant permet d'écrire `user.friends` pour\r
récupérer les individus ayant un lien `foaf:knows` vers user.\r
\r
```json\r
 "@context": {\r
    "@vocab": "http://xmlns.com/foaf/0.1/",\r
    "friends": "knows",\r
    "label": "http://www.w3.org/2000/01/rdf-schema#label",\r
  }\r
```\r
\r
Si le modèle évolue, il peut suffire de modifier le contexte pour adapter\r
l'application, ce qui en simplifie la maintenance.\r
\r
LDflex semble donc à première vue une bonne alternative à rdflib.js. Comme\r
cette dernière, elle dépend toutefois des bibliothèques d'authentification Solid\r
qui prennent une [taille non négligeable\r
(~500ko)](https://bundlephobia.com/result?p=@ldflex/comunica@3.4.2) dans le\r
bundle final.\r
\r
La bibliothèque `ldflex` inclut le langage LDflex et doit être accompagnée de\r
`@ldflex/comunica`, son moteur de requêtes sur le Web.\r
\r
Un rapide test sur logilab.fr (avec l'extension CORS Everywhere\r
activée) a suffit à montrer qu'on peut utiliser [LDflex pour interroger les\r
instances de Cubicweb en version 3.28](https://solid.github.io/ldflex-playground/#%5B'https%3A%2F%2Fwww.logilab.fr%2F2474699'%5D.type)\r
\r
Autres tests et remarques :\r
- Test sur http://dbpedia.org/resource/Paris\r
    &rarr; *Mixed Blocked* depuis le bac à sable en HTTPS\r
- Test sur https://aims.fao.org/aos/agrovoc/c_30969\r
     &rarr; *301 Moved Temporarily* mais pas de requête sur l'URL cible (en HTTP)\r
- Test sur https://www.wikidata.org/entity/Q535\r
    &rarr; redirection à travers les différentes URL pour obtenir le RDF est gérée et fonctionne\r
    &rarr; requêtage en SPARQL ne fonctionne pas car l'entité est décrite en HTTP et non HTTPS dans le RDF\r
\r
Il sera intéressant de suivre l'évolution de ce projet pour répondre aux\r
questions suivantes:\r
\r
- Comment gérer plusieurs contextes simultanément (récupérer `foaf:name` et\r
  `schema:name` à la fois par exemple) ?\r
- Comment contourner le problème des requêtes *Mixed Blocked* en gardant les\r
  données distribuées sur le Web ?\r
\r
## Conclusion\r
\r
Cette expérience a été très enrichissante, comme chaque année. Je suis contente\r
qu'il y ait de plus en plus d'initiatives pour rendre le Web sémantique agréable\r
et accessible aux développeuses et aux développeurs Web. Cela va peut-être encourager\r
la valorisation des entrepôts de données liées dans des applications en production.\r
\r
Un des sujets resté sans réponse est la gestion des configurations des serveurs\r
sur le Web de données liées pour notamment la gestion des erreurs\r
[CORS](https://developer.mozilla.org/fr/docs/Web/HTTP/CORS), [Mixed\r
Blocked](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content),\r
etc.\r
\r
Rendez-vous l'année prochaine pour vérifier ces hypothèses.""" .

<https://www.logilab.fr/2474699> a cw:BlogEntry,
        <siocBlogPost> ;
    cw:content """[CubicWeb](https://cubicweb.readthedocs.io) est un cadriciel libre de gestion de\r
données sur le Web développé et maintenu par [Logilab](https://logilab.fr)\r
depuis 15 ans. Il est utilisé depuis 2010 dans des applications d'envergure\r
telles que [DataBnF](https://data.bnf.fr) ou\r
[FranceArchives](https://francearchives.fr/). Basé sur les principes du web\r
sémantique depuis sa création, il adopte à son rythme les standards du W3C pour\r
faciliter la publication de données sur le [Web de données liées\r
(LOD)](https://www.lod-cloud.net/).\r
\r
CubicWeb vient de franchir une nouvelle étape avec la version 3.28 sortie le 24\r
juin 2020, qui met à disposition la négociation de contenu HTML / RDF.\r
\r
Cette fonctionnalité a fait l'objet d'un [article\r
scientifique](http://pfia2020.fr/wp-content/uploads/2020/06/actes_IC_CH_PFIA2020.pdf)\r
et d'une démonstration lors de la conférence d'Ingénierie de Connaissance de la Plateforme Française d'Intelligence Artificielle.\r
\r
Nous allons maintenant présenter CubicWeb, les principes de la négociation de\r
contenu en général, les choix faits pour la mettre en oeuvre dans CubicWeb et\r
comment personnaliser le RDF généré.\r
\r
# Présentation de CubicWeb\r
\r
CubicWeb fonctionne par composants, appelés\r
[cubes](https://www.cubicweb.org/project), qui peuvent être combinés pour créer\r
une application (qui est elle-même un cube réutilisable).\r
Un cube est composé:\r
\r
1. 1- d'un schéma (ou modèle données) exprimé en\r
   [YAMS](https://cubicweb.readthedocs.io/en/latest/book/devrepo/datamodel/definition/),\r
   un langage qui permet d'exprimer un modèle entité-association et les\r
   permissions associées en python ;\r
\r
2. 2- d'une logique applicative ;\r
\r
3. 3- de vues (interfaces graphiques ou fonctions d'export de données).\r
\r
Lorsqu'une application est "instanciée", le schéma YAMS est compilé en un schéma\r
SQL et une base de données Postgresql est initialisée pour stocker le modèle et\r
les données de l'application.\r
\r
![Schéma YAMS du cube Blog](https://www.logilab.fr/file/2474706/raw/schema_yams_blog.png)  \r
\r
\r
La logique de l'application, écrite en Python, interagit\r
avec la base de données par le biais du schéma YAMS et du langage de requête\r
[RQL](https://cubicweb.readthedocs.io/en/3.28/book/annexes/rql/language/). Il\r
n'y a donc pas besoin d'écrire des requêtes SQL et de se préoccuper du schéma\r
physique de la base relationnelle sous-jacente.\r
\r
\r
L'introduction d'une séparation nette entre l'obtention des données via une\r
requête RQL et leur mise en forme par une vue permet d'offrir à l'utilisateur\r
une grande liberté dans son exploration de la base.\r
\r
S'il n'y a pas de vue personnalisée prévue pour une entité du modèle YAMS, une\r
vue est générée automatiquement, ce qui assure que toutes les données sont\r
visibles et manipulables, ne serait-ce qu'au travers d'une interface minimale\r
qui permet aux utilisateurs autorisés d'ajouter, éditer et supprimer les entités\r
de l'application.\r
\r
Dans cette architecture, offrir une représentation RDF d'une ressource/entité\r
consiste à définir une vue spécifique, qui traduira dans le vocabulaire RDF\r
choisi les entités définies par le modèle YAMS.\r
\r
\r
# Présentation de la négociation de contenu\r
\r
La négociation de contenu permet d'obtenir plusieurs représentations d'une même ressource à partir d'une même URL[^1].\r
\r
Une personne visitant la ressource `http://cubicweb.example.com/person/123` avec\r
son navigateur souhaite généralement obtenir la version HTML pour la lire.\r
Dans le Web de données, un robot ou un programme sera plus intéressé par la\r
représentation RDF de cette ressource pour en traiter les données.\r
\r
![Schéma d'un serveur retournant pour la même URL `http://cubicweb.example.com/person/123` soit la représentation RDF à un robot, soit la représentation HTML à un humain.](https://www.logilab.fr/file/2474735/raw/upload_597d058f2da500daa9780c1617a9a2bc.png)\r
\r
\r
La même ressource abstraite est donc mise à disposition par le serveur sous deux représentations distinctes : le RDF et le HTML.\r
Le mécanisme de négociation de contenu permet de servir ces représentations\r
depuis la même URL, qui pourra ainsi être partagée entre ces deux mondes : humain\r
et robot.\r
\r
# Implémentation de la négociation de contenu\r
\r
La négociation de contenu passe par les différents en-têtes `Accept*` d'une\r
requête HTTP. Elle peut concerner la langue avec `Accept-Language`, le jeu de\r
caractères avec `Accept-Charset`, l'encodage avec `Accept-Encoding` ou encore le\r
format avec `Accept`.\r
\r
C'est l'en-tête `Accept` qui est utilisée par le client pour spécifier qu'il\r
souhaite la représentation RDF d'une ressource dans un format donné, en\r
utilisant l'un des types\r
[MIME](https://fr.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions)\r
suivants :\r
\r
- · application/rdf+xml\r
\r
- · text/turtle\r
\r
- · text/n3\r
\r
- · application/n-quads\r
\r
- · application/n-triples\r
\r
- · application/trig\r
\r
- · application/ld+json\r
\r
Lorsqu'une requête est envoyée au serveur avec l'en-tête `Accept` et un type MIME de la liste ci-dessus, le serveur peut répondre de plusieurs façons.\r
\r
Il peut indiquer au client, via une redirection intermédiaire (303 See Other), l'URL où se trouve la ressource dans la bonne représentation. C'est le choix fait par [Virtuoso](https://virtuoso.openlinksw.com/).\r
\r
![Négociation de contenu avec réponse 303 See Other](https://www.logilab.fr/file/2474731/raw/upload_25c53ea2a8f280961bef97a2e7aec75a.png)\r
\r
Il peut également répondre en envoyant directement la description RDF dans le format correspondant au type MIME de la requête.\r
\r
![Négociation de contenu directe](https://www.logilab.fr/file/2474720/raw/upload_faee9e7c2218369a1e9912f8e74e680e.png)\r
\r
C'est le choix que nous avons fait dans CubicWeb, pour éviter une seconde\r
requête et gagner en efficacité.\r
\r
# Description RDF des entités CubicWeb\r
\r
Dans la version 3.28, CubicWeb fournit une représentation en RDF par défaut de\r
ses entités, qui contient deux «types» de triplets :\r
\r
- · ceux qui décrivent les relations et attributs du schéma [YAMS](https://cubicweb.readthedocs.io/en/latest/book/devrepo/datamodel/definition/). Ils utilisent le préfixe `http://ns.cubicweb.org/cubicweb/0.0/`, abrégé en `cubicweb`.\r
\r
- · ceux qui décrivent des relations [Dublin Core](http://dublincore.org).\r
\r
Par exemple, si vous avez une instance qui héberge des articles de blog\r
(`CustomBlogEntry`), vous pourrez exécuter :\r
\r
    curl -iH "Accept: text/turtle" http://cubicweb.example.com/customblogentry/2872\r
\r
qui retournera :\r
\r
\r
    @prefix cubicweb: <http://ns.cubicweb.org/cubicweb/0.0/> .\r
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\r
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\r
    @prefix dc: <http://purl.org/dc/elements/1.1/> .\r
\r
    # triplets Cubicweb (générés par cw_triples())\r
    <http://cubicweb.example.com/902> cubicweb:wf_info_for <http://cubicweb.example.com/901> .\r
\r
    <http://cubicweb.example.com/901> a cubicweb:CustomBlogEntry ;\r
        cubicweb:content "Ceci est le contenu de mon billet de blog" ;\r
        cubicweb:content_format "text/plain" ;\r
        cubicweb:creation_date "2020-07-09T07:59:09.339052+00:00"^^xsd:dateTime ;\r
        cubicweb:entry_of <http://cubicweb.example.com/900> ;\r
        cubicweb:modification_date "2020-07-09T07:59:29.300045+00:00"^^xsd:dateTime ;\r
        cubicweb:title "Mon billet de blog" .\r
\r
    # triplets Dublin Core (généré par dc_triples())\r
        dc:language "en" ;\r
        dc:title "Mon billet de blog" ;\r
        dc:type "Blog entry" .\r
        \r
\r
\r
# Personnaliser le RDF généré\r
\r
Pour personnaliser la représentation RDF d'un type d'entité, il faut créer une\r
classe héritant de `EntityRDFAdapter`, puis redéfinir sa méthode `triples` qui\r
doit, comme son nom l'indique, renvoyer un ensemble de triplets. Les triplets\r
sont formés avec [rdflib](https://github.com/RDFLib/rdflib).\r
\r
Par défaut, la méthode `triples` appelle les méthodes `cw_triples` et\r
`dc_triples` de `EntityRDFAdapter` pour récupérer respectivement les triplets\r
CubicWeb et les triplets Dublin Core. Ces méthodes peuvent être surchargées si\r
nécessaire.\r
\r
Le code ci-dessous montre un exemple d'adaptateur RDF pour la classe `BlogEntry`.\r
La fonction `_use_namespace` permet de relier un préfixe à son *namespace* dans\r
le graphe RDF généré, en l'ajoutant au dictionnaire `NAMESPACES` du module `cubicweb.rdf`.\r
\r
\r
\r
    from rdflib import URIRef, Namespace\r
    from cubicweb.entities.adapters import EntityRDFAdapter\r
    from cubicweb.rdf import NAMESPACES\r
\r
    NAMESPACES["sioct"] = Namespace("http://rdfs.org/sioc/types#")\r
\r
    class BlogEntryRDFAdapter(EntityRDFAdapter):\r
        __select__ = is_instance("BlogEntry")\r
\r
        def triples(self):\r
            SIOCT = self._use_namespace("sioct")\r
            RDF = self._use_namespace("rdf")\r
            yield (URIRef(self.uri), RDF.type, SIOCT.BlogPost)\r
 \r
\r
\r
## Exemple de triplets personnalisés\r
\r
Dans la version 1.14.0 du cube _blog_ sortie le 24 juin 2020, l'ontologie [SIOC](http://sioc-project.org/) (Semantically-Interlinked Online Communities) a été utilisée pour décrire les entités relatives aux blogs.\r
\r
Voici le résultat obtenu pour un billet de blog :\r
\r
\r
    curl -iH "Accept: text/turtle" https://www.logilab.fr/blogentry/2872\r
\r
\r
qui renverra:\r
\r
\r
    @prefix dcterms: <http://purl.org/dc/terms/> .\r
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\r
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\r
    @prefix sioc: <http://rdfs.org/sioc/ns#> .\r
    @prefix sioct: <http://rdfs.org/sioc/types#> .\r
    @prefix xml: <http://www.w3.org/XML/1998/namespace> .\r
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\r
\r
    <http://www.logilab.fr/2872> a sioct:BlogPost ;\r
        dcterms:date "2019-06-28T15:28:31.852530+00:00"^^xsd:dateTime ;\r
        dcterms:format "text/markdown" ;\r
        dcterms:modified "2020-06-19T13:26:20.750747+00:00"^^xsd:dateTime ;\r
        dcterms:title "SemWeb.Pro 2019 : envoyez votre proposition avant samedi 31 août !" ;\r
        sioc:container <http://beta.logilab.fr1377> ;\r
        sioc:content \"\"\"La prochaine édition de SemWeb.Pro aura lieu mardi 3 décembre à Paris.\\r\r
    \\r\r
    ![image](<https://www.logilab.fr/file/2873/raw>)\\r\r
    \\r\r
    Nous vous invitons à soumettre vos propositions de présentation en [répondant à l'appel à communication](<http://www.semweb.pro/semwebpro-2019.html>) **avant le 31 août 2019**.\\r\r
    \\r\r
    Pour être tenu informé de l'ouverture de la billetterie, envoyez un courriel à contact at semweb.pro en demandant à être inscrit à la liste d'information.\"\"\" .\r
    \r
\r
\r
# Les prochaines étapes pour CubicWeb\r
\r
Permettre la négociation de contenu est une étape de nos travaux actuels pour faire de CubicWeb une brique à part entière du [LOD](https://fr.wikipedia.org/wiki/Linked_Open_Data).\r
Nous travaillons déjà à la génération d'archive RDF pour faciliter l'export, mais également à la possibilité d'interroger la base en SPARQL, en plus du [RQL](https://cubicweb.readthedocs.io/en/3.28/book/annexes/rql/language/#rql).\r
\r
[^1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation""" ;
    cw:content_format "text/markdown" ;
    cw:creation_date "2020-09-30T09:23:08.619536+00:00"^^xsd:dateTime ;
    cw:cw_source <http://beta.logilab.fr1> ;
    cw:entry_of <http://beta.logilab.fr1377> ;
    cw:has_creator <https://www.logilab.fr/9342011> ;
    cw:heading """[CubicWeb](https://cubicweb.readthedocs.io) est un cadriciel libre de gestion de\r
données sur le Web développé et maintenu par [Logilab](https://logilab.fr)\r
depuis 15 ans. Il est utilisé depuis 2010 dans des applications d'envergure\r
telles que [DataBnF](https://data.bnf.fr) ou\r
[FranceAr...""" ;
    cw:in_state <http://beta.logilab.fr1339> ;
    cw:modification_date "2020-09-30T11:06:48.229297+00:00"^^xsd:dateTime ;
    cw:title "Négociation de contenu dans CubicWeb" ;
    cw:word_count 1170 ;
    dcterms:title "Négociation de contenu dans CubicWeb" ;
    <sioccontent> """[CubicWeb](https://cubicweb.readthedocs.io) est un cadriciel libre de gestion de\r
données sur le Web développé et maintenu par [Logilab](https://logilab.fr)\r
depuis 15 ans. Il est utilisé depuis 2010 dans des applications d'envergure\r
telles que [DataBnF](https://data.bnf.fr) ou\r
[FranceArchives](https://francearchives.fr/). Basé sur les principes du web\r
sémantique depuis sa création, il adopte à son rythme les standards du W3C pour\r
faciliter la publication de données sur le [Web de données liées\r
(LOD)](https://www.lod-cloud.net/).\r
\r
CubicWeb vient de franchir une nouvelle étape avec la version 3.28 sortie le 24\r
juin 2020, qui met à disposition la négociation de contenu HTML / RDF.\r
\r
Cette fonctionnalité a fait l'objet d'un [article\r
scientifique](http://pfia2020.fr/wp-content/uploads/2020/06/actes_IC_CH_PFIA2020.pdf)\r
et d'une démonstration lors de la conférence d'Ingénierie de Connaissance de la Plateforme Française d'Intelligence Artificielle.\r
\r
Nous allons maintenant présenter CubicWeb, les principes de la négociation de\r
contenu en général, les choix faits pour la mettre en oeuvre dans CubicWeb et\r
comment personnaliser le RDF généré.\r
\r
# Présentation de CubicWeb\r
\r
CubicWeb fonctionne par composants, appelés\r
[cubes](https://www.cubicweb.org/project), qui peuvent être combinés pour créer\r
une application (qui est elle-même un cube réutilisable).\r
Un cube est composé:\r
\r
1. 1- d'un schéma (ou modèle données) exprimé en\r
   [YAMS](https://cubicweb.readthedocs.io/en/latest/book/devrepo/datamodel/definition/),\r
   un langage qui permet d'exprimer un modèle entité-association et les\r
   permissions associées en python ;\r
\r
2. 2- d'une logique applicative ;\r
\r
3. 3- de vues (interfaces graphiques ou fonctions d'export de données).\r
\r
Lorsqu'une application est "instanciée", le schéma YAMS est compilé en un schéma\r
SQL et une base de données Postgresql est initialisée pour stocker le modèle et\r
les données de l'application.\r
\r
![Schéma YAMS du cube Blog](https://www.logilab.fr/file/2474706/raw/schema_yams_blog.png)  \r
\r
\r
La logique de l'application, écrite en Python, interagit\r
avec la base de données par le biais du schéma YAMS et du langage de requête\r
[RQL](https://cubicweb.readthedocs.io/en/3.28/book/annexes/rql/language/). Il\r
n'y a donc pas besoin d'écrire des requêtes SQL et de se préoccuper du schéma\r
physique de la base relationnelle sous-jacente.\r
\r
\r
L'introduction d'une séparation nette entre l'obtention des données via une\r
requête RQL et leur mise en forme par une vue permet d'offrir à l'utilisateur\r
une grande liberté dans son exploration de la base.\r
\r
S'il n'y a pas de vue personnalisée prévue pour une entité du modèle YAMS, une\r
vue est générée automatiquement, ce qui assure que toutes les données sont\r
visibles et manipulables, ne serait-ce qu'au travers d'une interface minimale\r
qui permet aux utilisateurs autorisés d'ajouter, éditer et supprimer les entités\r
de l'application.\r
\r
Dans cette architecture, offrir une représentation RDF d'une ressource/entité\r
consiste à définir une vue spécifique, qui traduira dans le vocabulaire RDF\r
choisi les entités définies par le modèle YAMS.\r
\r
\r
# Présentation de la négociation de contenu\r
\r
La négociation de contenu permet d'obtenir plusieurs représentations d'une même ressource à partir d'une même URL[^1].\r
\r
Une personne visitant la ressource `http://cubicweb.example.com/person/123` avec\r
son navigateur souhaite généralement obtenir la version HTML pour la lire.\r
Dans le Web de données, un robot ou un programme sera plus intéressé par la\r
représentation RDF de cette ressource pour en traiter les données.\r
\r
![Schéma d'un serveur retournant pour la même URL `http://cubicweb.example.com/person/123` soit la représentation RDF à un robot, soit la représentation HTML à un humain.](https://www.logilab.fr/file/2474735/raw/upload_597d058f2da500daa9780c1617a9a2bc.png)\r
\r
\r
La même ressource abstraite est donc mise à disposition par le serveur sous deux représentations distinctes : le RDF et le HTML.\r
Le mécanisme de négociation de contenu permet de servir ces représentations\r
depuis la même URL, qui pourra ainsi être partagée entre ces deux mondes : humain\r
et robot.\r
\r
# Implémentation de la négociation de contenu\r
\r
La négociation de contenu passe par les différents en-têtes `Accept*` d'une\r
requête HTTP. Elle peut concerner la langue avec `Accept-Language`, le jeu de\r
caractères avec `Accept-Charset`, l'encodage avec `Accept-Encoding` ou encore le\r
format avec `Accept`.\r
\r
C'est l'en-tête `Accept` qui est utilisée par le client pour spécifier qu'il\r
souhaite la représentation RDF d'une ressource dans un format donné, en\r
utilisant l'un des types\r
[MIME](https://fr.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions)\r
suivants :\r
\r
- · application/rdf+xml\r
\r
- · text/turtle\r
\r
- · text/n3\r
\r
- · application/n-quads\r
\r
- · application/n-triples\r
\r
- · application/trig\r
\r
- · application/ld+json\r
\r
Lorsqu'une requête est envoyée au serveur avec l'en-tête `Accept` et un type MIME de la liste ci-dessus, le serveur peut répondre de plusieurs façons.\r
\r
Il peut indiquer au client, via une redirection intermédiaire (303 See Other), l'URL où se trouve la ressource dans la bonne représentation. C'est le choix fait par [Virtuoso](https://virtuoso.openlinksw.com/).\r
\r
![Négociation de contenu avec réponse 303 See Other](https://www.logilab.fr/file/2474731/raw/upload_25c53ea2a8f280961bef97a2e7aec75a.png)\r
\r
Il peut également répondre en envoyant directement la description RDF dans le format correspondant au type MIME de la requête.\r
\r
![Négociation de contenu directe](https://www.logilab.fr/file/2474720/raw/upload_faee9e7c2218369a1e9912f8e74e680e.png)\r
\r
C'est le choix que nous avons fait dans CubicWeb, pour éviter une seconde\r
requête et gagner en efficacité.\r
\r
# Description RDF des entités CubicWeb\r
\r
Dans la version 3.28, CubicWeb fournit une représentation en RDF par défaut de\r
ses entités, qui contient deux «types» de triplets :\r
\r
- · ceux qui décrivent les relations et attributs du schéma [YAMS](https://cubicweb.readthedocs.io/en/latest/book/devrepo/datamodel/definition/). Ils utilisent le préfixe `http://ns.cubicweb.org/cubicweb/0.0/`, abrégé en `cubicweb`.\r
\r
- · ceux qui décrivent des relations [Dublin Core](http://dublincore.org).\r
\r
Par exemple, si vous avez une instance qui héberge des articles de blog\r
(`CustomBlogEntry`), vous pourrez exécuter :\r
\r
    curl -iH "Accept: text/turtle" http://cubicweb.example.com/customblogentry/2872\r
\r
qui retournera :\r
\r
\r
    @prefix cubicweb: <http://ns.cubicweb.org/cubicweb/0.0/> .\r
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\r
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\r
    @prefix dc: <http://purl.org/dc/elements/1.1/> .\r
\r
    # triplets Cubicweb (générés par cw_triples())\r
    <http://cubicweb.example.com/902> cubicweb:wf_info_for <http://cubicweb.example.com/901> .\r
\r
    <http://cubicweb.example.com/901> a cubicweb:CustomBlogEntry ;\r
        cubicweb:content "Ceci est le contenu de mon billet de blog" ;\r
        cubicweb:content_format "text/plain" ;\r
        cubicweb:creation_date "2020-07-09T07:59:09.339052+00:00"^^xsd:dateTime ;\r
        cubicweb:entry_of <http://cubicweb.example.com/900> ;\r
        cubicweb:modification_date "2020-07-09T07:59:29.300045+00:00"^^xsd:dateTime ;\r
        cubicweb:title "Mon billet de blog" .\r
\r
    # triplets Dublin Core (généré par dc_triples())\r
        dc:language "en" ;\r
        dc:title "Mon billet de blog" ;\r
        dc:type "Blog entry" .\r
        \r
\r
\r
# Personnaliser le RDF généré\r
\r
Pour personnaliser la représentation RDF d'un type d'entité, il faut créer une\r
classe héritant de `EntityRDFAdapter`, puis redéfinir sa méthode `triples` qui\r
doit, comme son nom l'indique, renvoyer un ensemble de triplets. Les triplets\r
sont formés avec [rdflib](https://github.com/RDFLib/rdflib).\r
\r
Par défaut, la méthode `triples` appelle les méthodes `cw_triples` et\r
`dc_triples` de `EntityRDFAdapter` pour récupérer respectivement les triplets\r
CubicWeb et les triplets Dublin Core. Ces méthodes peuvent être surchargées si\r
nécessaire.\r
\r
Le code ci-dessous montre un exemple d'adaptateur RDF pour la classe `BlogEntry`.\r
La fonction `_use_namespace` permet de relier un préfixe à son *namespace* dans\r
le graphe RDF généré, en l'ajoutant au dictionnaire `NAMESPACES` du module `cubicweb.rdf`.\r
\r
\r
\r
    from rdflib import URIRef, Namespace\r
    from cubicweb.entities.adapters import EntityRDFAdapter\r
    from cubicweb.rdf import NAMESPACES\r
\r
    NAMESPACES["sioct"] = Namespace("http://rdfs.org/sioc/types#")\r
\r
    class BlogEntryRDFAdapter(EntityRDFAdapter):\r
        __select__ = is_instance("BlogEntry")\r
\r
        def triples(self):\r
            SIOCT = self._use_namespace("sioct")\r
            RDF = self._use_namespace("rdf")\r
            yield (URIRef(self.uri), RDF.type, SIOCT.BlogPost)\r
 \r
\r
\r
## Exemple de triplets personnalisés\r
\r
Dans la version 1.14.0 du cube _blog_ sortie le 24 juin 2020, l'ontologie [SIOC](http://sioc-project.org/) (Semantically-Interlinked Online Communities) a été utilisée pour décrire les entités relatives aux blogs.\r
\r
Voici le résultat obtenu pour un billet de blog :\r
\r
\r
    curl -iH "Accept: text/turtle" https://www.logilab.fr/blogentry/2872\r
\r
\r
qui renverra:\r
\r
\r
    @prefix dcterms: <http://purl.org/dc/terms/> .\r
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\r
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\r
    @prefix sioc: <http://rdfs.org/sioc/ns#> .\r
    @prefix sioct: <http://rdfs.org/sioc/types#> .\r
    @prefix xml: <http://www.w3.org/XML/1998/namespace> .\r
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\r
\r
    <http://www.logilab.fr/2872> a sioct:BlogPost ;\r
        dcterms:date "2019-06-28T15:28:31.852530+00:00"^^xsd:dateTime ;\r
        dcterms:format "text/markdown" ;\r
        dcterms:modified "2020-06-19T13:26:20.750747+00:00"^^xsd:dateTime ;\r
        dcterms:title "SemWeb.Pro 2019 : envoyez votre proposition avant samedi 31 août !" ;\r
        sioc:container <http://beta.logilab.fr1377> ;\r
        sioc:content \"\"\"La prochaine édition de SemWeb.Pro aura lieu mardi 3 décembre à Paris.\\r\r
    \\r\r
    ![image](<https://www.logilab.fr/file/2873/raw>)\\r\r
    \\r\r
    Nous vous invitons à soumettre vos propositions de présentation en [répondant à l'appel à communication](<http://www.semweb.pro/semwebpro-2019.html>) **avant le 31 août 2019**.\\r\r
    \\r\r
    Pour être tenu informé de l'ouverture de la billetterie, envoyez un courriel à contact at semweb.pro en demandant à être inscrit à la liste d'information.\"\"\" .\r
    \r
\r
\r
# Les prochaines étapes pour CubicWeb\r
\r
Permettre la négociation de contenu est une étape de nos travaux actuels pour faire de CubicWeb une brique à part entière du [LOD](https://fr.wikipedia.org/wiki/Linked_Open_Data).\r
Nous travaillons déjà à la génération d'archive RDF pour faciliter l'export, mais également à la possibilité d'interroger la base en SPARQL, en plus du [RQL](https://cubicweb.readthedocs.io/en/3.28/book/annexes/rql/language/#rql).\r
\r
[^1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation""" .

<https://www.logilab.fr/4716152> a cw:BlogEntry,
        <siocBlogPost> ;
    cw:content """Chloë Fize (Service interministériel des Archives de France), Elodie\r
Thiéblin (Logilab)\r
\r
# Présentation générale de FranceArchives\r
\r
## Qu'est-ce que c'est les archives?\r
\r
Selon le code du patrimoine, les archives sont *l'ensemble des\r
documents, y compris les données, quels que soient leur date, leur forme\r
et leur support matériel, **produits ou reçus** par toute personne\r
physique ou morale, et par tout organisme public ou privé, **dans\r
l'exercice de leur activité**. Ces documents sont soit conservés par\r
leurs créateurs ou leurs successeurs pour faire la preuve d'un droit ou\r
d'un événement, soit transmis à l'institution d'archives compétente en\r
raison de leur valeur\r
historique*...\r
\r
![](https://www.logilab.fr/file/4716050/raw/upload_a1da9a1855a2eb87eaebea9d334ef3de.png)\r
\r
Elementaire non ?\r
\r
## Les archives sont plus simplement des documents, divers et variés !\r
\r
![](https://www.logilab.fr/file/4715813/raw/upload_a3366da4a3ab0f51c109cb4802d708db.png)\r
![](https://www.logilab.fr/file/4716059/raw/upload_8126e2310bb48b17ec131e1912b79d80.PNG)\r
![](https://www.logilab.fr/file/4716074/raw/upload_3a6685c648e4d82887dd70e388a552a8.png)\r
![](https://www.logilab.fr/file/4716085/raw/upload_c2a6040027233f2cb3cb6c63e6251593.png)\r
![](https://www.logilab.fr/file/4716094/raw/upload_d3bc28b06c0bcba54665819967461166.png)\r
\r
Dans notre imaginaire, en général, les archives ne sont que de vieux\r
papiers poussiéreux, rédigés dans des langues obscures et à première vue\r
indéchiffrables, jalousement cachés au fond de sombres et froids\r
placards... Et dans le pire des cas, elles sont cachées dans les\r
sous-sols ou les greniers... Un petit peu comme ça :\r
\r
![Image libre de droit *Pixabay*](https://www.logilab.fr/file/4715846/raw/upload_e50c35a6e05e3829de386a38dff624d6.jpg)\r
\r
Mais détrompez-vous, les documents d'archives sont partout et peuvent\r
être bien plus agréables à admirer que vous ne l'imaginez. En France,\r
plus de **4 000 kilomètres linéaires** d'archives sont conservés dans\r
plus de **500 services** d'archives nationales, régionales,\r
départementales et municipales sans compter les services d'archives\r
privés (entreprises, associations, etc). On regroupe les documents en\r
**fonds**.\\\r
Voici des fonds, bien proprement rangés dans leurs cartons... C'est\r
quand même plus sympathique ?\r
\r
![Photographie des grands dépôts des Archives nationales, site de Paris,\r
magasin du Trésor des Chartes (série J) ©Chloe FIZE, 2017](https://www.logilab.fr/file/4715882/raw/upload_769f7265317495be9646e1f5a74194af.JPG)\r
\r
Mais comment s'y retrouver ? Comment savoir que LE document que je\r
recherche est bien dans cette boite nommée simplement par des lettres et\r
des chiffres ? Pour cela, il faut les décrire et ensuite les communiquer\r
à qui veut les consulter. Car la vocation première des archives, c'est\r
que tout le monde puisse en effet les consulter... **Oui, oui, y compris\r
vous !**\r
\r
## Ressources en ligne des archives\r
\r
Les archivistes ont toujours cherché à exploiter les technologies les\r
plus en pointe pour communiquer à tous les publics les documents qu'ils\r
conservent : microfilms, numérisation, site web... Et de fait, depuis\r
plus de **20 ans**, les services d'archives mettent à disposition de\r
tous des inventaires avec ou sans documents numérisés, consultables\r
directement en ligne sur plus de **300 sites internet**.\r
\r
![Copie d'écran du site des archives départementales des Vosges, mars\r
2021.\r
](https://www.logilab.fr/file/4715901/raw/upload_c31fab384e283564cd97874131967e6d.png)\r
\r
La raison? Que tout le monde puisse y avoir **accès** ! Eh oui, les\r
archives c'est comme la bonne humeur, ça se commmunique, et par tous les\r
moyens !\r
![:sunny:](https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/sunny.png)\r
\r
C'est là toute la vocation du **portail FranceArchives** :\r
\r
-   Permettre aux chercheurs, étudiants, curieux, amateurs de généalogie\r
    ou qui que vous soyez, de repérer les ressources de nombreux\r
    services d'archives publics et privés pour, dans un second temps,\r
    les consulter sur les sites web ou dans les salles de lecture de ces\r
    services.\r
\r
-   Valoriser les fonds et services d'archives des quatre coins de la\r
    France.\r
\r
-   Mettre à disposition des ressources archivistiques professionnelles\r
    ou des textes de loi.\r
\r
## Comment y accéder?\r
\r
L'accès et la recherche sur le portail sont construits pour être les\r
plus intuitifs possible et pour mener le chercheur, amateur ou expert à\r
trouver son bonheur dans cette caverne aux merveilles... Suivez le guide\r
!\r
\r
# FranceArchives\r
\r
\r
## FranceArchives : qu'est-ce que c'est ?\r
\r
Le portail est porté par le Ministère de la Culture et a été mis en\r
ligne au mois de **mars 2017**. Il est géré et maintenu par le service\r
interministériel des archives de France (SIAF).\r
\r
**FranceArchives en chiffres :**\\\r
Au mois de **mars 2021**, la **105ème** convention d\\'adhésion au\r
portail FranceArchives a été signée. Vous pouvez donc consulter les\r
fonds de 2 ministères, 4 services à compétences nationales (Archives\r
nationales, Archives nationales du monde du travail, Archives nationales\r
d\\'Outre-Mer et la Médiathèque de l\\'architecture et du patrimoine), 63\r
archives départementals, 19 archives municipales, 13 établissements\r
publics, 4 associations ou entreprises.\r
\r
Plus de **57 000** instruments de recherche sont consultables et\r
réutilisables. Ils contiennent près de **13 000 000** de descriptions.\r
\r
## FranceArchives : comment ça fonctionne ?\r
\r
### Effectuer une requête simple\r
\r
![](https://www.logilab.fr/file/4715908/raw/upload_0a0a33aa1d4a6c2be711286423d2c19f.png)\r
\r
### Tout en s'aidant de l'autocomplétion\r
\r
![](https://www.logilab.fr/file/4715915/raw/upload_f6b700b5ce603bdb7bbdc157b776108f.png)\r
\r
### Et enfin affiner sa recherche grâce aux facettes\r
\r
![](https://www.logilab.fr/file/4715924/raw/upload_eb059235d12f746072243157a1612889.png)\r
\r
# Les archives et leurs métadonnées\r
\r
Vous avez réussi à trouver votre bonheur ? Parfait ! Mais vous n'avez\r
pas trouvé de documents d'archives numérisés ? C'est normal, seulement\r
5% des archives conservées en France sont numérisées. Le reste est\r
accessible en ligne uniquement grâce aux descriptions ou métadonnées et\r
doit être consulté dans les salles de lecture des services qui les\r
conservent.\r
\r
Le document d'archives numérisé est une photographie du document. Sur\r
FranceArchives, vous pourrez trouver certains documents numérisés, à\r
l'image du célèbre exemple qui suit :\r
\r
![*Lettre cryptée échangée entre la reine Marie-Antoinette et le comte\r
Axel de Fersen,\\\r
datée du 28 juin 1791 - AN440AP/1, dossier 1, pièce 6, page 1*.](https://www.logilab.fr/file/4715934/raw/upload_9a9ed8ef4981fbf137a08c8b154f5448.jpg)\r
\r
Mais vous ne trouverez la plupart du temps que des métadonnées, à savoir\r
le contenu de la lettre, son auteur, son destinataire, sa date, des\r
remarques sur sa forme et/ou son fond. C'est là qu'est la différence\r
entre un document numérisé et une métadonnée numérique.\r
\r
Vous voulez un exemple? Très bien, les métadonnées numériques c'est...\r
ça :\r
\r
![](https://www.logilab.fr/file/4715962/raw/upload_cca0bcbde6781e3d50978745459ac7ef.png)\r
\r
Avouez que ça vous fait rêver ! Eh bien cette belle lettre que vous avez\r
vu précédemment peut être transformée en données et donc ressembler à...\r
ces lignes en couleurs et comportant plein d'informations pouvant\r
paraitre incompréhensibles. N'ayez pas peur on va tout vous expliquer.\r
\r
\r
## Mais alors d'où viennent les métadonnées et à quoi ressemblent-elles?\r
\r
Les services d'archives décrivent leurs fonds dans des *instruments de\r
recherche*. Ce sont ces instruments qui sont mis en ligne sur\r
FranceArchives et consultables par tout un chacun. Ils ne donnent pas\r
accès au document numérisé, comme nous l'évoquions plus haut, mais à sa\r
*description*. Ces éléments permettent de décrire avec précision les\r
documents que l'on va retrouver dans le fonds et donc de répondre à vos\r
multiples questionnements sans sortir le document de son joli carton de\r
protection. Quand vous consultez une notice sur le portail, il vous est\r
ensuite possible d'accèder directement au site web du service qui\r
conserve le document décrit grâce au bouton *Accéder au site*.\r
\r
Alors où sont passées les données que nous avons vu plus haut ? Elles\r
sont là, partout, juste sous vos yeux. Vous les voyez ? Regardez...\r
\r
### Voici ce que vous voyez lorsque vous requêtez FranceArchives:\r
\r
![](https://www.logilab.fr/file/4715970/raw/upload_a4f5919e2f4332891fecb2bcbbb7dd99.png)\r
\r
### Voici ce que nous traitons :\r
\r
![](https://www.logilab.fr/file/4715977/raw/upload_a1fdf6b29b1ef79028c81cd9216f6c51.png)\r
\r
Les métadonnées sont bien là. Cet intermédiaire invisible pour\r
l'utilisateur permet de mettre en forme de façon lisible les\r
informations.\r
\r
Mais alors comment êtes-vous parvenu jusqu'à ce résultat ? Comment,\r
parmi les milliers de résultats, les seuls qui vous ont été proposés\r
ont-ils été choisis ?\r
\r
Vous avez vu les nombreux liens cliquables en bleu et soulignés que vous\r
trouvez un peu partout... Ce souvent des noms de lieux, de personnes ou\r
des thèmes, eh bien tous ces termes sont des **autorités** qui sont\r
extraites des instruments de recherche pour être groupées avec leurs\r
semblables et alignées sur de plus gros portails de données tels que\r
Data.BnF ou Wikidata.\r
\r
## Quelle en est l'utilité ?\r
\r
L'identification de ces ressources permet de lever l'ambiguïté sur un\r
nom : être sûr qu'on parle bien de la même personne ; ou relier\r
plusieurs noms à une même ressource.\r
\r
Prenons un exemple : "**Paris**" c'est à la fois le nom de la capitale\r
française, d'un genre de plante et d'une figure mythologique : 3\r
ressources différentes (donc 3 URI) portent le même nom. Paris a beau\r
être une ville fleurie et mythique, il est tout de même important de\r
pouvoir différencier tous ces éléments lors d'une requête.\r
\r
Mais certains éléments peuvent présenter un cas inverse : l'autrice\r
Dominique Aury est également connue sous plusieurs pseudonymes très\r
différents les uns des autres : Anne Cécile Desclos et Pauline Réage.\r
Ici il y a donc une seule ressource (1 URI) qui porte ces 3 noms. Pour\r
que vous trouviez toujours le même résultat, ces 3 noms doivent être\r
tous rattachés à la même personne et ne pas figurer comme étant 3\r
éléments différents et distincts.\r
\r
![](https://www.logilab.fr/file/4715984/raw/upload_65e895ac550be1012277f7a34ab226dc.png)\r
\r
Cette différentiation ou ce regroupement est réalisé grace à l'URL (vous\r
savez les liens incompréhensibles écrits dans votre barre de\r
navigation...Eh bien en réalité ils ont un sens !)\\\r
L'utilisation d'URL pour identifier les ressources est la base du Web\r
sémantique (ou Web de données).\r
\r
--\\> <https://www.wikidata.org/wiki/Q90> (Capitale de France)\\\r
--\\> <https://www.wikidata.org/wiki/Q162121> (Genre de Plante)\\\r
--\\> <https://www.wikidata.org/wiki/Q167646> (Figure mythologique)\r
\r
3 "liens" différents, pour 3 thèmes complètement différents, mais qui\r
sont tous requêtables avec le même mot.\r
\r
# Le Web sémantique\r
\r
Le Web sémantique a été inventé par Tim Berners-Lee, le fondateur du\r
Web.\r
Son idée est d'utiliser les technologies du Web pour y faire transiter\r
non seulement des documents (pages Web, comme c'est le cas aujourd'hui)\r
mais aussi des données.\r
\r
Comme dans le Web que nous connaissons tous, le protocole HTTP visible\r
dans l'URL (on vous avait dit que ça avait un sens!) est utilisé pour\r
faire voyager les données. Les ressources quant à elles sont identifiées\r
par des URL (*Uniform Resource Location*) appelées aussi URI pour mettre\r
l'accent sur le côté identification (*Uniform Resource Identifier*).\r
\r
Alors, cela étant dit, qu'est-ce que cela implique concrètement ? Nous y\r
venons.\r
\r
## Pourquoi "sémantique" ?\r
\r
Le Web sémantique, aussi appelé Web de données, porte ce nom car il\r
permet aux machines de "comprendre" le contenu du Web (sémantique \\<--\\>\r
sens).\r
\r
Dans le Web de documents, nous (les humains) voyons et comprenons les\r
informations suivantes :\r
\r
en HTML\r
\r
```html\r
<h1>Les berlingots Eysséric</h1>\r
\r
<p>La fabrique Eysséric produit des berlingots dans le\r
<a href="https://www.vaucluse.fr/">Vaucluse</a>.\r
</p>\r
```\r
\r
l'ordinateur, lui, comprend :\r
\r
```html\r
<h1>??? ??????????</h1>\r
\r
<p>?? ???????? ???????? ??????? ??? ?????????? ???? ??\r
<a href="https://www.vaucluse.fr/">????????</a>.\r
</p>\r
```\r
\r
Nous aimerions qu'il puisse comprendre:\r
\r
  Nom                 Produit      Localisation\r
  ------------------- ------------ --------------\r
  Fabrique Eysséric   berlingots   Vaucluse\r
\r
Nous souhaiterions que l'ordinateur comprenne les relations entre les\r
éléments et la nature de ces éléments, comme nous en somme.\r
\r
Pour cela, les données transmises doivent être structurées et\r
identifiées (nous l'avons vu plus haut, grâce aux URI).\r
\r
## Données structurées\r
\r
![](https://www.logilab.fr/file/4715989/raw/upload_e057d3ddc4d7fac78cd34173241f3da5.png)\r
Le W3C (*World Wide Web Consortium*) définit des standards pour le Web\r
(encore un morceau de votre barre de navigation décrypté !).\r
\r
Pour représenter les données dans le Web sémantique, on utilise ces\r
standards et le *Resource Description Format* (RDF). Ce dernier consiste\r
à représenter les données sous forme de **triplets** utilisant des URI,\r
comme des phrases très simples : sujet - prédicat (verbe) - objet.\r
\r
Les données structurées de notre exemple deviennent alors :\r
\r
    https://monUrl.fr/FabriqueEysseric https://monUrl.fr/produit https://monUrl.fr/Berlingot.\r
\r
    https://monUrl.fr/FabriqueEysseric https://monUrl.fr/localisation https://monUrl.fr/Vaucluse.\r
\r
Et parce qu'on sait bien qu'un joli dessin vaut mille mots, on peut\r
aussi représenter les triplets bout à bout sous forme de graphe.\r
\r
![](https://www.logilab.fr/file/4715997/raw/upload_3aac8487ce9785f6cad07e90e4ef31ed.png)\r
\r
En récupérant les données relatives aux autres ressources du Web, on\r
peut étendre le graphe de données, tant qu'il y a des données.\\\r
À l'instar du Web de documents où les documents sont interconnectés\r
grâce aux liens hypertexte, les ressources sont reliées les unes aux\r
autres dans le Web de données.\r
\r
![](https://www.logilab.fr/file/4716006/raw/upload_ac80845ddc388889531ac6fb78c92a30.png)\r
\r
# Pourquoi utiliser le Web sémantique dans FranceArchives ?\r
\r
  Besoin FranceArchives                                  Réponse Web sémantique\r
  ------------------------------------------------------ ---------------------------------------\r
  Désambiguïser les autorités                            Utilisations d'URI comme identifiants\r
  Données accessibles                                    Protocole HTTP\r
  Référencement par moteurs généralistes                 Contribution au google graph\r
  Alignements référentiels nationaux                     Ontologies, alignements\r
  Enrichissement des données propres à FA                Geonames, data.bnf, wikidata\r
  Limiter la responsabilité de maintenance des données   Décentralisation\r
\r
Parmi les besoins de FranceArchives, nous avons déjà vu que\r
l'utilisation d'URL comme identifiants (ce qui en fait des URI) répond\r
au problème de désambiguïsation des autorités.\r
\r
De même, le protocole HTTP, base du Web, permet de rendre les données\r
disponibles sur le Web sans application tierce.\r
\r
Maintenant que nous avons tous ces éléments, il ne reste plus qu'à\r
chercher !\r
\r
## Référencement par les moteurs de recherche généralistes\r
\r
Certains moteurs de recherche (dont le plus connu de tous) se mettent au\r
RDF !\r
\r
Ils utilisent des données en RDF insérées dans le code d'une page Web\r
pour mieux comprendre de quel sujet elle traite.\r
\r
Grâce à cette compréhension, ils peuvent afficher certains résultats\r
sous des formes personnalisées... Exemple !\r
\r
Le moteur de recherche utilise les triplets RDF pour afficher les\r
recettes de pâte à crêpes sous forme de petites cartes :\\\r
![](https://www.logilab.fr/file/4716017/raw/upload_4aa3b1170d2bd679a327c2917cc71698.png)\r
\r
Ainsi, vous n'avez même pas besoin de chercher LA meilleure recette de\r
pâte à crêpes, votre ami le moteur de recherche l'a fait pour vous. Et\r
comme il sait que vous n'aimez pas perdre votre temps et que vous aimez\r
quand même bien quand il y a de jolies images qui vous mettent l'eau à\r
la bouche, il vous propose de ne pas utiliser la molette de votre souris\r
et de cliquer directement sur la carte que vous préférez.\r
\r
## Alignement vers des référentiels\r
\r
Il y a plusieurs avantages à lier les données que nous publions sur le\r
Web de données à des référentiels nationaux (ou internationaux).\r
\r
### Ontologie de référence\r
\r
Une ontologie (ou un vocabulaire) est un ensemble d'URI que l'on va\r
utiliser pour représenter les prédicats (ou flèches en version graphe)\r
du RDF. L'ontologie définit les types de ressources présentes dans les\r
données et les relations qui peuvent exister entre elles.\r
\r
C'est un peu le schéma d'une base de données relationnelle ou la liste\r
des noms de colonnes d'un tableur.\r
\r
Si on compare les données au langage, l'ontologie serait la grammaire\r
ainsi qu'une partie du vocabulaire.\r
\r
Le fait d'utiliser des ontologies standards dans ces données RDF permet\r
de se "brancher" plus facilement avec d'autres graphes de données.\r
\r
### Sources de données de référence\r
\r
En liant ses données à d'autres bases de données sur le Web,\r
FranceArchives y trouve plusieurs avantages.\r
\r
Tout d'abord, cela lui permet d'**enrichir ses propres données**.\\\r
En effet, un document d'archives implique toujours des lieux et/ou des\r
personnes. On tente de normaliser les pratiques de nommage de ces\r
entités (dans quel sens on met quelle information) afin d'aider\r
davantage au liage des données : **Charles, de Gaulle (1890-1970)** ou\r
**de Gaulle, Charles** ou **Général de Gaulle (Charles, 1890-1970)**. De\r
même pour les noms de lieux : **Sumène**, **Sumène (Gard - 30)**,\r
**Sumène (Gard)**, etc.\r
\r
Dans les notices, seuls figurent généralement le nom du lieu (avec son\r
département) et le nom de la personne. En liant les données de\r
FranceArchives à d'autres bases, on peut ainsi étendre le graphe de\r
données et enrichir les informations que nous avions au départ. Comme\r
nous l'avons vu, plus il y a de mentions permettant de désambiguiser un\r
terme (à placer au Scrabble), meilleure sera la qualité de la donnée et\r
donc plus performant sera le schéma RDF et au final les résultats de\r
recherche.\r
\r
Ce schéma montre l'exemple de la notice [Sur la plage de\r
Saint-Vincent-sur-Jard...](https://francearchives.fr/fr/facomponent/e6c3ff90ff8dc0578c3fed6909b5e9968965913b)\r
dont la [description\r
RDF](https://francearchives.fr/fr/facomponent/e6c3ff90ff8dc0578c3fed6909b5e9968965913b/rdf.xml)\r
peut être obtenue en ajoutant à l'url le suffixe `/rdf.xml` ou\r
`/rdf.ttl`.\r
\r
Cette notice parle notamment de Georges Clemenceau et de la commune de\r
Saint-Vincent-Sur-Jard. Initialement, il y avait peu d'informations sur\r
ces deux ressources. En liant Saint-Vincent-sur-Jard à [son pendant dans\r
Geonames](https://www.geonames.org/2976583/saint-vincent-sur-jard.html),\r
une base de données regroupant des lieux, nous avons pu enrichir les\r
données en récupérant notamment le code postal et la population. De la\r
même manière, en liant Georges Clemenceau à [son pendant dans\r
DataBnF](https://data.bnf.fr/fr/11897013/georges_clemenceau/), nous\r
avons pu enrichir les données en récupérant notamment sa date de\r
naissance et quelques éléments biographiques notables.\r
\r
![](https://www.logilab.fr/file/4716024/raw/upload_d7d425e7f28ac146418e70bc47761bbc.png)\r
\r
Le second avantage qu'apporte l'alignement (c'est-à-dire le fait de lier\r
sa base avec une autre) est de **limiter la maintenance des données** :\r
moins on les manipule, mieux elles se portent.\r
\r
FranceArchives peut profiter d'informations libres et ouvertes sur les\r
personnes, les thèmes, les lieux pour valoriser ses données tout en se\r
concentrant sur la publication et la maintenance des données d'archives\r
uniquement.\r
\r
## data.bnf\r
\r
Le projet [data.bnf](https://data.bnf.fr/fr/about) a pour but de rendre\r
les données de la BnF **utiles et exploitables sur le web**. Elles\r
permettent notamment de rassembler des informations sur les ressources\r
conservées au sein de la BnF : **documents, ouvrages, auteurs, thèmes,\r
etc.** Les pages sont indexées par les moteurs de recherche : les\r
**données disponibles et requêtables sont souvent invisibles lors d'une\r
recherche classique** car [enfouies dans les données et\r
métadonnées]{.underline} des ressources BnF.\r
\r
Sur FranceArchives, ces liens permettent d'ajouter des informations sur\r
un sujet donné.\r
\r
## Wikidata\r
\r
[Wikidata]() est une base **open source**, **gratuite**,\r
**collaborative** et qui, de la même manière que DataBnF, met à\r
disposition des [données compréhensibles aussi bien par les **humains\r
que par les machines**]{.underline}. Cette base de données aide\r
Wikipédia en facilitant la maintenance des fameuses boites\r
d'informations que nous consultons tous dès que nous cherchons des\r
informations sur la célébre encyclopédie.\r
\r
De la même manière que la précédente, les renvois vers Wikidata ajoutent\r
une plus-value aux données consultables sur FranceArchives.\r
\r
![](https://www.logilab.fr/file/4716039/raw/upload_6dc801b8f4e41c72276459a416931f1f.png)\r
height="350"}\r
\r
## Geonames\r
\r
[Geonames](https://www.geonames.org/about.html) est une base de données\r
libres et ouvertes sur les données géographiques.\r
\r
## DataCulture\r
\r
[DataCulture](http://data.culture.fr/thesaurus/) : le Ministère de la\r
Culture publie un référentiels de sujets classés hiérarchiquement (en\r
thésaurus). Les thèmes de FranceArchives sont alignés sur les ressources\r
de DataCulture.\r
\r
# Axes futurs d'amélioration \r
\r
FranceArchives utilise déjà des technologies du Web sémantique. Pour\r
aller plus loin, les chantiers suivants sont envisagés.\r
\r
**Interrogation en SPARQL** : SPARQL (oui il faut le lire comme un mot\r
prononcé *SparKeul* et ne pas le jouer au scrabble celui-là sauf si on\r
joue en anglais, car ça fait un jeu de mot pétillant avec *to sparkle*)\r
est le langage d'interrogation du RDF. Rendre possible l'interrogation\r
des données produites dans ce langage permet aux utilisateurs et\r
utilisatrices de rechercher très précisément les informations voulues.\r
\r
**Utilisation de l'ontologie\r
[RiC-O](https://www.ica.org/standards/RiC/ontology.html)** : cette\r
ontologie (Records in Contexts - Ontology) est développée et maintenue\r
par le Conseil International des Archives. Elle est en passe de devenir\r
un standard pour le monde archivistique. L'utiliser pour décrire les\r
données de FranceArchives permettra de se brancher plus facilement aux\r
données d'autres services d'archives qui en font aussi usage.\r
\r
# *I have a dream...*\r
\r
... *that one day* tout le monde pourra rechercher simplement et\r
trouvera du premier coup toutes les informations désirées !\r
\r
Dans le monde numérique, ce qui est bien c'est qu'on peut rêver, et\r
rêver grand ! Alors que diriez-vous de pouvoir faire une requête telle\r
que : *Je cherche les archives concernant le village de naissance du\r
général de Gaulle et la période 1945-1962* et que le moteur de recherche\r
vous remonte directement les documents qui traitent exactement de ce\r
dont vous, humain, vous parlez ? Imaginez un monde où l'on pourrait\r
interroger les bases de données en langage naturel.\r
\r
Nous pouvons conclure cet article rédigé à l'occasion des Journées du\r
Logiciel Libre 2021, sur le thème des *Utopies concrètes et accessibles*\r
par cette proposition d'amélioration : un accès unique à toutes les\r
données du web, requêtables en langage naturel et sans bruit\r
documentaire... Un *International Knowledge Portal* !""" ;
    cw:content_format "text/markdown" ;
    cw:creation_date "2021-04-01T07:27:03.867866+00:00"^^xsd:dateTime ;
    cw:cw_source <http://beta.logilab.fr1> ;
    cw:entry_of <https://www.logilab.fr/3792644> ;
    cw:has_creator <https://www.logilab.fr/9342011> ;
    cw:heading "FranceArchives est un portail du service interministériel des archives de France développé par Logilab. Il utilise des technologies du Web sémantique." ;
    cw:in_state <http://beta.logilab.fr1339> ;
    cw:modification_date "2021-10-07T14:32:21.301348+00:00"^^xsd:dateTime ;
    cw:title "France Archives et le Web Sémantique" ;
    cw:word_count 2954 ;
    dcterms:title "France Archives et le Web Sémantique" ;
    <sioccontent> """Chloë Fize (Service interministériel des Archives de France), Elodie\r
Thiéblin (Logilab)\r
\r
# Présentation générale de FranceArchives\r
\r
## Qu'est-ce que c'est les archives?\r
\r
Selon le code du patrimoine, les archives sont *l'ensemble des\r
documents, y compris les données, quels que soient leur date, leur forme\r
et leur support matériel, **produits ou reçus** par toute personne\r
physique ou morale, et par tout organisme public ou privé, **dans\r
l'exercice de leur activité**. Ces documents sont soit conservés par\r
leurs créateurs ou leurs successeurs pour faire la preuve d'un droit ou\r
d'un événement, soit transmis à l'institution d'archives compétente en\r
raison de leur valeur\r
historique*...\r
\r
![](https://www.logilab.fr/file/4716050/raw/upload_a1da9a1855a2eb87eaebea9d334ef3de.png)\r
\r
Elementaire non ?\r
\r
## Les archives sont plus simplement des documents, divers et variés !\r
\r
![](https://www.logilab.fr/file/4715813/raw/upload_a3366da4a3ab0f51c109cb4802d708db.png)\r
![](https://www.logilab.fr/file/4716059/raw/upload_8126e2310bb48b17ec131e1912b79d80.PNG)\r
![](https://www.logilab.fr/file/4716074/raw/upload_3a6685c648e4d82887dd70e388a552a8.png)\r
![](https://www.logilab.fr/file/4716085/raw/upload_c2a6040027233f2cb3cb6c63e6251593.png)\r
![](https://www.logilab.fr/file/4716094/raw/upload_d3bc28b06c0bcba54665819967461166.png)\r
\r
Dans notre imaginaire, en général, les archives ne sont que de vieux\r
papiers poussiéreux, rédigés dans des langues obscures et à première vue\r
indéchiffrables, jalousement cachés au fond de sombres et froids\r
placards... Et dans le pire des cas, elles sont cachées dans les\r
sous-sols ou les greniers... Un petit peu comme ça :\r
\r
![Image libre de droit *Pixabay*](https://www.logilab.fr/file/4715846/raw/upload_e50c35a6e05e3829de386a38dff624d6.jpg)\r
\r
Mais détrompez-vous, les documents d'archives sont partout et peuvent\r
être bien plus agréables à admirer que vous ne l'imaginez. En France,\r
plus de **4 000 kilomètres linéaires** d'archives sont conservés dans\r
plus de **500 services** d'archives nationales, régionales,\r
départementales et municipales sans compter les services d'archives\r
privés (entreprises, associations, etc). On regroupe les documents en\r
**fonds**.\\\r
Voici des fonds, bien proprement rangés dans leurs cartons... C'est\r
quand même plus sympathique ?\r
\r
![Photographie des grands dépôts des Archives nationales, site de Paris,\r
magasin du Trésor des Chartes (série J) ©Chloe FIZE, 2017](https://www.logilab.fr/file/4715882/raw/upload_769f7265317495be9646e1f5a74194af.JPG)\r
\r
Mais comment s'y retrouver ? Comment savoir que LE document que je\r
recherche est bien dans cette boite nommée simplement par des lettres et\r
des chiffres ? Pour cela, il faut les décrire et ensuite les communiquer\r
à qui veut les consulter. Car la vocation première des archives, c'est\r
que tout le monde puisse en effet les consulter... **Oui, oui, y compris\r
vous !**\r
\r
## Ressources en ligne des archives\r
\r
Les archivistes ont toujours cherché à exploiter les technologies les\r
plus en pointe pour communiquer à tous les publics les documents qu'ils\r
conservent : microfilms, numérisation, site web... Et de fait, depuis\r
plus de **20 ans**, les services d'archives mettent à disposition de\r
tous des inventaires avec ou sans documents numérisés, consultables\r
directement en ligne sur plus de **300 sites internet**.\r
\r
![Copie d'écran du site des archives départementales des Vosges, mars\r
2021.\r
](https://www.logilab.fr/file/4715901/raw/upload_c31fab384e283564cd97874131967e6d.png)\r
\r
La raison? Que tout le monde puisse y avoir **accès** ! Eh oui, les\r
archives c'est comme la bonne humeur, ça se commmunique, et par tous les\r
moyens !\r
![:sunny:](https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/sunny.png)\r
\r
C'est là toute la vocation du **portail FranceArchives** :\r
\r
-   Permettre aux chercheurs, étudiants, curieux, amateurs de généalogie\r
    ou qui que vous soyez, de repérer les ressources de nombreux\r
    services d'archives publics et privés pour, dans un second temps,\r
    les consulter sur les sites web ou dans les salles de lecture de ces\r
    services.\r
\r
-   Valoriser les fonds et services d'archives des quatre coins de la\r
    France.\r
\r
-   Mettre à disposition des ressources archivistiques professionnelles\r
    ou des textes de loi.\r
\r
## Comment y accéder?\r
\r
L'accès et la recherche sur le portail sont construits pour être les\r
plus intuitifs possible et pour mener le chercheur, amateur ou expert à\r
trouver son bonheur dans cette caverne aux merveilles... Suivez le guide\r
!\r
\r
# FranceArchives\r
\r
\r
## FranceArchives : qu'est-ce que c'est ?\r
\r
Le portail est porté par le Ministère de la Culture et a été mis en\r
ligne au mois de **mars 2017**. Il est géré et maintenu par le service\r
interministériel des archives de France (SIAF).\r
\r
**FranceArchives en chiffres :**\\\r
Au mois de **mars 2021**, la **105ème** convention d\\'adhésion au\r
portail FranceArchives a été signée. Vous pouvez donc consulter les\r
fonds de 2 ministères, 4 services à compétences nationales (Archives\r
nationales, Archives nationales du monde du travail, Archives nationales\r
d\\'Outre-Mer et la Médiathèque de l\\'architecture et du patrimoine), 63\r
archives départementals, 19 archives municipales, 13 établissements\r
publics, 4 associations ou entreprises.\r
\r
Plus de **57 000** instruments de recherche sont consultables et\r
réutilisables. Ils contiennent près de **13 000 000** de descriptions.\r
\r
## FranceArchives : comment ça fonctionne ?\r
\r
### Effectuer une requête simple\r
\r
![](https://www.logilab.fr/file/4715908/raw/upload_0a0a33aa1d4a6c2be711286423d2c19f.png)\r
\r
### Tout en s'aidant de l'autocomplétion\r
\r
![](https://www.logilab.fr/file/4715915/raw/upload_f6b700b5ce603bdb7bbdc157b776108f.png)\r
\r
### Et enfin affiner sa recherche grâce aux facettes\r
\r
![](https://www.logilab.fr/file/4715924/raw/upload_eb059235d12f746072243157a1612889.png)\r
\r
# Les archives et leurs métadonnées\r
\r
Vous avez réussi à trouver votre bonheur ? Parfait ! Mais vous n'avez\r
pas trouvé de documents d'archives numérisés ? C'est normal, seulement\r
5% des archives conservées en France sont numérisées. Le reste est\r
accessible en ligne uniquement grâce aux descriptions ou métadonnées et\r
doit être consulté dans les salles de lecture des services qui les\r
conservent.\r
\r
Le document d'archives numérisé est une photographie du document. Sur\r
FranceArchives, vous pourrez trouver certains documents numérisés, à\r
l'image du célèbre exemple qui suit :\r
\r
![*Lettre cryptée échangée entre la reine Marie-Antoinette et le comte\r
Axel de Fersen,\\\r
datée du 28 juin 1791 - AN440AP/1, dossier 1, pièce 6, page 1*.](https://www.logilab.fr/file/4715934/raw/upload_9a9ed8ef4981fbf137a08c8b154f5448.jpg)\r
\r
Mais vous ne trouverez la plupart du temps que des métadonnées, à savoir\r
le contenu de la lettre, son auteur, son destinataire, sa date, des\r
remarques sur sa forme et/ou son fond. C'est là qu'est la différence\r
entre un document numérisé et une métadonnée numérique.\r
\r
Vous voulez un exemple? Très bien, les métadonnées numériques c'est...\r
ça :\r
\r
![](https://www.logilab.fr/file/4715962/raw/upload_cca0bcbde6781e3d50978745459ac7ef.png)\r
\r
Avouez que ça vous fait rêver ! Eh bien cette belle lettre que vous avez\r
vu précédemment peut être transformée en données et donc ressembler à...\r
ces lignes en couleurs et comportant plein d'informations pouvant\r
paraitre incompréhensibles. N'ayez pas peur on va tout vous expliquer.\r
\r
\r
## Mais alors d'où viennent les métadonnées et à quoi ressemblent-elles?\r
\r
Les services d'archives décrivent leurs fonds dans des *instruments de\r
recherche*. Ce sont ces instruments qui sont mis en ligne sur\r
FranceArchives et consultables par tout un chacun. Ils ne donnent pas\r
accès au document numérisé, comme nous l'évoquions plus haut, mais à sa\r
*description*. Ces éléments permettent de décrire avec précision les\r
documents que l'on va retrouver dans le fonds et donc de répondre à vos\r
multiples questionnements sans sortir le document de son joli carton de\r
protection. Quand vous consultez une notice sur le portail, il vous est\r
ensuite possible d'accèder directement au site web du service qui\r
conserve le document décrit grâce au bouton *Accéder au site*.\r
\r
Alors où sont passées les données que nous avons vu plus haut ? Elles\r
sont là, partout, juste sous vos yeux. Vous les voyez ? Regardez...\r
\r
### Voici ce que vous voyez lorsque vous requêtez FranceArchives:\r
\r
![](https://www.logilab.fr/file/4715970/raw/upload_a4f5919e2f4332891fecb2bcbbb7dd99.png)\r
\r
### Voici ce que nous traitons :\r
\r
![](https://www.logilab.fr/file/4715977/raw/upload_a1fdf6b29b1ef79028c81cd9216f6c51.png)\r
\r
Les métadonnées sont bien là. Cet intermédiaire invisible pour\r
l'utilisateur permet de mettre en forme de façon lisible les\r
informations.\r
\r
Mais alors comment êtes-vous parvenu jusqu'à ce résultat ? Comment,\r
parmi les milliers de résultats, les seuls qui vous ont été proposés\r
ont-ils été choisis ?\r
\r
Vous avez vu les nombreux liens cliquables en bleu et soulignés que vous\r
trouvez un peu partout... Ce souvent des noms de lieux, de personnes ou\r
des thèmes, eh bien tous ces termes sont des **autorités** qui sont\r
extraites des instruments de recherche pour être groupées avec leurs\r
semblables et alignées sur de plus gros portails de données tels que\r
Data.BnF ou Wikidata.\r
\r
## Quelle en est l'utilité ?\r
\r
L'identification de ces ressources permet de lever l'ambiguïté sur un\r
nom : être sûr qu'on parle bien de la même personne ; ou relier\r
plusieurs noms à une même ressource.\r
\r
Prenons un exemple : "**Paris**" c'est à la fois le nom de la capitale\r
française, d'un genre de plante et d'une figure mythologique : 3\r
ressources différentes (donc 3 URI) portent le même nom. Paris a beau\r
être une ville fleurie et mythique, il est tout de même important de\r
pouvoir différencier tous ces éléments lors d'une requête.\r
\r
Mais certains éléments peuvent présenter un cas inverse : l'autrice\r
Dominique Aury est également connue sous plusieurs pseudonymes très\r
différents les uns des autres : Anne Cécile Desclos et Pauline Réage.\r
Ici il y a donc une seule ressource (1 URI) qui porte ces 3 noms. Pour\r
que vous trouviez toujours le même résultat, ces 3 noms doivent être\r
tous rattachés à la même personne et ne pas figurer comme étant 3\r
éléments différents et distincts.\r
\r
![](https://www.logilab.fr/file/4715984/raw/upload_65e895ac550be1012277f7a34ab226dc.png)\r
\r
Cette différentiation ou ce regroupement est réalisé grace à l'URL (vous\r
savez les liens incompréhensibles écrits dans votre barre de\r
navigation...Eh bien en réalité ils ont un sens !)\\\r
L'utilisation d'URL pour identifier les ressources est la base du Web\r
sémantique (ou Web de données).\r
\r
--\\> <https://www.wikidata.org/wiki/Q90> (Capitale de France)\\\r
--\\> <https://www.wikidata.org/wiki/Q162121> (Genre de Plante)\\\r
--\\> <https://www.wikidata.org/wiki/Q167646> (Figure mythologique)\r
\r
3 "liens" différents, pour 3 thèmes complètement différents, mais qui\r
sont tous requêtables avec le même mot.\r
\r
# Le Web sémantique\r
\r
Le Web sémantique a été inventé par Tim Berners-Lee, le fondateur du\r
Web.\r
Son idée est d'utiliser les technologies du Web pour y faire transiter\r
non seulement des documents (pages Web, comme c'est le cas aujourd'hui)\r
mais aussi des données.\r
\r
Comme dans le Web que nous connaissons tous, le protocole HTTP visible\r
dans l'URL (on vous avait dit que ça avait un sens!) est utilisé pour\r
faire voyager les données. Les ressources quant à elles sont identifiées\r
par des URL (*Uniform Resource Location*) appelées aussi URI pour mettre\r
l'accent sur le côté identification (*Uniform Resource Identifier*).\r
\r
Alors, cela étant dit, qu'est-ce que cela implique concrètement ? Nous y\r
venons.\r
\r
## Pourquoi "sémantique" ?\r
\r
Le Web sémantique, aussi appelé Web de données, porte ce nom car il\r
permet aux machines de "comprendre" le contenu du Web (sémantique \\<--\\>\r
sens).\r
\r
Dans le Web de documents, nous (les humains) voyons et comprenons les\r
informations suivantes :\r
\r
en HTML\r
\r
```html\r
<h1>Les berlingots Eysséric</h1>\r
\r
<p>La fabrique Eysséric produit des berlingots dans le\r
<a href="https://www.vaucluse.fr/">Vaucluse</a>.\r
</p>\r
```\r
\r
l'ordinateur, lui, comprend :\r
\r
```html\r
<h1>??? ??????????</h1>\r
\r
<p>?? ???????? ???????? ??????? ??? ?????????? ???? ??\r
<a href="https://www.vaucluse.fr/">????????</a>.\r
</p>\r
```\r
\r
Nous aimerions qu'il puisse comprendre:\r
\r
  Nom                 Produit      Localisation\r
  ------------------- ------------ --------------\r
  Fabrique Eysséric   berlingots   Vaucluse\r
\r
Nous souhaiterions que l'ordinateur comprenne les relations entre les\r
éléments et la nature de ces éléments, comme nous en somme.\r
\r
Pour cela, les données transmises doivent être structurées et\r
identifiées (nous l'avons vu plus haut, grâce aux URI).\r
\r
## Données structurées\r
\r
![](https://www.logilab.fr/file/4715989/raw/upload_e057d3ddc4d7fac78cd34173241f3da5.png)\r
Le W3C (*World Wide Web Consortium*) définit des standards pour le Web\r
(encore un morceau de votre barre de navigation décrypté !).\r
\r
Pour représenter les données dans le Web sémantique, on utilise ces\r
standards et le *Resource Description Format* (RDF). Ce dernier consiste\r
à représenter les données sous forme de **triplets** utilisant des URI,\r
comme des phrases très simples : sujet - prédicat (verbe) - objet.\r
\r
Les données structurées de notre exemple deviennent alors :\r
\r
    https://monUrl.fr/FabriqueEysseric https://monUrl.fr/produit https://monUrl.fr/Berlingot.\r
\r
    https://monUrl.fr/FabriqueEysseric https://monUrl.fr/localisation https://monUrl.fr/Vaucluse.\r
\r
Et parce qu'on sait bien qu'un joli dessin vaut mille mots, on peut\r
aussi représenter les triplets bout à bout sous forme de graphe.\r
\r
![](https://www.logilab.fr/file/4715997/raw/upload_3aac8487ce9785f6cad07e90e4ef31ed.png)\r
\r
En récupérant les données relatives aux autres ressources du Web, on\r
peut étendre le graphe de données, tant qu'il y a des données.\\\r
À l'instar du Web de documents où les documents sont interconnectés\r
grâce aux liens hypertexte, les ressources sont reliées les unes aux\r
autres dans le Web de données.\r
\r
![](https://www.logilab.fr/file/4716006/raw/upload_ac80845ddc388889531ac6fb78c92a30.png)\r
\r
# Pourquoi utiliser le Web sémantique dans FranceArchives ?\r
\r
  Besoin FranceArchives                                  Réponse Web sémantique\r
  ------------------------------------------------------ ---------------------------------------\r
  Désambiguïser les autorités                            Utilisations d'URI comme identifiants\r
  Données accessibles                                    Protocole HTTP\r
  Référencement par moteurs généralistes                 Contribution au google graph\r
  Alignements référentiels nationaux                     Ontologies, alignements\r
  Enrichissement des données propres à FA                Geonames, data.bnf, wikidata\r
  Limiter la responsabilité de maintenance des données   Décentralisation\r
\r
Parmi les besoins de FranceArchives, nous avons déjà vu que\r
l'utilisation d'URL comme identifiants (ce qui en fait des URI) répond\r
au problème de désambiguïsation des autorités.\r
\r
De même, le protocole HTTP, base du Web, permet de rendre les données\r
disponibles sur le Web sans application tierce.\r
\r
Maintenant que nous avons tous ces éléments, il ne reste plus qu'à\r
chercher !\r
\r
## Référencement par les moteurs de recherche généralistes\r
\r
Certains moteurs de recherche (dont le plus connu de tous) se mettent au\r
RDF !\r
\r
Ils utilisent des données en RDF insérées dans le code d'une page Web\r
pour mieux comprendre de quel sujet elle traite.\r
\r
Grâce à cette compréhension, ils peuvent afficher certains résultats\r
sous des formes personnalisées... Exemple !\r
\r
Le moteur de recherche utilise les triplets RDF pour afficher les\r
recettes de pâte à crêpes sous forme de petites cartes :\\\r
![](https://www.logilab.fr/file/4716017/raw/upload_4aa3b1170d2bd679a327c2917cc71698.png)\r
\r
Ainsi, vous n'avez même pas besoin de chercher LA meilleure recette de\r
pâte à crêpes, votre ami le moteur de recherche l'a fait pour vous. Et\r
comme il sait que vous n'aimez pas perdre votre temps et que vous aimez\r
quand même bien quand il y a de jolies images qui vous mettent l'eau à\r
la bouche, il vous propose de ne pas utiliser la molette de votre souris\r
et de cliquer directement sur la carte que vous préférez.\r
\r
## Alignement vers des référentiels\r
\r
Il y a plusieurs avantages à lier les données que nous publions sur le\r
Web de données à des référentiels nationaux (ou internationaux).\r
\r
### Ontologie de référence\r
\r
Une ontologie (ou un vocabulaire) est un ensemble d'URI que l'on va\r
utiliser pour représenter les prédicats (ou flèches en version graphe)\r
du RDF. L'ontologie définit les types de ressources présentes dans les\r
données et les relations qui peuvent exister entre elles.\r
\r
C'est un peu le schéma d'une base de données relationnelle ou la liste\r
des noms de colonnes d'un tableur.\r
\r
Si on compare les données au langage, l'ontologie serait la grammaire\r
ainsi qu'une partie du vocabulaire.\r
\r
Le fait d'utiliser des ontologies standards dans ces données RDF permet\r
de se "brancher" plus facilement avec d'autres graphes de données.\r
\r
### Sources de données de référence\r
\r
En liant ses données à d'autres bases de données sur le Web,\r
FranceArchives y trouve plusieurs avantages.\r
\r
Tout d'abord, cela lui permet d'**enrichir ses propres données**.\\\r
En effet, un document d'archives implique toujours des lieux et/ou des\r
personnes. On tente de normaliser les pratiques de nommage de ces\r
entités (dans quel sens on met quelle information) afin d'aider\r
davantage au liage des données : **Charles, de Gaulle (1890-1970)** ou\r
**de Gaulle, Charles** ou **Général de Gaulle (Charles, 1890-1970)**. De\r
même pour les noms de lieux : **Sumène**, **Sumène (Gard - 30)**,\r
**Sumène (Gard)**, etc.\r
\r
Dans les notices, seuls figurent généralement le nom du lieu (avec son\r
département) et le nom de la personne. En liant les données de\r
FranceArchives à d'autres bases, on peut ainsi étendre le graphe de\r
données et enrichir les informations que nous avions au départ. Comme\r
nous l'avons vu, plus il y a de mentions permettant de désambiguiser un\r
terme (à placer au Scrabble), meilleure sera la qualité de la donnée et\r
donc plus performant sera le schéma RDF et au final les résultats de\r
recherche.\r
\r
Ce schéma montre l'exemple de la notice [Sur la plage de\r
Saint-Vincent-sur-Jard...](https://francearchives.fr/fr/facomponent/e6c3ff90ff8dc0578c3fed6909b5e9968965913b)\r
dont la [description\r
RDF](https://francearchives.fr/fr/facomponent/e6c3ff90ff8dc0578c3fed6909b5e9968965913b/rdf.xml)\r
peut être obtenue en ajoutant à l'url le suffixe `/rdf.xml` ou\r
`/rdf.ttl`.\r
\r
Cette notice parle notamment de Georges Clemenceau et de la commune de\r
Saint-Vincent-Sur-Jard. Initialement, il y avait peu d'informations sur\r
ces deux ressources. En liant Saint-Vincent-sur-Jard à [son pendant dans\r
Geonames](https://www.geonames.org/2976583/saint-vincent-sur-jard.html),\r
une base de données regroupant des lieux, nous avons pu enrichir les\r
données en récupérant notamment le code postal et la population. De la\r
même manière, en liant Georges Clemenceau à [son pendant dans\r
DataBnF](https://data.bnf.fr/fr/11897013/georges_clemenceau/), nous\r
avons pu enrichir les données en récupérant notamment sa date de\r
naissance et quelques éléments biographiques notables.\r
\r
![](https://www.logilab.fr/file/4716024/raw/upload_d7d425e7f28ac146418e70bc47761bbc.png)\r
\r
Le second avantage qu'apporte l'alignement (c'est-à-dire le fait de lier\r
sa base avec une autre) est de **limiter la maintenance des données** :\r
moins on les manipule, mieux elles se portent.\r
\r
FranceArchives peut profiter d'informations libres et ouvertes sur les\r
personnes, les thèmes, les lieux pour valoriser ses données tout en se\r
concentrant sur la publication et la maintenance des données d'archives\r
uniquement.\r
\r
## data.bnf\r
\r
Le projet [data.bnf](https://data.bnf.fr/fr/about) a pour but de rendre\r
les données de la BnF **utiles et exploitables sur le web**. Elles\r
permettent notamment de rassembler des informations sur les ressources\r
conservées au sein de la BnF : **documents, ouvrages, auteurs, thèmes,\r
etc.** Les pages sont indexées par les moteurs de recherche : les\r
**données disponibles et requêtables sont souvent invisibles lors d'une\r
recherche classique** car [enfouies dans les données et\r
métadonnées]{.underline} des ressources BnF.\r
\r
Sur FranceArchives, ces liens permettent d'ajouter des informations sur\r
un sujet donné.\r
\r
## Wikidata\r
\r
[Wikidata]() est une base **open source**, **gratuite**,\r
**collaborative** et qui, de la même manière que DataBnF, met à\r
disposition des [données compréhensibles aussi bien par les **humains\r
que par les machines**]{.underline}. Cette base de données aide\r
Wikipédia en facilitant la maintenance des fameuses boites\r
d'informations que nous consultons tous dès que nous cherchons des\r
informations sur la célébre encyclopédie.\r
\r
De la même manière que la précédente, les renvois vers Wikidata ajoutent\r
une plus-value aux données consultables sur FranceArchives.\r
\r
![](https://www.logilab.fr/file/4716039/raw/upload_6dc801b8f4e41c72276459a416931f1f.png)\r
height="350"}\r
\r
## Geonames\r
\r
[Geonames](https://www.geonames.org/about.html) est une base de données\r
libres et ouvertes sur les données géographiques.\r
\r
## DataCulture\r
\r
[DataCulture](http://data.culture.fr/thesaurus/) : le Ministère de la\r
Culture publie un référentiels de sujets classés hiérarchiquement (en\r
thésaurus). Les thèmes de FranceArchives sont alignés sur les ressources\r
de DataCulture.\r
\r
# Axes futurs d'amélioration \r
\r
FranceArchives utilise déjà des technologies du Web sémantique. Pour\r
aller plus loin, les chantiers suivants sont envisagés.\r
\r
**Interrogation en SPARQL** : SPARQL (oui il faut le lire comme un mot\r
prononcé *SparKeul* et ne pas le jouer au scrabble celui-là sauf si on\r
joue en anglais, car ça fait un jeu de mot pétillant avec *to sparkle*)\r
est le langage d'interrogation du RDF. Rendre possible l'interrogation\r
des données produites dans ce langage permet aux utilisateurs et\r
utilisatrices de rechercher très précisément les informations voulues.\r
\r
**Utilisation de l'ontologie\r
[RiC-O](https://www.ica.org/standards/RiC/ontology.html)** : cette\r
ontologie (Records in Contexts - Ontology) est développée et maintenue\r
par le Conseil International des Archives. Elle est en passe de devenir\r
un standard pour le monde archivistique. L'utiliser pour décrire les\r
données de FranceArchives permettra de se brancher plus facilement aux\r
données d'autres services d'archives qui en font aussi usage.\r
\r
# *I have a dream...*\r
\r
... *that one day* tout le monde pourra rechercher simplement et\r
trouvera du premier coup toutes les informations désirées !\r
\r
Dans le monde numérique, ce qui est bien c'est qu'on peut rêver, et\r
rêver grand ! Alors que diriez-vous de pouvoir faire une requête telle\r
que : *Je cherche les archives concernant le village de naissance du\r
général de Gaulle et la période 1945-1962* et que le moteur de recherche\r
vous remonte directement les documents qui traitent exactement de ce\r
dont vous, humain, vous parlez ? Imaginez un monde où l'on pourrait\r
interroger les bases de données en langage naturel.\r
\r
Nous pouvons conclure cet article rédigé à l'occasion des Journées du\r
Logiciel Libre 2021, sur le thème des *Utopies concrètes et accessibles*\r
par cette proposition d'amélioration : un accès unique à toutes les\r
données du web, requêtables en langage naturel et sans bruit\r
documentaire... Un *International Knowledge Portal* !""" .

<https://www.logilab.fr/26106200> a cw:BlogEntry,
        <siocBlogPost> ;
    cw:content """380 mots - 2 minutes de lecture\r
\r
Nous collaborons avec Siemens sur un projet relatif au Web sémantique des objets (Semantic Web of Things ou SWoT en anglais).\r
\r
## Semantic Web of Things\r
\r
Le [Web des objets](https://www.w3.org/WoT/) (Web of Things, WoT), a pour objectif de standardiser l'utilisation des technologies du Web (HTTP, URI, etc.) pour contrer la fragmentation de l'Internet des objets.\r
\r
Cette standardisation est menée par un groupe de travail du W3C.\r
\r
Le Web des objets profite notamment de l'interopérabilité offerte par le Web sémantique via la réutilisation de ses standards de représentation de données (RDF, ontologies OWL/RDFS, etc.).\r
\r
## WoT - Thing Description\r
\r
La spécification [WoT-Thing Description](https://github.com/w3c/wot-thing-description) (WOT-TD) permet de décrire l'API de chaque objet connecté : quelles propriétés, actions, événements et interactions sont propres à l'objet.\r
Toutes ces informations sont exprimées à la fois dans un JSON normalisé et en RDF avec une ontologie dédiée.\r
Le document numérique décrivant l'objet est nommé *Thing Description* (TD).\r
\r
## WoT - Thing Description Directory\r
\r
Une fois que les TD sont créées, il faut les rendre accessibles et découvrables. La spécification [WoT-Discovery](https://www.w3.org/TR/wot-discovery/) décrit les différentes manières de publier et de centraliser les TD.\r
Un *Thing Description Directory*, décrit dans WoT-Discovery, est entrepôt de TD ayant une API en JSON, RDF et SPARQL.\r
Nous avons developpé un prototype de Thing Description Directory (SparTDD) en Flask et SPARQL, que nous avons [présenté à la conférence ESWC2022](https://hal.archives-ouvertes.fr/hal-03830765).\r
\r
## Asset Administration Shell\r
\r
*Asset Administration Shell* est une spécification issue du projet allemand [Platform Industry 4.0](https://www.plattform-i40.de/IP/Navigation/EN/Home/home.html), qui a pour but de numériser les données de l'industrie et de permettre la création de jumeaux numériques.\r
\r
Un *Asset Administration Shell* (AAS) caractérise une ressource (*asset*) en donnant sa description, ses fonctionnalités, la documentation des objets électroniques, etc.\r
\r
La spécification se veut très générique pour couvrir un maximum de cas d'usages ; c'est de fait une sorte de méta-modèle. Elle comprend un JSON-Schema et une ontologie OWL générée à partir de ce JSON-Schema.\r
\r
Avec Siemens, nous avons étendu SparTDD pour qu'il puisse ingérer et servir des AAS en plus des TD. Nous avons également créé un module de traduction d'une TD vers un AAS pour, lors de l'import d'une TD créer son pendant en AAS. Les AAS obtenus de SparTDD peuvent ensuite être ingérés par les outils existants qui savent manipuler des AAS.""" ;
    cw:content_format "text/markdown" ;
    cw:creation_date "2023-03-24T10:41:28.151964+00:00"^^xsd:dateTime ;
    cw:cw_source <http://beta.logilab.fr1> ;
    cw:entry_of <https://www.logilab.fr/3792644> ;
    cw:has_creator <https://www.logilab.fr/9342011> ;
    cw:heading "Découvrez le web des objets et notamment les intéropérabilité offertes par le Web sémantique via l'utilisation de ses standards." ;
    cw:in_state <http://beta.logilab.fr1339> ;
    cw:modification_date "2023-04-13T16:30:50.404112+00:00"^^xsd:dateTime ;
    cw:title "Le Web Sémantique des objets" ;
    cw:word_count 375 ;
    dcterms:title "Le Web Sémantique des objets" ;
    <sioccontent> """380 mots - 2 minutes de lecture\r
\r
Nous collaborons avec Siemens sur un projet relatif au Web sémantique des objets (Semantic Web of Things ou SWoT en anglais).\r
\r
## Semantic Web of Things\r
\r
Le [Web des objets](https://www.w3.org/WoT/) (Web of Things, WoT), a pour objectif de standardiser l'utilisation des technologies du Web (HTTP, URI, etc.) pour contrer la fragmentation de l'Internet des objets.\r
\r
Cette standardisation est menée par un groupe de travail du W3C.\r
\r
Le Web des objets profite notamment de l'interopérabilité offerte par le Web sémantique via la réutilisation de ses standards de représentation de données (RDF, ontologies OWL/RDFS, etc.).\r
\r
## WoT - Thing Description\r
\r
La spécification [WoT-Thing Description](https://github.com/w3c/wot-thing-description) (WOT-TD) permet de décrire l'API de chaque objet connecté : quelles propriétés, actions, événements et interactions sont propres à l'objet.\r
Toutes ces informations sont exprimées à la fois dans un JSON normalisé et en RDF avec une ontologie dédiée.\r
Le document numérique décrivant l'objet est nommé *Thing Description* (TD).\r
\r
## WoT - Thing Description Directory\r
\r
Une fois que les TD sont créées, il faut les rendre accessibles et découvrables. La spécification [WoT-Discovery](https://www.w3.org/TR/wot-discovery/) décrit les différentes manières de publier et de centraliser les TD.\r
Un *Thing Description Directory*, décrit dans WoT-Discovery, est entrepôt de TD ayant une API en JSON, RDF et SPARQL.\r
Nous avons developpé un prototype de Thing Description Directory (SparTDD) en Flask et SPARQL, que nous avons [présenté à la conférence ESWC2022](https://hal.archives-ouvertes.fr/hal-03830765).\r
\r
## Asset Administration Shell\r
\r
*Asset Administration Shell* est une spécification issue du projet allemand [Platform Industry 4.0](https://www.plattform-i40.de/IP/Navigation/EN/Home/home.html), qui a pour but de numériser les données de l'industrie et de permettre la création de jumeaux numériques.\r
\r
Un *Asset Administration Shell* (AAS) caractérise une ressource (*asset*) en donnant sa description, ses fonctionnalités, la documentation des objets électroniques, etc.\r
\r
La spécification se veut très générique pour couvrir un maximum de cas d'usages ; c'est de fait une sorte de méta-modèle. Elle comprend un JSON-Schema et une ontologie OWL générée à partir de ce JSON-Schema.\r
\r
Avec Siemens, nous avons étendu SparTDD pour qu'il puisse ingérer et servir des AAS en plus des TD. Nous avons également créé un module de traduction d'une TD vers un AAS pour, lors de l'import d'une TD créer son pendant en AAS. Les AAS obtenus de SparTDD peuvent ensuite être ingérés par les outils existants qui savent manipuler des AAS.""" .

