Les oeuvres d’art dans Wikidata

Dans le cadre du projet Data&Musée, nous sommes amenés à nous intéresser aux données liées disponibles au sujet des œuvres d’art, aux artistes et aux musées et monuments qui ont un lien avec ces œuvres. Nous avons déjà abordé cette question dans le billet Les oeuvres d’art dans DBpedia. Nous regardons maintenant leur couverture par Wikidata à partir du point d’accès sparql https://query.wikidata.org/.

Note technique: les préfixes suivants sont utilisés
prefix wd: <http://www.wikidata.org/entity/>
prefix wdt: <http://www.wikidata.org/prop/direct/>

 

Nombre d’œuvres et leurs types

Nous avons cherché dans Wikidata les entités des types CreativeWork (wd:Q17537576) , Painting (wd:Q3305213) et Artwork (wd:Q838948).

SELECT ?type (count(DISTINCT ?oeuvre) as ?c)  WHERE {
  VALUES ?type {wd:Q838948 wd:Q17537576 wd:Q3305213}
  ?oeuvre wdt:P31 ?type.
}
group by ?type
order by desc(?c)

ce qui donne

type c
wd:Q3305213 365806
wd:Q17537576 8105
wd:Q838948 3578

Liens entre des œuvres et des musées

Maintenant, cherchons celles qui ont un lien direct avec un musée. Pour éviter des timeouts sur wikidata, nous ferons une requête avec chaque type d’oeuvre précédent sur le modèle suivant

SELECT ?type (COUNT(DISTINCT ?oeuvre) AS ?c)  WHERE {
  VALUES ?type { wd:Q838948  }
  ?oeuvre wdt:P31 ?type.
  { ?oeuvre ?link ?museum. } union { ?museum ?link ?oeuvre. }
  ?museum wdt:P31 wd:Q33506.
}
GROUP BY ?type
ORDER BY DESC (?c)

donne

type c
wd:Q838948 299
wd:Q17537576 2
wd:Q3305213 52095

On peut se poser la question du nombre d’entités de type wd:Q33506 (musée):

select (count(distinct ?museum) as ?c)
where {
?museum a dbo:Museum
}

On en trouve 28833. Ce qui suggère que de nombreux musées sont connus, et qu’il y a de nombreux liens avec des œuvres, en particulier des peintures.

Liens entre des œuvres et des personnes

Voyons maintenant à quel point les œuvres sont reliées à des personnes (wd:Q5), type par type sur le modèle suivant:

SELECT ?type (COUNT(DISTINCT ?oeuvre) AS ?c) WHERE {
  VALUES ?type {    wd:Q838948  }
  ?oeuvre wdt:P31 ?type.
  { ?oeuvre ?link ?artist. }   UNION  { ?artist ?link ?oeuvre. }
  ?artist wdt:P31 wd:Q5.
}
GROUP BY ?type
ORDER BY DESC (?c)

donne

type c
wd:Q838948 2512
wd:Q17537576 269
wd:Q3305213 >9422 (timeout sur ?oeuvre ?link ?artist)

On voit que, dans Wikidata,  il y a des liens entre des œuvres et des personnes, mais sur une assez faible proportion des œuvres. Il reste du travail à faire pour améliorer les connaissances dans Wikidata sur les œuvres d’art! A vos claviers…

 

Publié dans Uncategorized | Laisser un commentaire

Les oeuvres d’art dans DBpedia

Dans le cadre du projet Data&Musée, nous sommes amenés à nous intéresser aux données liées disponibles au sujet des œuvres d’art, aux artistes et aux musées et monuments qui ont un lien avec ces œuvres.

Nombre d’œuvres et leurs types

Nous avons cherché dans DBpedia les entités des types CreativeWork, Painting et Artwork.

select ?type (count(distinct ?oeuvre) as ?c)
where {
VALUES ?type {<http://schema.org/CreativeWork> 
              <http://schema.org/Painting> 
              <http://dbpedia.org/ontology/Artwork> 
              <http://dbpedia.org/ontology/Painting> }
?oeuvre a ?type .
}
group by ?type
order by desc(?c)

ce qui donne

type c
http://schema.org/CreativeWork 496070
http://dbpedia.org/ontology/Artwork 7526

Liens entre des œuvres et des musées

Maintenant, cherchons celles qui ont un lien direct avec un musée:

select ?type (count(distinct ?oeuvre) as ?c)
where {
VALUES ?type {<http://schema.org/CreativeWork> 
              <http://schema.org/Painting> 
              <http://dbpedia.org/ontology/Artwork> 
              <http://dbpedia.org/ontology/Painting> }
?oeuvre a ?type .
{ ?oeuvre ?link ?museum } UNION {?museum ?link ?oeuvre}.
?museum a dbo:Museum
}group by ?type
order by desc(?c)

donne

type c
http://schema.org/CreativeWork 2256
http://dbpedia.org/ontology/Artwork 2222

On peut se poser la question du nombre d’entités de type dbo:Museum:

select (count(distinct ?museum) as ?c)
where {
?museum a dbo:Museum
}

On en trouve 10153. Ce qui suggère que de nombreux musées sont connus, mais peu directement reliés à des œuvres.

Liens entre des oeuvres et des personnes

Voyons maintenant à quel point les oeuvres sont reliées à des artistes:

select ?type (count(?oeuvre) as ?c)
where {
VALUES ?type {<http://schema.org/CreativeWork> 
              <http://dbpedia.org/ontology/Artwork> 
               }
?oeuvre a ?type .
?oeuvre ?link ?person .
?person a dbo:Artist
}group by ?type
order by desc(?c)

donne

type c
http://schema.org/CreativeWork 456627
http://dbpedia.org/ontology/Artwork 3012

On voit que, dans DBpedia,  les œuvres sont fortement liées à des artistes.

En cherchant par quels liens:

select distinct ?link
where {
VALUES ?type {<http://schema.org/CreativeWork> 
              <http://dbpedia.org/ontology/Artwork> 
               }
?oeuvre a ?type .
?oeuvre ?link ?person .
?person a dbo:Artist
}

on voit que de nombreux liens suggèrent qu’il s’agit d’œuvres musicales, littéraires ou cinématographiques, qui sont relativement hors du champ de Data&Musée.

Cela ouvre la question de savoir si DBpedia couvre bien la peinture et la sculpture. Nous laisserons cette question pour un autre billet.

 

 

Publié dans Uncategorized | Laisser un commentaire

Paris Musées et Wikidata: établir des liens

Au 6/1/2019, ma liste des établissements rattachés à Paris Musées comporte 14 musées avec 16 dénominations (voir à la fin de ce billet). Elle a été constituée à la main à partir du site de Paris Musées.

J’ai établi plusieurs méthodes de recherche d’entités de Wikidata représentant ces musées.

La plus simple donne 15 entités. Elle cherche un lien à partir du nom du musée à l’aide de la fonction de recherche fournie par le service WDQS de Wikidata. Ma méthode ne conserve aucun résultat si le recherche en donne plusieurs et qu’il y a donc incertitude sur la bonne réponse. Ainsi ‘Les Catacombes’ n’est pas trouvé par cette méthode, car la recherche WDQS donne deux résultats.

En ajoutant comme critère la ville du musée, Paris, et le fait qu’elle est en France j’obtiens 8 entités.

En ajoutant comme critère à la méthode simple le fait que l’entité doit être un musée, j’obtiens 14 entités. Il manque deux entités. Le ‘Palais Galliera’ est une instance de ‘palace’ qui n’est pas un type dérivé de ‘museum’. Le ‘Petit Palais’ est de type ‘museum building’ qui est un dérivé de ‘building’, mais pas de ‘museum’.

J’obtiens 12 entités en ajoutant le fait que le musée est en France.

Si je combine les critères monuments et ville à la méthode simple, j’obtiens 8 entités.

Cela nous fait 5 méthodes.

Entités sans lien wikidata

Toutes les dénominations des musées de Paris Musées se trouvent liées à une entité de  wikidata par au moins une des méthodes proposées.

Entités avec liens wikidata non homogènes

Une seule dénomination -Musée Zadkine- a obtenu des liens différents suivant les méthodes utilisées. Il y a en effet un musée Zadkine aux Arques et un à Paris. Les méthodes obtiennent l’un ou l’autre des musées. Le critère géographique permet d’obtenir le bon lien.

Nous devons donc maintenant vérifier que les réponses retenues sont exactes sur l’ensemble des cas.

Vérification des 16 entités obtenues pour les 16 dénominations

Test sur 30 entités tirées au hasard parmi l’ensemble des musées

Le bilan est le suivant:

  • résultats trouvés: 16
  • résultats cherchés 16
  • résultats exacts 16
  • résultats inexacts 0

Ce qui en terme de précision et de rappel, nous donne:

précision=nombre de résultats exacts/nombre de résultats trouvés= 16/16= 100 %

rappel=nombre de liens exacts trouvés/nombre de liens trouvables=16/16=100 %

Et donc une F-Mesure de:

f-mesure=2*1*1/(1+1)=1=100 %

Sur cette petite série de dénominations les méthodes proposées s’avèrent complètement satisfaisantes. Nous allons prochainement publier les résultats de ces méthodes sur d’autres ensembles de données et des précisions techniques sur les méthodes mises en oeuvre.

Publié dans Cultural data, Data Musée, Données publiques, Marquage sémantique, Outils, SPARQL | Laisser un commentaire

Transposer Tf-Idf sur des graphes

Tf-Idf est une méthode de pondération, souvent utilisée pour évaluer l’importance d’un mot dans un document.

L’idée est ici d’évaluer l’importance d’un prédicat ou d’une paire prédicat-valeur pour une entité d’un graphe sémantique.

Tf-Idf sur les prédicats

Nous allons, pour cette première évaluation, considérer qu’une entité d’un graphe est représentée par les prédicats qui la décrivent. L’équivalent d’un document dans l’utilisation classique de Tf-Idf est donc une entité et sa liste de prédicats (on pourrait étendre ça sur plusieurs niveaux de voisinage de l’entité).

Alors, la fréquence « brute » d’un prédicat est simplement le nombre d’occurrences de ce prédicat utilisés par l’entité considérée (on parle de « fréquence » par abus de langage). On peut choisir cette fréquence brute pour exprimer la fréquence d’un prédicat. Pour les documents, on peut aussi utiliser le nombre d’occurrences d’un mot relativement au nombre de mots du document. Lorsqu’on traite des documents de longueur à peu près homogène, cela n’a pas beaucoup d’importance. Dans le cas contraire, cela peut prendre vite de l’importance. De façon analogue, nous proposons donc d’utiliser le nombre d’occurence d’un prédicat associé à une entité normalisé par le nombre de prédicats total associé à cette entité.

to(p,e)=nombre d’occurrences de p pour l’entité e

s’obtient par exemple sur notre graphe <http://givingsense.eu/datamusee/onto/parismusees> avec la requête sparql

select (count(?o) as ?c) where 
{ 
  graph <http://givingsense.eu/datamusee/onto/parismusees> {
    <entité visée> <prédicat visé> ?o }
} 

tp(e)=nombre de prédicats associés à e

s’obtient par exemple sur notre graphe <http://givingsense.eu/datamusee/onto/parismusees> avec une requête sparql sur le modèle

select (count(?p) as ?c) where 
{ 
  graph <http://givingsense.eu/datamusee/onto/parismusees> {
    <entité visée> ?p []}
} 

