Dans ce billet, nous allons voir comment nous avons établi des liens entre les entités utilisées dans nos données pour les musées et monuments partenaires de Data&Musée et les entités correspondantes d’Europeana.
Sommaire
Première approche: un lien vers Paris Musées
Nous allons commencer par chercher quelques éléments à la main, pour voir ce que nous pouvons espérer obtenir. En principe, vous devez commencer par obtenir une clé d’API. Pour cela voir Get an API key. Et pour avoir une vue d’ensemble sur les APIs proposées voir OUR APIS.
Nous allons utiliser l’API ‘EUROPEANA ENTITY API’, qui présente une méthode pour trouver des propositions d’entités à partir d’un texte. Par exemple, pour voir si nous avons des propositions pour la Maison de Balzac, nous utilisons:
https://www.europeana.eu/api/entities/suggest?text=Maison de Balzac&wskey=apidemo
(noter que dans cette version de l’API, nous utilisons la clé apidemo au lieu de notre clé privée)
Ce lien nous donne une réponse en json-ld:
{ "@context": [ "https://www.w3.org/ns/ldp.jsonld", "http://www.europeana.eu/schemas/context/entity.jsonld" ], "type": "ResultPage", "total": 1, "items": [ { "id": "http://data.europeana.eu/organization/1482250000004509089", "type": "Organization", "prefLabel": { "def": "Maison de Balzac, France" }, "hiddenLabel": { "def": [ "Maison de Balzac, France" ] } } ] }
où on voit l’id europeana associé à la Maison de Balzac
http://data.europeana.eu/organization/1482250000004509089
Suivre ce lien, nous redirige automatiquement vers le lien suivant
http://entity.europeana.eu/entity/organization/base/1482250000004509089?wskey=apidemo
qui donne une représentation rdf/xml de ce qu’Europeana a comme description de la Maison de Balzac. Pour avoir une représentation json-ld des même données, nous pouvons ajouter une indication de format au lien précédent:
http://entity.europeana.eu/entity/organization/base/1482250000004509089.json?wskey=apidemo
où figurent assez peu d’éléments, mais au moins de le rôle de cette entité au sein d’Europeana:
« europeanaRole »: [ « Data Provider » ], d’où on peut déduire que la Maison de Balzac fournit des données à Europeana. Nous pouvons suivre les suggestions de la page de l’Entity API pour trouver plus de choses sur notre entité. Une suggestion consiste à utiliser la Search API comme ceci:
(noter qu’ici vous devez utiliser votre clé d’API)
mais cela donne
{« apikey »: »YOUR_KEY », »success »:true, »requestNumber »:999, »itemsCount »:0, »totalResults »:0, »items »:[]}
donc 0 résultat.
L’autre suggestion est:
https://www.europeana.eu/api/v2/search.json?wskey=YOUR_KEY&query=%22http://data.europeana.eu/organization/1482250000004509089%22+OR+%22Maison%20de%20Balzac%22
qui donne beaucoup plus de résultats. Une rapide exploration montre qu’il s’agit de 12 éléments, un texte et 11 images (photos), dont 8 fournis par la BNF et 4 par le Ministère de la Culture (français). Concrètement, peu de choses sur le contenu du musée, ses collections. Le texte, de 1914, concerne la création du musée et ses collections, mais ne s’agit ici que d’un lien vers une référence de la BNF:
https://gallica.bnf.fr/ark:/12148/bpt6k12657431
Une autre façon de trouver l’URI est d’exploiter des équivalences d’URI connues d’Europeana. En effet, pour de nombreux sites de Data&Musée, nous disposons de liens externes notamment vers DBpedia et Wikidata. Par exemple, nous connaissons le lien http://www.wikidata.org/entity/Q547789 dans Wikidata pour la Maison de Balzac.
Nous pouvons alors utiliser l’appel:
https://www.europeana.eu/api/entities/resolve?uri=http://www.wikidata.org/entity/Q547789&wskey=apidemo
(avec la clé d’API apidemo)
qui donne
{« apikey »: »apidemo », »action »: »/entity/resolve », »success »:false,
« error »: »No Entity found for sameAs/exactMatch URI: http://www.wikidata.org/entity/Q547789″}
donc rien d’utile dans ce cas. Nous verrons ultérieurement si cette possibilité donne des résultats.
En conclusion de cette exploration manuelle, nous voyons qu’il sera assez simple d’obtenir des propositions d’uris europeana concernant nos musées et monuments. Il sera nécessaire de vérifier ces uris. Il ne faudra pas espérer récupérer par ce biais beaucoup de données utiles à nos explorations. Nous chercherons ultérieurement si le rôle ‘Data Provider’ attribué à la Maison de Balzac correspond bien à des données fournies par celle-ci et que l’approche ci-dessus n’a pas permis de trouver.
Première approche: un lien vers le CMN
Suivant la même démarche, des tentatives sur une dizaine de noms de monuments n’ont rien données. Par contre, pour le Centre des Monuments Nationaux, la requête:
La CMN est connu en tant qu’organisation.
La requête:
(pensez à mettre votre clé)
donne une structure json avec 12 résultats (sur les 28 possibles que la requête annonce). Ces 12 résultats sont des images fournies par le CNRS et concernent toutes le Château de Carcassonne. On peut obtenir tous les résultats par exemple en ajoutant le paramètre &rows=100 (100 est le maximum par requête; voir le détail de la Search API).
Automatisation de la recherche de liens
Nous avons vu ci-dessus deux pistes pour l’automatisation: grâce aux labels associés à nos partenaires et grâce aux URIs déjà connues dans d’autres graphes de connaissances. Nous avons ces informations dans le dataset dmsites accessible par des requêtes SPARQL à cette adresse:
https://ws49-cl4-jena.tl.teralab-datascience.fr/dmsites/sparql
On peut utiliser cette adresse sur notre interface YASGUI en renseignant le point d’accès en haut à gauche de l’interface.
Par exemple, avec la requête
PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select ?label WHERE { { ?s skos:prefLabel ?label . filter((lang(?label)="fr")||(lang(?label)="")) } UNION { ?s rdfs:label ?label . filter((lang(?label)="fr")||(lang(?label)="")) } }
On obtient une série de labels (910 labels au 30/12/2019) qu’on pourra tester sur Europeana (idéalement, il faudrait ne garder que les labels qui concernent un musée ou monument). Il s’agit des labels des sites référencés dans ce dataset, mais aussi des labels des villes et des types de monuments.
Et avec la requête
select ?same WHERE { ?s <http://www.w3.org/2002/07/owl#sameAs> ?same }
on obtient (au 30/12/2019) 379 liens désignant un de nos partenaires dans divers ensembles de données.
Nous avons vu précédemment les modèles d’appels d’API permettant de tester ces labels et ces liens sur Europeana. Un petit programme Python, nous a donné les résultats suivants:
- aucune correspondance via les samaAs n’a été trouvée,
- 949 correspondances ont été trouvées à partir des labels.
Il y a des imperfections à corriger. Par exemple, pour le label Panthéon, on trouve l’entité Europeana du Panthéon à Rome, alors que le monument du CMN est à Paris. Pour certains labels, nous avons plusieurs uris proposées qu’il va falloir filtrer (par exemple, pour Bourges, on trouve la ville de Bourges de type Place et l’écrivain Elémir Bourges de type Agent). De plus, comme nous n’avons pas pris que les variantes préférées des labels, mais tous les labels connus dans notre dataset, nous avons des uris europeana identiques trouvées pour plusieurs labels, comme Petit Palais, PETIT PALAIS, …
Si on se focalise sur les entités de notre dataset de type wikidata museum (http://www.wikidata.org/entity/Q33506), si on enlève les liens de type Agent, on obtient 5 résultats:
- musée Carnavalet, de type Organization, réponse valable,
- maison de Victor Hugo, de type Organization, réponse valable,
- maison de Balzac, de type Organization, réponse valable,
- MAM, avec plusieurs réponses de type Place, non recevable (des royaumes méditerranéens),
- BOURDELLE, de type Place, qui est un village de Gironde
Il semble qu’Europeana considère que les musées sont de type Organization et qu’on doive donc éliminer les réponses de type Agent et Place. Au final, on ne trouve que 3 liens pour 14 musées de la Ville de Paris. Nous verrons ultérieurement s’il est possible de faire une recherche plus efficace.
Si on se focalise sur les entités de notre dataset de type wikidata building (http://www.wikidata.org/entity/Q41176), si on enlève les liens de type Agent, on obtient peu de résultats:
- 2 possibilités pour le Panthéon, qui peuvent être discriminées par le pays où Europeana les situent, un en Italie, à Rome, un en France, à Paris
- des musées déjà trouvés ci-dessus,
- le château de Champs-sur-Marne,
- la Conciergerie
Conclusion de cette première approche
Nous trouvons donc moins de 10 institutions partenaires de Data&Musée référencées dans Europeana sur la centaine d’institutions de Data&Musée. Nous avons appliqué les méthodes de base proposées dans la documentation d’Europeana, en les complétant un peu par un minimum de filtrage, soit par le type d’entité, soir par sa localisation, pour améliorer la précision des résultats. Dans un futur billet, nous verrons si nous trouvons plus de liens entre les artistes qui nous concernent et Europeana.