tf(p,e)= to(p,e)/tp(e)

La fréquence inverse de document (IDF-inverse document frequency) est une mesure de l’importance du terme dans l’ensemble du corpus de documents. Pour nous, il va s’agir d’évaluer l’importance d’un prédicat sur l’ensemble du graphe.

Nous allons l’évaluer à l’aide du logarithme de l’inverse de la proportion d’entités qui utilisent ce prédicat.

Soit

D = nombre d’entités dans le graphe

s’obtient par exemple sur notre graphe <http://givingsense.eu/datamusee/onto/parismusees> avec la requête sparql

select (count(distinct ?s) as ?c) where 
{ 
  graph <http://givingsense.eu/datamusee/onto/parismusees> {
    ?s ?p []}
} 

d(p )= nombre d’entités qui utilisent le prédicat p

sur le graphe précédent, cela s’obtient  pour les prédicats les plus utilisés avec

select ?p (count(distinct ?s) as ?c) where 
{ 
  graph <http://givingsense.eu/datamusee/onto/parismusees> {
    ?s ?p []}
} 
group by ?p
order by desc(?c)

alors

idf(p) = log(D/d(p))

et

tfidf(p,e) = tf(p,e)*idf(p)

Par exemple, pour le graphe précédent

D=255075

* pour le prédicat <http://dbpedia.org/ontology/wikiPageWikiLink>
d(<http://dbpedia.org/ontology/wikiPageWikiLink>) = 118659

* pour le prédicat <http://purl.org/dc/terms/subject>
d(<http://purl.org/dc/terms/subject>) = 2079

* pour le prédicat <http://xmlns.com/foaf/0.1/primaryTopic>
d(<http://xmlns.com/foaf/0.1/primaryTopic>) = 1793

* pour le prédicat <http://www.w3.org/2002/07/owl#sameAs> 
d(<http://www.w3.org/2002/07/owl#sameAs>) = 1581

pour l’entité  <http://fr.dbpedia.org/resource/Paris_Musées>, avec la requête

select ?p (count(?p) as ?c)where 
{ 
  graph <http://givingsense.eu/datamusee/onto/parismusees> {
    <http://fr.dbpedia.org/resource/Paris_Musées> ?p ?o }
} 
group by ?p
order by desc(?c)

on trouve les prédicats suivants (et un total de 84 prédicats)

<http://dbpedia.org/ontology/wikiPageWikiLink>	48
<http://fr.dbpedia.org/property/wikiPageUsesTemplate>	8
<http://purl.org/dc/terms/subject>	5
<http://www.w3.org/2002/07/owl#sameAs>	5
<http://dbpedia.org/ontology/abstract>	3
<http://www.w3.org/2000/01/rdf-schema#comment>	3
<http://www.w3.org/2000/01/rdf-schema#label>	3
<http://dbpedia.org/ontology/wikiPageExternalLink>	2
<http://dbpedia.org/ontology/wikiPageID>	1
<http://dbpedia.org/ontology/wikiPageLength>	1
<http://dbpedia.org/ontology/wikiPageOutDegree>	1
<http://dbpedia.org/ontology/wikiPageRevisionID>	1
<http://www.w3.org/ns/prov#wasDerivedFrom>	1
<http://xmlns.com/foaf/0.1/homepage>	1
<http://xmlns.com/foaf/0.1/isPrimaryTopicOf>	1

Et, par exemple,  les tfidf suivants

tfidf(<http://dbpedia.org/ontology/wikiPageWikiLink>) = 0,63

tfidf(<http://purl.org/dc/terms/subject>) = 0,41

tfidf(<http://xmlns.com/foaf/0.1/primaryTopic>) = 0

tfidf(<http://www.w3.org/2002/07/owl#sameAs>) = 0,43

Extensions

Nous pouvons aussi faire ce type de calculs sur les prédicats utilisés par les classes d’entités ou sur les paires (prédicats, valeurs) utilisés. Nous pouvons aussi considérer les prédicats entrant vers une entité.

 

Publié dans Outils, SPARQL | Laisser un commentaire

Trouver l’élément Wikidata correspondant à une entité qu’on connait dans DBPedia

Supposons que nous nous intéressons à une entité dans DBPedia, par exemple:

http://fr.dbpedia.org/resource/Mus%C3%A9e_Carnavalet (page web associée http://fr.dbpedia.org/page/Mus%C3%A9e_Carnavalet)

qui décrit le Musée Caranavalet.

Nous voulons trouver automatiquement une éventuelle entité dans Wikidata décrivant la même entité.

Dans DBPedia, une entité est toujours associée à la page Wikipedia qui a servi à générer l’entité de DBPedia.  Cette page est désignée par la valeur associée à la propriété http://www.w3.org/ns/prov#wasDerivedFrom qui permet de donner une information de provenance des données.

Ici, la valeur est:

http://fr.wikipedia.org/wiki/Mus%C3%A9e_Carnavalet?oldid=110401968

En suivant ce lien, on peut récupérer la page de Wikipedia correspondante ( et, au passage, tous le texte d’origine). Ce qui va nous intéresser, c’est « t-wikibase » qui désigne, s’il est présent, un lien vers une entité de Wikidata correspondant à la page. Ce lien est dans la propriété href du tag <a> contenu dans l’élément d’id « t-wikibase ».

<li id="t-wikibase">
  <a 
    href="https://www.wikidata.org/wiki/Special:EntityPage/Q640447" 
    title="Lien vers l’élément de référentiel des données connectées [g]" 
    accesskey="g">Élément Wikidata</a>
</li>

C’est bon. Nous avons trouvé l’entité de Wikidata cherchée:

https://www.wikidata.org/wiki/Special:EntityPage/Q640447

 

 

Publié dans Cultural data, DBPedia, Données publiques, Outils | Laisser un commentaire

Les âges sur des livres d’or de musées

Dans le cadre du projet Data&Musée, nous avons des données déposées sur les livre d’or électronique -fournis par Guestviews– de certaines institutions. Ces données proviennent pour le moment de membres de Paris Musées.

Note: Bien sûr, nous avons anonymisé ces données.

Il y a environ 27000 contributions. 19761 n’ont pas renseigné leur genre; 4220 femmes et 3111 l’ont fait. 19308 n’ont pas renseigné leur région d’origine et ceux qui l’ont fait viennent essentiellement de la région parisienne, mais aussi, dans une moindre mesure des départements 69 (Lyon), 13 (Marseille), 33 (Bordeaux).

Ces données ont été traitées pour alimenter un graphe de connaissances.

Pour commencer à jouer un peu avec les données, j’ai produit la requête SPARQL suivante:

select ?tranchedage (count(?s) as ?c){
graph <http://givingsense.eu/datamusee/onto/guestbook_notices/> {
?s <http://xmlns.com/foaf/0.1/age> ?age
bind(FLOOR(?age/20) as ?tranchedage)
}
}
group by ?tranchedage
order by desc(?c)

Le résultat est

tranchedage,c
1,2659
2,2078
0,2008
3,1657
4,592

Ce qui peut se lire

0 est la tranche 0/20 ans qui comporte 2008 contributeurs, 1 est la tranche 20/40 ans, 2 est la tranche 40/60 ans, 3 est la tranche 60/80 ans, 4 est la tranche 80/100 ans

Bien sûr ne sont prises en compte ici que les personnes qui ont laissé un message sur un livre d’or ET qui ont accepté de donner leur âge (sans tricher :-)) ?).

Nous allons devoir nous atteler à l’analyse des commentaires laissés par les contributeurs (voir à ce sujet Données des musées et analyses de Tweets).

Publié dans Data Musée, SPARQL | Laisser un commentaire

Contexte de Paris Musées dans DBPedia

Note: les préfixes utilisés dans le corps du texte sont définis à la fin de ce billet

Méthode de création d’un « contexte »

Nous avons récupéré la liste des 14 musées de Paris Musées. Avec les noms, nous avons facilement trouvé les URI des entités correspondants dans au moins un des trois graphes de connaissances suivants: DbPedia, DBPedia-Fr, Wikidata.

Partant de ces URIs, nous avons ‘aspiré’ tous les faits (triplets) qui aboutissent ou qui partent de ces URIs, jusqu’à un niveau N de relations. Le contexte actuellement créé utilise N=2. Par exemple, l’entité dbp:Maison_de_Balzac est reliée à dbp:George_Sand, entité reliée notamment à dbp:Musée_de_la_Vie_Romantique. Ces liens seront sauvés dans le contexte que nous constituons.

Graphe de contexte de Paris Musées

Le graphe a l’URI suivante dans notre jeu de données:

<http://givingsense.eu/datamusee/onto/parismusees>

Il décrit 255075 entités différentes. Il utilise 2356 propriétés différentes pour décrire ces entités. Nous allons nous intéresser en priorité aux propriétés dont la valeur n’est pas un literal, mais une URI: celles qui créent des liens entre les entités (requête). Elles sont 969.

La propriété dbpo:wikiPageWikiLink est utilisée 372307 fois. Nous avons vu dans Rule Mining for Semantifying Wikilinks que cette propriété seule est peu porteuse de sens, mais que des traitements peuvent aider à la préciser. Telle quelle, elle indique seulement un lien indéfini entre une entité et une autre. Nous nous limiterons à voir si certains liens sont récurrents.

La propriété suivante est rdfs:type, utilisée 296824 fois, qui associe un type à une entité. Nous verrons plus loin les principaux types rencontrés.

Vient ensuite owl:sameAs utilisé 14426 fois, qui indique de fortes similitudes entre deux entités et que nous n’allons pas analyser.

dcterms:subject est utilisé 13666 fois. Il indique que l’entité décrite est ‘au sujet de’ une autre entité. Nous verrons plus loin les principaux sujets rencontrés.

Les types utilisés dans le contexte de Paris Musées

Nous obtenons les types avec cette requête.

On trouve 2185 types différents. Voilà une table des plus utilisés:

Type Occurences Commentaire
http://dbpedia.org/ontology/ArchitecturalStructure 51815
http://dbpedia.org/ontology/Building 29597
http://www.wikidata.org/entity/Q41176 29401 building
http://dbpedia.org/ontology/Museum 12910
http://www.wikidata.org/entity/Q33506 12644 museum
http://www.w3.org/2002/07/owl#Thing 11118
http://dbpedia.org/class/yago/PhysicalEntity100001930 10406
http://dbpedia.org/class/yago/Object100002684 10404
http://dbpedia.org/class/yago/Whole100003553 10387
http://dbpedia.org/ontology/Location 10166
http://schema.org/Place 10166
http://dbpedia.org/ontology/Place 10146
http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing 10146
http://dbpedia.org/class/yago/YagoPermanentlyLocatedEntity 10078
http://dbpedia.org/class/yago/Artifact100021939 10076
http://dbpedia.org/class/yago/YagoGeoEntity 10058
http://dbpedia.org/class/yago/Facility103315023 10028
http://dbpedia.org/class/yago/Depository103177349 10004
http://dbpedia.org/class/yago/Museum103800563 10003
http://dbpedia.org/ontology/Person 796
http://dbpedia.org/ontology/Agent 685
http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#Agent 684
http://schema.org/Person 671
http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#NaturalPerson 671
http://www.wikidata.org/entity/Q215627 671 person
http://www.wikidata.org/entity/Q5 671 human
http://xmlns.com/foaf/0.1/Person 671
http://dbpedia.org/ontology/Artist 470
http://www.wikidata.org/entity/Q483501 470 artist
http://dbpedia.org/class/yago/YagoLegalActorGeo 352
http://dbpedia.org/class/yago/YagoLegalActor 329
http://dbpedia.org/class/yago/CausalAgent100007347 318
http://dbpedia.org/class/yago/LivingThing100004258 318
http://dbpedia.org/class/yago/Organism100004475 318
http://dbpedia.org/class/yago/Person100007846 318
http://dbpedia.org/class/yago/Creator109614315 294
http://dbpedia.org/class/yago/WikicatModernArtMuseums 290
http://dbpedia.org/class/yago/Artist109812338 284
http://www.wikidata.org/entity/Q24229398 241 agent
http://dbpedia.org/class/yago/Painter110391653 185
http://dbpedia.org/ontology/Painter 169
http://www.wikidata.org/entity/Q1028181 169 painter
http://dbpedia.org/class/yago/WikicatMuseumsInParis 146
http://dbpedia.org/class/yago/WikicatArtMuseumsAndGalleriesInFrance 145
http://dbpedia.org/class/yago/WikicatLivingPeople 105
http://dbpedia.org/class/yago/Sculptor110566072 96
http://dbpedia.org/class/yago/WikicatArtMuseumsAndGalleriesInParis 84
http://www.w3.org/2004/02/skos/core#Concept 81
http://dbpedia.org/ontology/Work 80
http://schema.org/CreativeWork 80
http://www.wikidata.org/entity/Q386724 80 work
http://dbpedia.org/class/yago/Wikicat20th-centuryFrenchPainters 79
http://dbpedia.org/class/yago/Intellectual109621545 75
http://dbpedia.org/class/yago/Scholar110557854 73
http://dbpedia.org/class/yago/WikicatFrenchPainters 69
http://dbpedia.org/class/yago/Alumnus109786338 66
http://dbpedia.org/ontology/Artwork 60
http://dbpedia.org/ontology/Infrastructure 55
http://dbpedia.org/class/yago/WikicatModernPainters 52

Les « sujets » abordés dans le contexte de Paris Musées

Nous obtenons les « sujets » avec cette requête. Un sujet associé à une entité dans DBPedia indique des informations de nature très différentes d’un sujet et d’une entité à l’autre. Il s’agit globalement d’indiquer que le sujet associé a une forme de relation avec l’entité décrite.

On trouve 6931 « sujets » différents. Voilà une table des plus utilisés:

Sujet Occurences
http://fr.dbpedia.org/resource/Catégorie:Décès_à_Paris 228
http://dbpedia.org/resource/Category:Modern_art_museums 183
http://fr.dbpedia.org/resource/Catégorie:Naissance_à_Paris 159
http://fr.dbpedia.org/resource/Catégorie:Peintre_français_du_XIXe_siècle 159
http://fr.dbpedia.org/resource/Catégorie:Peintre_français_du_XXe_siècle 126
http://dbpedia.org/resource/Category:Living_people 117
http://fr.dbpedia.org/resource/Catégorie:Élève_de_l’École_nationale_supérieure_des_beaux-arts 95
http://dbpedia.org/resource/Category:French_male_painters 83
http://fr.dbpedia.org/resource/Catégorie:Sculpteur_français_du_XIXe_siècle 77
http://dbpedia.org/resource/Category:20th-century_French_painters 75
http://dbpedia.org/resource/Category:Art_museums_and_galleries_in_Paris 71
http://dbpedia.org/resource/Category:Buildings_and_structures_in_the_16th_arrondissement_of_Paris 64
http://fr.dbpedia.org/resource/Catégorie:Sculpteur_français_du_XXe_siècle 55
http://dbpedia.org/resource/Category:Modern_painters 52
http://fr.dbpedia.org/resource/Catégorie:Académie_des_beaux-arts_(France) 51
http://dbpedia.org/resource/Category:Stolen_works_of_art 50
http://fr.dbpedia.org/resource/Catégorie:Chevalier_de_la_Légion_d’honneur 50
http://fr.dbpedia.org/resource/Catégorie:Officier_de_la_Légion_d’honneur 44
http://fr.dbpedia.org/resource/Catégorie:Peintre_portraitiste_français 44
http://dbpedia.org/resource/Category:19th-century_French_painters 40
http://fr.dbpedia.org/resource/Catégorie:Graveur_français_du_XIXe_siècle 39
http://fr.dbpedia.org/resource/Catégorie:Graveur_français_du_XXe_siècle 34
http://fr.dbpedia.org/resource/Catégorie:Photographe_du_XXe_siècle 34
http://fr.dbpedia.org/resource/Catégorie:Photographe_français 34
http://dbpedia.org/resource/Category:French_male_sculptors 33
http://fr.dbpedia.org/resource/Catégorie:Peintre_français_du_XVIIIe_siècle 33
http://fr.dbpedia.org/resource/Catégorie:Prix_de_Rome_en_peinture 32
http://fr.dbpedia.org/resource/Catégorie:Commandeur_de_la_Légion_d’honneur 31
http://dbpedia.org/resource/Category:20th-century_women_artists 29
http://dbpedia.org/resource/Category:20th-century_French_sculptors 27
http://fr.dbpedia.org/resource/Catégorie:Prix_de_Rome_en_sculpture 27
http://fr.dbpedia.org/resource/Catégorie:Peintre_paysagiste_français 26
http://fr.dbpedia.org/resource/Catégorie:Écrivain_français_du_XXe_siècle 26
http://dbpedia.org/resource/Category:Abstract_painters 24
http://dbpedia.org/resource/Category:School_of_Paris 24
http://fr.dbpedia.org/resource/Catégorie:Membre_de_l’Académie_française 24
http://fr.dbpedia.org/resource/Catégorie:Dessinateur_français 23
http://dbpedia.org/resource/Category:Artists_from_Paris 22
http://fr.dbpedia.org/resource/Catégorie:Grand-croix_de_la_Légion_d’honneur 22
http://fr.dbpedia.org/resource/Catégorie:Illustrateur_français_du_XIXe_siècle 22
http://fr.dbpedia.org/resource/Catégorie:Illustrateur_français_du_XXe_siècle 22
http://fr.dbpedia.org/resource/Catégorie:Écrivain_français_du_XIXe_siècle 22
http://dbpedia.org/resource/Category:Art_museums_established_in_1961 19
http://dbpedia.org/resource/Category:Cubist_artists 19
http://fr.dbpedia.org/resource/Catégorie:Médailleur 19
http://fr.dbpedia.org/resource/Catégorie:Personnalité_de_la_franc-maçonnerie_française 19
http://dbpedia.org/resource/Category:Modern_sculptors 18
http://dbpedia.org/resource/Category:1961_establishments_in_France 17
http://fr.dbpedia.org/resource/Catégorie:Peintre_de_nu 17
http://fr.dbpedia.org/resource/Catégorie:Femme_peintre 16
http://fr.dbpedia.org/resource/Catégorie:Peintre_d’art_sacré 16
http://fr.dbpedia.org/resource/Catégorie:Peintre_d’histoire_français 16

Exemple d’exploitation des liens

Prenons un des 10 premiers sujets de la table ci-dessus:

http://fr.dbpedia.org/resource/Catégorie:Sculpteur_français_du_XIXe_siècle

Nous pouvons nous demander vers quoi cette entité peut nous mener et comment elle est reliée à Paris Musées dans le contexte créé.

Le lien avec paris musées se fait en 2 sauts avec des liens wikipagewikilink ou subject

(Paris Musées) relié à (entité intermédiaire) reliée à (personne sculpteur )  qui a un lien avec (Catégorie:Sculpteur_français_du_XIXe_siècle)

Il y a 7 entités qui peuvent servir d’intermédiaire (requête)

dbpfr:Musées_de_la_Ville_de_Paris

dbpfr:Musée_de_la_vie_romantique

dbpfr:Petit_Palais

dbpfr:Musée_Carnavalet

dbpfr:Musée_Bourdelle

dbpfr:École_nationale_supérieure_des_beaux-arts

dbpfr:10e_arrondissement_de_Paris

Si on regarde par exemple les sculpteurs en liaison avec le Petit Palais (dbpfr:Petit_Palais), on trouve:

dbpfr:Honoré_Daumier
dbpfr:Jean-Antoine_Injalbert
dbpfr:Jules_Dalou
dbpfr:Jean-Baptiste_Carpeaux
dbpfr:Gustave_Moreau
dbpfr:Maurice_Ferrary
dbpfr:Charles_Louis_Malric
dbpfr:Louis_Convers

qui sont 8 sculpteurs.

Conclusion

Sur ce principe, nous pensons établir des liens entre des entités de notre contexte et des données externes pour faire émerger des relations entre entités qui pourront être utiles: propositions de parcours, suggestions,…

Préfixes utilisés dans ce billet

dbpo: <http://dbpedia.org/ontology/>

rdfs: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

owl: <http://www.w3.org/2002/07/owl#>

dbpfr: <http://fr.dbpedia.org/resource/>

dbp: <http://dbpedia.org/resource/>

Publié dans Uncategorized | Laisser un commentaire

Données des musées et analyses de Tweets

Dans le cadre du projet Data&Musée, nous avons notamment accès à des messages laissés par des visiteurs sur des « livres d’or » électroniques. L’observation de ces messages montre qu’ils sont composés de textes courts, souvent elliptiques, avec une orthographe incertaine et de nombreux éléments qui ne relèvent pas de la langue courante -émoticônes, ponctuations multiples…

Ainsi, ces messages s’apparentent beaucoup à de la messagerie instantanée, tweets ou autres. Ce billet présente quelques remarques en liaison avec cette observation.

Analyse de tweets par MuseumWeek

Dans le cadre de l’initiative MuseumWeek, liée au Labex « Les passés dans le présent« , une expérimentation a été menée visant à analyser les tweets échangés pendant cette manifestation culturelle.

On trouve des résultats de cette expérimentation ici et un article décrivant l’expérimentation et ses résultats ici (« Automatic Classification of Tweets for Analyzing Communication Behavior of Museums »).

Comme il s’agit d’analyser le comportement de représentants des musées pendant une manifestation, nous sommes un peu loin de ce qui concerne le projet Data&Musée. Cependant, certains aspects du nettoyage et de la mise en forme des données peuvent être une source d’inspiration.

Projets et publications sur l’analyse de tweets

#Idéo2017 : une plateforme citoyenne dédiée à l’analyse des tweets lors des événements politiques
de Claudia Marinica, Julien Longhi, Nader Hassine, Abdulhafiz Alkhouli, Boris Borzic

peut aussi être une source d’inspiration.

Depuis quelques années, la grande conférence annuelle sur les technologies du Web –lien vers la dernière occurence– fait la part belle aux réseaux sociaux. On y trouve probablement des publications liées aux tweets.

Sur Google Scholar, une recherche de ‘tweet analysis’ donne 6300 publications rien que pour 2018!

Par exemple, « HashCount at SemEval-2018 Task 3: Concatenative Featurization of Tweet and Hashtags for Irony Detection » à la conférence SemEval-2018. Dans cet évènement, trois taches parmi 12 portaient sur l’analyse de tweets et ont donné lieu à des publications:

Affect and Creative Language in Tweets

Bref, en cherchant un peu, on trouve vite des pistes. Il n’y a plus qu’à travailler!

 

 

Publié dans Uncategorized | Laisser un commentaire

Pourquoi un dépôt local de publications?

Le projet SemBib porte l’idée d’une fédération de dépôts locaux de publications scientifiques. Mais pour commencer, on peut se poser la question: pourquoi un dépôt local de publications?

Je ne vais pas donner ici toutes les justifications, mais commencer par une: quelle représentation a chacun de nos chercheurs dans les dépôts publics généralistes?

Et, pour faire un test, je vais commencer par moi.

Interrogeons la base de meta-données bibliographiques de Telecom ParisTech à mon sujet (requête). On obtient 71 références, donc, 71 publications publiées dans le cadre de Télécom Paristech; cela ne compte donc pas d’autres publications, comme ma thèse de 1984.

Interrogeons

  • Google Scholar (requête): 139 résultats. Il est difficile de trouver les publications effectives, car même lorsqu’on indique à Scholar de ne pas afficher les citations, il en affiche malgré tout, ainsi que des documents qui n’ont rien à voir.
  • Microsoft Academic Graph (requête): 36 résultats.
  • Arxiv (formulaire): 0 résultat.
  • DBLP (requête): 25 résultats
  • BibSonomy (requête): 26 résultats
  • CiteULike (requête): plus de 800 résultats!
  • Worldcat (requête): 43 résultats
  • Sudoc (requête): 7 résultats
  • CiteSeerx (requête): 0 résultat
  • Semantic Scholar (requête): 38 résultats
  • IdRef (requête): 10 résultats

Je pourrais continuer avec bien d’autres dépôts. La conclusion est claire: la plupart des dépôts ne reconnaissant qu’entre un quart et un tiers de mes publications, sauf ceux qui renvoient énormément de bruit…

Avoir un dépôt local, c’est fournir une source de référence complète, sur laquelle on peut appliquer des critères de qualité et avoir une certaine finesse d’analyse.

 

 

 

Publié dans Données publiques, Marquage sémantique, Outils, SemBib | Laisser un commentaire

Désactivation de Wordlift

Dans le billet https://onsem.wp.imt.fr/2016/04/20/wordlift-est-arrive-sur-ce-site/, j’annonçais l’utilisation de l’extension Wordlift. J’étais un des adopteurs précoces de cet outil qui permet de marquer sémantiquement les billets d’un blog WordPress, facilement sous la supervision de l’auteur de l’article.

J’ai le regret de devoir la désactiver. Jusqu’à il y a environ un mois, tout fonctionnait bien et ce blog s’enrichissait peu à peu de liens sémantiques entre les pages et vers l’extérieur.

Malheureusement, depuis, rien ne va plus: les marquages validés ne sont pas sauvegardés, ceux qui pré-existaient ne semblent plus être reconnus. Les auteurs de l’extension ont pour priorité -surement légitime- de valoriser leur outil auprès de sociétés. Il est très compliqué pour moi d’engager par carte bleue sur un abonnement de durée illimitée l’organisme public où je suis chercheur. Je ne crois pas que je vais mettre en route le branle-bas administratif nécessaire pour cela.

Dommage, le principe me paraissait prometteur. Je pensais que cet outil était une bonne illustration de ce que peuvent apporter des services construits sur le web sémantique. Je m’en servais pour illustrer des enseignements à des élèves ingénieurs avec qui j’essaie partager mon enthousiasme pour ces techniques.

Publié dans Uncategorized | Laisser un commentaire

Lancement du projet Data&Musée

Nous démarrons pour deux ans le projet Data&Musée avec une dizaine de partenaires. Ce projet porte sur les données produites et utilisées par les musées et institutions culturelles: billetterie, traces de visite du site web, livre d’or, parcours…

Evidemment, nous allons exploiter les techniques du Web Sémantique et nous aurons l’occasion de reparler de ce projet ici dans les prochains mois.

Il va y avoir des embauches.

Il y a des partenaires particulièrement intéressants pour ce qui est des traitements liés à la sémantique: Kernix, ITEN.

Pour plus d’informations voir: https://blogrecherche.wp.imt.fr/2017/10/12/datamusee-data-institutions-culturelles/

Publié dans Cultural data, Marquage sémantique | Laisser un commentaire

Identifiants IdRef de chercheurs

Dans le post Premier contact avec les outils de l’Agence Bibliographique de l’Enseignement Supérieur, j’avais identifié IDREF comme source possible d’identifiants pour le projet SemBib.

J’ai obtenu une liste de 195 personnels de Télécom ParisTech impliqués dans la recherche. J’ai utilisé la requête indiquée dans le précédent post avec comme critères de recherche le nom et le prénom de chaque personne.

J’ai obtenu 195 réponses:

  • 130 proposaient un seul identifiant,
  • 17 n’en proposaient aucun,
  • 48 en proposaient plusieurs

Une vérification visuelle dur les notices associées à ces identifiants a permis de constater que lorsqu’un seul identifiant est proposé, c’est généralement le bon:

  • 124 sont exacts: ils correspondent bien à la personne souhaitée
  • 6 sont erronés ou incertains (dans ce cas, la notice n’a pas permis de s’assurer qu’il s’agissait de la bonne personne)

Sur les 17 pour lesquels on ne trouve pas d’identifiants, pour au moins 8 d’entre eux, c’est normal: ce sont des personnes qui ne publient pas, par exemple parce qu’ils sont ingénieurs de recherche et que leur activité ne les conduit pas à publier. Les 9 autres devraient avoir un identifiant IDREF.

Pour les 48 où la recherche simple donne plusieurs possibilités, j’ai cherché dans les données de la notice des indices permettant de choisir un des ID proposés. En pratique, je cherche si dans les textes qui composent la notice je trouve soit le nom d’un des autres chercheurs de Télécom ParisTech, soit un des labels associés à Télécom ParisTech: ENST, Télécom Paris

Cela a permis de trouver 23 identifiants exacts supplémentaires.

Au final, si l’on considère la classe des chercheurs qui doivent avoir un identifiant, on a avec la méthode actuelle:

  • 147 identifiants exacts trouvés (124+23)
  • 178 identifiants trouvés (130+48)
  • 187 identifiants qui auraient dus être trouvés (130+48+9)

Ce qui donne

rappel = 147/187 = 79,46 %

précision = 147/178 = 82,58 %

Dans l’immédiat, je ne vais pas chercher à améliorer la méthode et me limiter à utiliser les identifiants qui ont pu être vérifiés. L’idée est d’affiner une méthode pour choisir parmi les identifiants multiples et donc de ne garder que ces identifiants uniques. En effet, sur les identifiants uniques, nous avons:

rappel = 124/187 = 67,02 %

précision = 124/130 = 95,38 %

Dans un second temps, donc, je vais tenter d’améliorer la précision d’une part en ne proposant que des ID quasi certains au prix d’une légère augmentation des éléments considérés comme ‘non trouvés’ lorsque aucun moyen n’aura permis de sélectionner un ID parmi les choix multiples. L’idée est d’utiliser avec confiance tous les ID trouvés.

Les pistes d’amélioration de la méthode sont:

  • utilisation de données externes où l’IDREF est présent (par exemple du côté de VIAF)
  • affiner l’utilisation des notices: ajouter des éléments à chercher, exploiter les titres de documents qui y figurent pour les chercher dans d’autres référentiels de publications scientifiques

Il va principalement s’agir de trouver une méthode qui permet une sélection parmi les choix multiples sans dégrader les résultats sur les autres résultats.

Publié dans Données publiques, Marquage sémantique, SemBib | Laisser un commentaire

Où Telecom ParisTech publie régulièrement: un peu de technique

Dans l’article Où Telecom ParisTech publie régulièrement, j’ai montré un exemple d’utilisation de la représentation sémantique de notre bibliographie: un graphique qui permet de voir les séries de conférences principalement utilisées par les chercheurs de Télécom ParisTech pour publier des résultats scientifiques.

Je vais donner ici quelques éléments techniques qui ont permis d’obtenir ce résultat. Pour alléger les notations, des préfixes sont utilisés; ils sont explicités à la fin de cet article.

Pour commencer, une URI a été attribuée à chaque publication. Elles sont de la forme:

http://givingsense.eu/sembib/tpt/NNNNN

où NNNNN est un numéro unique attribué à unepublication dans la base bibliographique de Télécom ParisTech. Par exemple:

http://givingsense.eu/sembib/tpt/13387

Chaque article de conférence est associé à une conférence par le prédicat <http://givingsense.eu/sembib/inConf> que nous avons défini pour nos propres besoins.

Par exemple, l’article précédent est associé à une conférence par le triplet:

tpt:13187  sb:inConf conf:ISM2012

Chaque conférence est associée à une série de conférences à l’aide du prédicat

<http://lod.springer.com/data/ontology/property/hasSeries>

défini par l’éditeur Springer pour son point d’accès à son graphe de données (voir http://lod.springer.com/sparql-form/index.html)(chaque fois que possible les prédicats sont choisis parmi des prédicats utiles déjà utilisés par d’autres ensembles de données).

conf:ISM2012 ns0:hasSeries conf:ism

Ainsi la requête suivante nous permet de trouver le nombre de publications par série de conférences, classés par valeur croissante:

SELECT ?source (count(?paper) as ?count) 
WHERE {
graph ?g {
  ?paper sb:inConf ?conf .
  ?conf ns0:hasSeries ?urisource .
  ?urisource dc:label ?source
}
}
group by ?source
order by desc(?count)

En envoyant la requête avec une demande de réponse au format TSV, on peut directement intégrer la réponse en entrée d’un graphique défini avec la librairie graphique javascript D3.js. Le code utilisé par notre représentation graphique est une variante très simple de l’exemple présenté ici.

Note complémentaire: préfixes utilisés ci-dessus

prefix conf: <http://givingsense.eu/sembib/channels/>
prefix tpt: <http://givingsense.eu/sembib/tpt/>
prefix sb: <http://givingsense.eu/sembib/>
prefix ns0: <http://lod.springer.com/data/ontology/property/>

 

Publié dans Marquage sémantique, SemBib, SPARQL, Visualisation | Laisser un commentaire

Où Telecom ParisTech publie régulièrement?

(cliquer pour voir en grand)

Notre base bibliographique ne permet pas de faire ressortir aisément les conférences et journaux où nous publions souvent. L’approche sémantique que nous avons entamé avec le projet SemBib apporte des réponses.

Dans le cadre du projet SemBib, un travail -semi-automatique- a été effectué pour identifier les entités significatives de ce point de vue. Il s’est agit en particulier de lister les conférences scientifiques où nous publions. Dans un futur billet nous présenterons la méthode de déduplication et mise en cohérence des références.

Illustrons le problème: la conférence ICASSP est présente dans la base avec 30 intitulés différents pour plus de 80 publications.

Nous avons publié 2190 articles dans 1340 conférences de novembre 2010 à novembre 2015. Ci-dessus, un graphique des séries de conférences où nous avons le plus publié.

 

 

Publié dans Marquage sémantique, SemBib, Visualisation | Un commentaire

Analyser les publications de Telecom ParisTech: les données disponibles

Cet article fait suite à https://onsem.wp.imt.fr/2016/04/20/co-auteurs-des-publications-dune-institution-scientifique-telecom-paristech/.

Dans cet article, nous visualisions les liens entre chercheurs matérialisés  par des publications scientifiques communes.

J’utilise les données obtenues de la base bibliographique de Telecom ParisTech.

Mon idée est de tirer des informations utiles -j’espère- de cet ensemble de données. Dans ce billet, je fais le point sur les données de base disponibles.

Sur 5 ans, les données extraites montrent que:

  • 3796 publications sont recencées dans la base, 3161 en anglais, 632 en français, 1 en italien et 2 en espagnol
  • 1313 sont associées à une url d’accès en ligne au document
  • 1067 ont des mots-clés associés, dont 885 en anglais et 182 en français
  • 608 ont un DOI associé, avec des formes très variées (avec ou sans préfixe doi, url,…)

Ces urls associées sont de diverses natures:

  • 419 pointent directement sur un document téléchargeable sans difficulté, presque tous au format pdf (418/419)
  • 52 pointent vers une page du site d’archivage arxiv; le document est accessible par un lien contenu dans cette page, mais arxiv bloque les robots et la récupération de l’article ne peut donc pas être aisément automatisée
  • 5 pointent vers ACM Digital Library, archive payante de l’ACM
  • 52 pointent vers IEEE XPlore, archive payante de l’IEEE

On voit qu’une analyse des mots-clés disponibles ne porterait que sur 1/4 des publications, ce qui constituerait un biais majeur, en particulier si renseigner les mots-clés rélève de façon répétitive des mêmes auteurs. Cette analyse constitue malgré tout une connaissance. Nous allons mettre en place les outils pour automatiser sa réalisation afin de la refaire périodiquement.

En conclusion, nous pouvons observer que la base bibliographique de Télécom ParisTech est une référence pour connaitre nos publications, mais qu’elle est insuffisante pour une analyse approfondie du contenu de ces publications.

[wl_cloud]

Publié dans Marquage sémantique, Outils, SemBib | Laisser un commentaire

Essais avec l’API Mendeley

Mendeley est un outil d’aide aux chercheurs pour organiser les références qu’ils consultent. Mendeley dispose d’une API. Ce billet rend compte des premiers essais effectués avec cette API. Je vais accéder à quelques données depuis un programme Python.

Il est nécessaire d’avoir un compte sur Mendeley; c’est possible sans payer.

Ensuite, depuis ce compte, il faut déclarer une application; ça se passe ici.

Mendeley utilise OAuth pour authentifier les utilisateurs de son API.

Après avoir déclaré l’application, il faut obtenir un ‘token’ ici. Il s’agit d’une longue chaîne de caractères qui va être utilisée dans les appels à l’API; sa durée de validité est de une heure (au moment de l’écriture de ce billet).

Ici, j’illustre l’accès aux informations concernant un document désigné par son numéro DOI.

import json
import urllib
import data.privateConfig as pConf

mendeleyApiAccess = "https://api.mendeley.com/"
# token obtenus ici: https://mendeley-show-me-access-tokens.herokuapp.com
# ici stocké dans un fichier de configuration
# Access a durée de vie 1h
token =  pConf.mendeleyToken

urlquery = mendeleyApiAccess+'catalog?doi=10.1103/PhysRevA.20.1521'
headers = {'Authorization': 'Bearer ' + token}
req = urllib.request.Request(urlquery, None, headers)
with urllib.request.urlopen(req) as rep:
    results = json.loads(str(rep.read().decode('utf-8')))
    print(results)

Ce qui me donne le résultat suivant:

[{
    "title": "Laser cooling of atoms",
    "type": "journal",
    "authors": [
        {
            "first_name": "D. J.",
            "last_name": "Wineland",
            "scopus_author_id": "7006041778"
        },
        {
            "first_name": "Wayne M.",
            "last_name": "Itano",
            "scopus_author_id": "7005352566"
        }
    ],
    "year": 1979,
    "source": "Physical Review A",
    "identifiers": {
        "isbn": "9788578110796",
        "doi": "10.1103/PhysRevA.20.1521",
        "sgr": "33749570604",
        "pmid": "25246403",
        "pui": "209086317",
        "issn": "10502947",
        "arxiv": "arXiv:1011.1669v3",
        "scopus": "2-s2.0-33749570604"
    },
    "id": "04d48d5f-d664-3a17-b004-1503cca53802",
    "abstract": "Predicting the binding mode of flexible polypeptides to proteins is an important task that falls outside the domain of applicability of most small molecule and protein−protein docking tools. Here, we test the small molecule flexible ligand docking program Glide on a set of 19 non-α-helical peptides and systematically improve pose prediction accuracy by enhancing Glide sampling for flexible polypeptides. In addition, scoring of the poses was improved by post-processing with physics-based implicit solvent MM- GBSA calculations. Using the best RMSD among the top 10 scoring poses as a metric, the success rate (RMSD ≤ 2.0 Å for the interface backbone atoms) increased from 21% with default Glide SP settings to 58% with the enhanced peptide sampling and scoring protocol in the case of redocking to the native protein structure. This approaches the accuracy of the recently developed Rosetta FlexPepDock method (63% success for these 19 peptides) while being over 100 times faster. Cross-docking was performed for a subset of cases where an unbound receptor structure was available, and in that case, 40% of peptides were docked successfully. We analyze the results and find that the optimized polypeptide protocol is most accurate for extended peptides of limited size and number of formal charges, defining a domain of applicability for this approach.",
    "link": "http://www.mendeley.com/research/laser-cooling-atoms-1"
}]

Si on remplace la valeur de la variable urlquery par

urlquery = mendeleyApiAccess+'search/profiles?query=Jean-Claude%20Moissinac'

On va trouver les ‘profils’ définis dans Mendeley et qui ont un lien avec ‘Jean-Claude Moissinac’. La requête fournit de nombreuses informations: affiliation, quelques domaines d’intérêt, photos, localisation…

Un ensemble de données intéressantes pour compléter l’information sur les chercheurs dans le projet SemBib!

Publié dans Outils, SemBib | Laisser un commentaire

Identifiants LOD pour Télécom ParisTech

Télécom ParisTech est une des principales écoles d’ingénieur du numérique en France; c’est aussi une grande institution de recherche. Le slogan affiché est assez représentatif de ses objectifs « Innover et entreprendre dans un monde numérique ».

La dénomination de Télécom ParisTech a évolué au fil du temps. La multiplication des noms rend difficile les rapprochements entre différentes sources de données. Les principes du Linked Open Data vont nous aider.

Voici quelques noms officiels ou noms d’usage qui ont été utilisés:

Telecom ParisTech

Télécom Paris

Ecole Nationale Supérieure des Télécommunications

École Nationale Supérieure des Télécommunications de Paris

ENST ou E.N.S.T.

Sup Télécom

et précédemment:

ainsi que diverses variantes autour des ces intitulés.

Il est alors difficile aux catalogues et systèmes d’indexation de bien rattacher nos chercheurs et publications à une seule et même institution (par exemple, pour compter les publications pour un classement des universités…).

Les principes du LOD peuvent nous aider à utilisant un identifiant unique dans les données que nous allons produire dans le cadre du projet SemBib.

Quel identifiant utiliser?

VIAF est un fichier d’autorité, recensant de nombreux auteurs à travers le monde et leur attribuant un identifiant unique. Depuis quelques temps VIAF recense aussi les organismes et les conférences en s’aidant notamment de Wikidata (voir Corporate VIAF).

Une recherche simple sur leur site nous donne

http://viaf.org/viaf/130089636/

D’où, on peut déduire l’accès à une version RDF, sans faire de la négociation de contenu:

http://viaf.org/viaf/130089636.rdf

Les données associées sont cependant partiellement erronées, en particulier sur les propriétés schema:alternateName et skos:altLabel, où Télécom Bretagne est considérée comme un nom alternatif pour Télécom Bretagne.

Worldcat, le catalogue international de publication, initiative de l’OCLC, recense aussi des organisations et assure des liens avec VIAF. Avec l’URL suivante

http://www.worldcat.org/identities/viaf-130089636/

directement dérivée du numéro VIAF de Télécom ParisTech, on trouve l’enregistrement de Télécom ParisTech dans Worldcat. On constate des erreurs analogues à celles de VIAF. On trouve aussi dans cette page un lien vers un ensemble de publications associées à Télécom ParisTech. Par contre, la page obtenue à cette adresse contient du marquage RDFa, qu’on peut voir, par exemple, avec le RDFa Distiller du W3C:

https://www.w3.org/2012/pyRdfa/extract?uri=http%3A%2F%2Fwww.worldcat.org%2Fidentities%2Fviaf-130089636%2F&format=turtle&rdfagraph=output&vocab_expansion=false&rdfa_lite=false&embedded_rdf=true&space_preserve=true&vocab_cache=true&vocab_cache_report=false&vocab_cache_refresh=false

On y voit notamment les triplets suivants:

<http://www.worldcat.org/identities/viaf-130089636> ns1:sameAs <http://en.wikipedia.org/wiki/Special:Search?search=T%C3%A9l%C3%A9com_ParisTech>,
<http://id.loc.gov/authorities/names/n81054244>,
<http://viaf.org/viaf/130089636>,
<https://www.wikidata.org/wiki/Q2311820>

La dernière URI, celle de Wikidata, parait intéressante. Les informations liées sont assez peu nombreuses, mais toutes exactes. L’URI Wikidata semble être un bon candidat. De plus, le processus de production des données de Wikidata parait nous permettre, assez aisément, des mises à jour, des compléments et des corrections afin de garantir une description aussi correcte que possible associée à l’URI.

Sur la page Wikidata, on trouve aussi les identifiants suivants:

GRID – Global Research Identifier Database):

https://www.grid.ac/institutes/grid.463717.0

ISNIInternational Standard Name Identifier (ISO 27729):

http://www.isni.org/0000000121082779

L’ISNI est une bonne référence internationale. Les informations liées semblent correctes.

Dans la page de l’ISNI, on trouve un lien vers un identifiant LC (Library of Congress):

http://id.loc.gov/authorities/names/n81054244

et enfin un identifiant SUDOC/IDREF -déjà abordé dans le billet Premier contact avec les outils de l’Agence Bibliographique de l’Enseignement Supérieur

http://www.idref.fr/026375273

On trouve au niveau de la page descriptive de cet URI une référence à l’ISNI http://www.isni.org/isni/0000000121096951 qui contient les mêmes confusions avec Telecom Bretagne qu’évoquées précédemment.

Dans cette page, on trouve un nouvel identifiant, l’identifiant ARK utilisé par la BNF (qui correspond au numéro de notice BNF FRBNF118634931):

http://catalogue.bnf.fr/ark:/12148/cb11863493k

Pour mémoire, citons aussi l’identifiant qu’on peut trouver au niveau du projet Semantic Web Doc Food, qui a évolué vers le projet Scholarlydata, et s’applique à la récolte de données sur les publications scientifiques:

http://data.semanticweb.org/organization/telecom-paristech

qui a évolué vers

https://w3id.org/scholarlydata/organisation/telecom-paristech

Conclusion

Pour les raisons évoquées ci-dessus, nous allons utiliser l’identifiant Wikidata:

https://www.wikidata.org/wiki/Q2311820

Par ailleurs, nous allons créer un graphe pour récolter les équivalences entre identifiants d’organisations et de chercheurs -voir Identificateurs uniques de chercheurs versus Uniques identificateurs de chercheurs– en exploitant notamment la propriété owl:sameAs.

 

 

 

Publié dans DBPedia, Données publiques, Marquage sémantique, SemBib | Laisser un commentaire

Expérimentation en Python pour accéder à ISTEX

ISTEX a pour ambition de « construire le socle de la bibliothèque scientifique numérique nationale. » Il s’agit d’une initiative dans le cadre des « Investissements d’Avenir » soutenus par l’Etat français.

ISTEX acquiert et structure de grandes quantités de documents scientifiques pour les rendre accessibles.

Nous nous intéressons ici à l’accès aux ressources d’ISTEX via une API.

API ISTEX

Les informations concernant l’API ISTEX se trouvent à l’adresse https://api.istex.fr/documentation/. Certaines ressources sont en accès libre, d’autres nécessitent une authentification.

L’API propose plusieurs modes d’authentification. Nous allons utiliser l’authentification par clé (token d’identification). La méthode décrite (https://api.istex.fr/documentation/access/) est en deux étapes: création du token, accès à l’API à l’aide du token.

La création du token nécessite de s’identifier à l’adresse https://api.istex.fr/token/ soit par son établissement d’enseignement/recherche en le sélectionnant dans une liste, soit en utilisant un CRU -Compte Réseau Universel- que l’on peut créer en ligne. Une fois cette authentification réalisée, un accès à la même adresse renvoie une structure JSON telle que:

{
  "_comment": "Votre token d'identification a bien été généré. 
    Vous pouvez dès à présent vous indentifier en utilisant le header 
    "Authorization: Bearer _accessToken" 
    (remplacer _accessToken par votre token)..."
  "_accessToken": "eXJXbXciOeyJpZCI6Im1vaXNzaW5hI..."
}

Le champ « _accessToken » de la structure JSON obtenue est le token qui pourra être utilisé lors des accès suivants à l’API. J’ai sauvé la structure JSON dans un fichier tokenIstex.json.

Exemple de requête à ISTEX

Un code minimal pour interroger ISTEX est alors par exemple

import json
import urllib

istexpApiAccess = "https://api.istex.fr/"
token = "<ici mettre votre token>"
urlquery = istexpApiAccess+'document/?q=author.name:Moissinac'
headers = {'Authorization': 'Bearer ' + token}
req = urllib.request.Request(urlquery, None, headers)
with urllib.request.urlopen(req) as rep:
    results = json.loads(str(rep.read().decode('utf-8')))
    print(results)

Vous devez renseigner votre token.

La requête proprement dite est la valeur du paramètre q. Ici, j’indique que je veux chercher suivant le critère author.name qui doit avoir la valeur Moissinac.

La réponse est une structure JSON sur le modèle fictif suivant:

{
  "total": 129,
  "nextPageURI": 
    "https://api.istex.fr/document/?q=author.name:Moissinac&size=10&defaultOperator=OR&from=10",
  "firstPageURI": 
   "https://api.istex.fr/document/?q=author.name:Moissinac&size=10&defaultOperator=OR&from=0",
  "lastPageURI": 
   "https://api.istex.fr/document/?q=author.name:Moissinac&size=10&defaultOperator=OR&from=119",
  "hits": [
    {
      "title": "SVG: open format for graphic",
      "id": "F8F283D5CBD747547F48F8057F2190FB11772A76",
      "score": 7.9658365
    },
    {
      "title": "Oil Impacts on Marine Invertebrate Populations and Communities",
      "id": "A1465DF05E586E93F745415C7AB4EB45FC9CFF10",
      "score": 6.441195
    },
...
  ]
}

On y trouve le nombre total de réponse, par défaut les 10 premières réponses dans le champ hits, les urls de la page suivante, de la première et de la dernière page de réponses. Pour chaque réponse, on a le titre, un identifiant de ressource ISTEX -que nous utiliserons dans d’autres requêtes- et un score -qui évalue une pertinence de la réponse?.

La composition des requêtes est décrite ici:

https://api.istex.fr/documentation/search/

La requête suivante

urlquery = istexpApiAccess+'document/?q=semantic'

donnera les documents contenant le mot semantic dans un des champs indexés.

et la requête

urlquery = istexpApiAccess+"document/982F365ECC48B450E090EC595C09C8472DE784CF/fulltext/pdf"

donnera le document dont l’identifiant ISTEX est 982F365ECC48B450E090EC595C09C8472DE784CF.

Pour avoir plus d’informations sur ce document, il suffit d’utiliser cet identfiant pour la requête

urlquery = istexpApiAccess+"document/982F365ECC48B450E090EC595C09C8472DE784CF

qui renvoie une structure JSON avec notamment le titre, les auteurs et leur affiliation….

Précautions

De façon classique lorsqu’on utilise une API, il faut éviter de surcharger le serveur en envoyant des salves de requêtes générées par un logiciel.

Vous devez utiliser une des méthodes permettant d’appeler une fonction chaque N secondes. La méthode appelée consomme à chaque fois une requête placée dans une liste de requêtes. J’ai ainsi sollicité ISTEX par une requête toutes les 5 secondes.

Résultats

Sur cette base, j’ai cherché les publications de Telecom ParisTech.

La requête

urlquery = istexpApiAccess+"document/?q=Telecom%20AND%20ParisTech"

donne 479 références. Tandis que la requête

urlquery = istexpApiAccess+"document/?q=Télécom%20AND%20ParisTech"

donne 225 références.

 

Publié dans Données publiques, SemBib, Uncategorized | Laisser un commentaire

Identificateurs uniques de chercheurs versus Uniques identificateurs de chercheurs

Comme mentionné dans l’article « Premier contact avec les outils de l’ABES » , pour le projet SemBib, j’ai commencé par utiliser mes propres identifiants pour les chercheurs. Ensuite, j’ai voulu utiliser des identifiants provenant de sources de références, à commencer par les identifiants IDREF de l’ABES.

J’ai mis le doigt dans un engrenage.

Devant les difficultés rencontrées pour récupérer les identifiants IDREF de tous les chercheurs de Telecom ParisTech, et ayant vu que l’ABES a des accords avec VIAF, j’ai cherché ce que je pouvais faire du côté de VIAF. VIAF est un ‘fichier d’autorité international virtuel’ créé par un ensemble de bibliothèques nationales. Il gère notamment un ensemble d’identifiants uniques de personnes. Nous avons vu dans le billet ci-dessus comment j’ai récupéré depuis VIAF des informations sur les chercheurs de Telecom ParisTech.

En analysant un peu les données obtenues, j’ai pu voir que les données VIAF provenaient de diverses sources; de proche en proche, à partir de ces sources, j’ai ainsi trouvé des identifiants de personnes provenant de:

  • BNF: la Bibliothèque Nationale de France attribue des identifiants à des auteurs et notamment des auteurs de publications scientifiques,
  • ARK: un système d’identification aussi utilisé par la BNF,
  • SUDOC: c’est un catalogue produit par l’ABES, qui gère notamment les identifiants IDREF,
  • ISNI: pour « International Standard Name Identifier« , défini par une norme ISO, utilisé aussi, entre autres, par la BNF (voir ISNI et la BNF)
  • DBPedia:
  • ResearcherID:
  • ORCID: ces identifiants concernent des auteurs et contributeurs des domaines de l’enseignement supérieur et de la recherche; il y a des liens imparfaits entre l’ISNI et l’ORCID (voir Relations entre ORCID et ISNI);
  • DNB: les identifiants utilisés pat la DEUTSCHEN NATIONALBIBLIOTHEK;
  • RERO: semble définit par le Réseau des Bibliothéques de Suisse Occidentale;
  • LC: identifiants utilisés par la Library of Congress;
  • KRNLK: le point d’accès Linked Open Data de la National Library of Korea, qui comporte un accès SPARQL (http://lod.nl.go.kr/home/sparql/se.jsp)
  • ICCU: utilisé par l’Institut Central pour un Catalogue Unifié des Bibliothèques Italiennes (ICCU)
  • LNB: identifiants dans la Bibliothèque Nationale de Lettonie
  • NKC: identifiants de la Bibliothèque nationale tchèque
  • NLI: identifiants de la Bibliothèque nationale d’Israël
  • NLP: identifiants de la Bibliothèque nationale de Pologne
  • NSK: identifiants de la bibliothèque universitaire de Zagreb;
  • NUKAT: provient du Centre NUKAT de l’Université de Varsovie
  • SELIBR: utilisé par LIBRIS, un service de recherche qui fournit des informations sur les titres détenus par les universités suédoises et les bibliothèques de recherche (exemple: http://libris.kb.se/auth/264078);
  • WKD: concerne les identifiants utilisés par WikiData;
  • BLSA: provient probablement de la British Library
  • NTA: identifiants de la Bibliothèque royale des Pays-Bas

J’en ai surement oublié…

Ces identifiants désignent tous un chercheur de façon unique dans un système d’identification. Mais, comme nous venons de le voir, il peut y avoir de nombreux identifiants pour un même chercheur; tous les chercheurs n’ont pas tous les identifiants, mais ils en ont souvent plusieurs.

Par exemple, Antonio Casilli est identifié au moins par:

BNF, ARK,  ISNI, VIAF, LC, SUDOC, ORCID, DNB|1012066622, NUKAT|n 2016165182

Les chercheurs ont ainsi plusieurs identifiants plus ou moins équivalents qu’il peut être utile de connaître dans une approche Linked Open Data: si l’on veut être capable de lier les données sur un chercheur, il faut déjà pouvoir lier leurs identifiants uniques! Je reviendrais dans un prochain billet sur la solution décentralisée que je propose.

Note: cela me fait penser à la blague sur les normes vidéos « il y a N normes différentes, c’est trop; pour en finir, je vais faire un format unique qui réunira le meilleur de chaque norme »; après un tel travail, on n’a pas 1 norme, mais N+1 normes…

Publié dans Marquage sémantique, Outils, SemBib | Un commentaire

Premier contact avec les outils de l’Agence Bibliographique de l’Enseignement Supérieur

Dans le cadre du projet SemBib, j’ai été amené à choisir un identifiant unique pour chaque auteur. Suivant ma stratégie habituelle, j’ai commencé par utiliser des identifiants définis dans notre espace de nommage, avec notre préfixe. Ainsi, il a été possible de produire rapidement des résultats et d’inciter d’autres personnes à participer au projet.

J’applique cette méthode pour les éléments dont j’ai immédiatement besoin, ici les auteurs; je cherche à minimiser les identifiants et le vocabulaire que je définis de façon ad-hoc et à utiliser le plus de vocabulaire connus et courants, mais, dans un esprit d’approche agile, je ne veux pas bloquer de premiers résultats applicatifs par une recherche laborieuse de tous les vocabulaires pré-existants avec lesquels se lier.

Dans un deuxième temps, je cherche si un vocabulaire ou des identifiants existent afin  de créer des liens avec d’autres ensembles de données. Le principe de base est de créer de nouvelles versions de mes données -avec une compatibilité ascendante, si les données ont été publiées- notamment avec l’utilisation de owl:sameAs. Je compte consolider cette stratégie dans les prochains mois et je suis preneur d’avis à ce sujet.

Par hasard, j’ai trouvé que je suis identifié par IdRef avec le lien permanent http://www.idref.fr/157248550. Je suis donc allé voir de plus prêt de quoi il s’agit. La page à l’adresse http://www.idref.fr donne peu d’informations. Le sous-titre de IdRef est ‘Le référentiel des autorités Sudoc’, ce qui n’est pas très parlant -sauf si on sait que SuDoc est ‘Le catalogue du Système Universitaire de Documentation’. Le bas de la page contient un bandeau ‘ABES – Agence Bibliographique de l’Enseignement Supérieur’, ce qui suggère déjà un lien plus direct avec le projet SemBib et m’a incité à approfondir.

En fait, la documentation en ligne m’a appris que mon identifiant idref est http://www.idref.fr/157248550/id. Je peux obtenir une représentation XML du contenu de ma notice bibliographique enregistrée par l’ABES à l’adresse http://www.idref.fr/157248550.xml (noter qu’elle est très incomplète). Et pour la notice en JSONhttp://www.idref.fr/services/biblio/157248550.json.

En principe, la requête http://www.idref.fr/services/idref2viaf/157248550 devrait trouver mon identifiant VIAF (http://viaf.org/viaf/291343068), mais ne le trouve pas.

Trouver l’identifiant d’un chercheur

Je me suis demandé si j’allais ainsi pouvoir associer un identifiant idref à tous les chercheurs de Telecom ParisTech. Comme il y a environ 200 chercheurs et autant de doctorants à Telecom ParisTech, je voudrais automatiser cela.

Par malchance, le jour où j’ai commencé mes tests les exemples de la section 2.3 ne fonctionnaient pas (le 16/1/2017). J’ai donc posté un message à l’adresse email figurant dans la documentation. Très vite j’ai eu une réponse, avec plusieurs propositions (merci F.M. dont la réponse est largement reprise ci-dessous). Je me borne ici à décrire les solutions publiquement accessibles.

Première méthode

La première consiste à interroger le moteur de recherche Solr d’IdRef avec un Nom/ Prénom de personne (service documenté ici http://documentation.abes.fr/aideidrefdeveloppeur/ch02s01.html).  Exemple de requête : http://www.idref.fr/Sru/Solr?q=persname_t:(Moissinac AND Jean-Claude)&fl=ppn_z, affcourt_z&wt=xml

Le paramètre q contient la recherche qui va être effectuée par Solr. Ici, on fait une recherche de type ‘contient les mots’ -indiqué par le suffixe _t- sur le champs persname (nom de personne), suivi de : pour indiquer ses paramètres, ici une liste de chaîne de caractères qui vont être cherchées. Si les mots cherchés sont trouvés -c’est le cas dans l’exemple ci-dessus-, on obtient une réponse telle que:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">1</int>
  <lst name="params">
    <str name="fl">ppn_z</str>
    <str name="q">persname_t:(Moissinac AND Jean-Claude)</str>
  </lst>
</lst>
<result name="response" numFound="1" start="0">
  <doc>
    <str name="ppn_z">157248550</str>
  </doc>
</result>
</response>

En remplaçant la fin de la requête wt=xml par wt=json, on obtient une réponse mise en forma en JSON (au 27/1/2017: pas avec le bon MIME type).

La méthode présente un risque de ne rien obtenir si la base IDREF ne contient pas exactement les chaînes cherchées ou la possibilité de récupérer trop de choses si on ouvre trop la recherche. Par exemple, une recherche limitée au mot Moissinac donne 9 réponses qu’il va falloir discriminer. Par exemple, en allant chercher les notices bibliographiques -cf.ci-dessus- et en éliminant les notices inappropriées. Dans les 9 réponses pour ‘Moissinac’, la première est l’id 056874022 associé à la notice http://www.idref.fr/services/biblio/056874022.json où on peut, par exemple, constater que le champ « name » a la valeur « Moissinac, Bernard ». On peut, par exemple, tester les différents champs « name » par rapport à la chaîne de référence « Moissinac, Jean-Claude » avec le distance de Levenshtein. Cela devrait suffire à discriminer correctement la plupart des cas. On peut aussi avoir un contrôle spécifique sur tous les noms pour lesquels on obtient 0 ou plusieurs réponses (en supposant que lorsqu’on a une seule réponse, c’est la bonne). Nous envisagerons plus tard de faire des tests automatisés sur les autres champs de la notice.

Deuxième méthode

La seconde méthode consiste à interroger le moteur Solr de theses.fr avec un nom/prénom et une contrainte supplémentaire de lien de cette personne avec Telecom Paristech (=Paris, ENST) ou son identifiant idref 026375273 :
http://www.theses.fr/?q=personneRAs:jean-claude+moissinac%20AND%20etabSoutenances:Paris%2C+ENST&type=avancee&lng=&lng=&format=xml&fl=directeurTheseNP,directeurThesePpn

On peut obtenir une sortie xml ou json.

Les personnes recherchées doivent avoir été impliquées dans une thèse et pas forcément associées à « Paris, ENST ». La contrainte est forte. De plus, theses.fr ne semble pas connaitre nos différents noms: Telecom Paris, Télécom Paris, Télécom ParisTech… ou, en tout cas, ne pas identifier qu’il s’agit de diverses dénominations d’un même organisme. L’idéal serait de trouver une fois pour toutes l’identifiant idref de notre institution et de l’utiliser dans les critères de recherche. Nous ne traiterons pas cette question aujourd’hui.

S’appuyer sur VIAF

Le billet http://corist-shs.cnrs.fr/IDChercheurs_2016 contient des pistes: au lieu d’utiliser IDREF, s’appuyer sur ORCID ou VIAF avec lesquels IDREF a des accords d’échange.

Un tour sur les API d’ORCID et notamment l’API VIAF (https://platform.worldcat.org/api-explorer/apis/VIAF) me donne le lien suivant:

http://www.viaf.org/viaf/search?query=cql.any+=+%22Jean-Claude%20Moissinac%22&maximumRecords=5&httpAccept=application/json

me permet de trouver mon identifiant VIAF et bien d’autres (SUDOC/IDREF notamment).

Je n’ai plus qu’à décliner cette requête sur l’ensemble des noms de chercheur de Telecom ParisTech en espérant qu’il n’y aura pas trop d’ambiguïtés -qui se traduit avec un champ numberOfRecords supérieur à 1- ou d’absents -qui se traduit avec un champ numberOfRecords supérieur à 0.

 

Suite: Accès Sparql

Dans un prochain billet, nous explorerons l’accès SPARQL de l’ABES:  https://lod.abes.fr/sparql.

 

 

Publié dans Données publiques, SemBib | 2 commentaires