Objectifs du tutoriel
Manipuler la plateforme Bio/AgroPortal
Décrire son ontologie en utilisant des vocabulaires standards
Interconnecter son ontologie au reste du monde
Annoter du texte avec des ontologies
Manipuler les APIs (REST ou SPARQL) pour automatiser ses tâches
L’équipe Bio/AgroPortal au LIRMM
Clement Jonquet
Maître de Conférences en
Informatique au LIRMM et
visiting scholar à Stanford
Porteur des projets SIFR
et AgroPortal
Vincent Emonet
Ingénieur CNRS
Développeur principal des
portails du LIRMM
Anne Toulet
Ingénieur de recherche
Gestion du contenu et
des cas d’usage
« Disclaimer »
▪ Malgré la mise à disposition de plateformes concrètes, cela reste une activité de
recherche en cours
▪ Excuser les bugs, incohérences, incompréhension, les limites
▪ Nous n’aurons pas réponse à tout
Présentation de l’outil BioPortal et de ses instances pour
l’agronomie et la santé
http://bioportal.bioontology.org http://bioportal.lirmm.fr http://agroportal.lirmm.fr
NCBO BioPortal SIFR BioPortal AgroPortal
Matériel nécessaire
Un navigateur pour manipuler l’application web
Pour les appels REST (DHC, cURL, etc.)
Un éditeur de texte pour écrire vos requêtes
REST ou SPARQL
Une ontologie (de préférence en OWL ou
SKOS)
Ressources
▪ Documentation (plus ou moins technique, désolé)
▪ https://github.com/agroportal/documentation/wiki/
▪ Les exemples seront souvent donnés avec AgroPortal, mais les mêmes requêtes
peuvent être envoyées à n’importe lequel des portails en changeant la base de
l’URL (et les paramètres concernés bien sûr)
▪ http://data.agroportal.lirmm.fr/
▪ http://data.bioportal.lirmm.fr/
▪ http://data.bioontology.org/
Tour de table
▪ Avez-vous déjà utilisé BioPortal ? Pour quelle tâche ?
▪ Garder le feedback pour la fin
▪ Votre background ?
▪ Pourquoi êtes-vous là aujourd’hui ?
▪ Super rapidement
▪ Check: Accès aux slides ? Padlet ? Web ?
Créer un compte et obtenir une APIkey
▪ Cliquer sur votre login >
Account
▪ Copier/coller votre
APIKey
Espace de partage pour le tutoriel: Padlet
▪ https://padlet.com/jonquet_lirmm/5iovxfx90box
Pour ceux qui voudrait aller voir le code d’un peu plus près
https://github.com/ncbo https://github.com/agroportalhttps://github.com/sifrproject
Working with vocabularies & ontologies – a portal please!
▪ You’ve built an ontology, how do you let the world know?
▪ You need an ontology, where do you go to get it?
▪ How do you know whether an ontology is any good?
▪ How do you find data that are relevant to the domain of the ontology (or to specific
terms)?
▪ How could you use ontologies without managing them ?
15
NCBO Bioportal : A “one stop shop” for Biomedical
Ontologies
▪ Web repository for biomedical ontologies
▪ Make ontologies accessible and usable – abstraction on format,
locations, structure, etc.
▪ Web application based on a REST a web service API
▪ Online support for ontology
▪ Publish, download
▪ Browse, visualize
▪ Peer review
▪ Notes (comments and discussion)
▪ Versioning
▪ Mapping
▪ Search
▪ Resources
▪ Annotation
▪ Recommendation
16
http://data.bioontology.org
Ontology
Services
• Search
• Traverse
• Comment
• Download
Widgets
• Tree-view
• Auto-complete
• Graph-view
Annotation
Data Access
Mapping
Services
• Create
• Upload
• Download
Term recognition
Search “data”
annotated with a
given term
http://bioportal.bioontology.org 17
Sélection d’ontologies
• Utiliser les métadonnées
• Utiliser le Recommender
• Chercher au sein d’un ontologie
• Définir des métadonnées pour son ontologie en
dehors de Bio/AgroPortal
A vous de jouer !
Sélectionner une
ontologie préférée
en naviguant dans le
site ou en cherchant
dans les ontologies
Il y a plein de choses à dire sur une ontologie
Intrinsic
•names, acronym, language, ids, version, status,
license, syntaxe, type, guidelines
People
•creator, contributor, publisher, contact, curator
Grouping
•domain, group
Relation
•imports, versions, views, related to, aligned to,
used by, translation, generalization,
specialization
Content
•key classes, dumps, partitions, example, changes
Community
•endorsments, reviews, notes, projects, analytics,
support, audience
Date
•creation, modification, released, validation
Metrics
•classes,properties, individuals, depth, etc.
Provenance
•Source, generated by, invalidated by
Description
•documentation, abstract, reference, notes,
methods, tools, logo, property used, homepage
Il existe de nombreux vocabulaires pour décrire son
ontologie
Name Space Name
rdfs RDF Schema
omv Ontology Metadata Vocabulary
owl OWL 2 Web Ontology Language
dc Dublin Core Metadata Element Set
dct DC qualified
foaf Friend of a Friend Vocabulary
void Vocabulary of Interlinked Datasets
door Descriptive Ontology of Ontology Relations
vann Vocabulary for annotating vocabulary descriptions
adms Asset Description Metadata Schema
voaf Vocabulary of a Friend
dcat Data Catalog Vocabulary
prov Provenance Ontology
cc Creative Commons Rights Expression Language
schema Schema.org
skos Simple Knowledge Organization System
Exemple de SIO
<rdf:Description rdf:about="http://semanticscience.org/ontology/sio.owl">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Ontology"/>
<vann:preferredNamespacePrefix xml:lang="en">sio</vann:preferredNamespacePrefix>
<dct:license rdf:resource="http://creativecommons.org/licenses/by/4.0/"/>
<cito:citesAsAuthority
rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://www.jbiomedsem.com/content/5/1/14</cito:citesAsAuthority>
<owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1.29.0</owl:versionInfo>
<dct:description xml:lang="en">The semanticscience integrated ontology (SIO) provides a simple (…). website: http://semanticscience.orgemail:
sio-ontology@googlegroups.commailing list: http://groups.google.com/group/sio-ontology</dct:description>
<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2010-03-29</dct:issued>
<dc:creator xml:lang="en">Michel Dumontier</dc:creator>
<vann:preferredNamespaceUri
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">http://semanticscience.org/resource/</vann:preferredNamespaceUri>
<schema:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">general class inclusion axioms:'is part of' some 'physical entity'
subClassOf 'is located in' some 'physical entity'role chains:'has capability' o 'is realized in' -> 'is participant in'</schema:comment>
<dc:contributor rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Contributors are those that engage in discussions in the context of SIO
(in alphabetical order):christopher baker, joachim baran, (...) </dc:contributor>
<rdfs:seeAlso rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://sio.semanticscience.org</rdfs:seeAlso>
<dct:rights rdf:datatype="http://www.w3.org/2001/XMLSchema#string">free to use,share,modify. modify with attribution
[http://creativecommons.org/licenses/by/4.0/].</dct:rights>
<protege:defaultLanguage> en</protege:defaultLanguage>
<dct:creator rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://orcid.org/0000-0003-4727-9435</dct:creator>
<dct:title xml:lang="en">Semanticscience Integrated Ontology (SIO)</dct:title>
<dc:identifier> sio.owl</dc:identifier>
<rdfs:isDefinedBy rdf:resource="http://semanticscience.org/ontology/sio.owl"/>
<owl:versionIRI rdf:resource="http://semanticscience.org/ontology/sio/v1.29.0/sio-release.owl"/>
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2016-05-18</dct:modified>
</rdf:Description>
A vous de jouer !
Prendre votre ontologie et y ajouter 3
métadonnées
Dites nous ce que vous voulez dire à propos de
votre ontologie, nous vous dirons quelle
propriété utiliser
Ou alors, regarder Dublin Core ou Schema.org
A vous de jouer !
Prenez le résumé de votre dernier
article et obtenez une
recommandation pour ce contenu
Entrez une liste de termes que vous
aimeriez trouver dans une
ontologie pour identifier celle qui
offre la meilleure couverture
Dépôt et usage d’une
ontologie
• Déposer une ontologie dans le portail
• Naviguer et visualiser une ontologie
• Manipuler l’API pour une ontologie
Manipuler une ontologie via l’API
▪ Accéder aux métadonnées de l’ontologie
▪ http://data.agroportal.lirmm.fr/ontologies/ONTO/?apikey=**
▪ Accéder aux classes de l’ontologie
▪ http://data.agroportal.lirmm.fr/ontologies/ONTO/classes/?apikey=**
À vous de jouer !
Éventuellement soumettez une ontologie (si ce
n’est pas déjà fait) mais ce n’est pas obligatoire
Pour l’ontologie de votre choix, naviguer,
visualiser, laisser quelques commentaires
Entrez un projet qui utilise une ou plusieurs
ontologie(s)
Ontology-based annotation workflow
▪ First, direct annotations are created by recognizing concepts in raw text,
▪ Second, annotations are semantically expanded using knowledge of the ontologies,
▪ Third, all annotations are scored according to the context in which they have been created.
39
À vous de jouer !
Prenez le résumé de votre dernier
article et obtenez les annotations
Testez le score
Regardez vos résultats dans l’API
Gestion des
alignements
• Récupérer ou saisir des alignements
• Format des alignements
• Importation d’alignements générés avec des
outils extérieurs
Les mappings dans Bio/AgroPortal
▪ Soit « générés » automatiquement par le portail (quand une ontologie est
chargée)
▪ Basés sur les identifiants (URI, CUI )
▪ Basés sur la syntaxe des labels (LOOM)
▪ Soit « soumis » par les utilisateurs (via l’UI, l’API ou script)
▪ Enrichis par des métadonnées
▪ Etiquetés à l’aide d’une propriété du web sémantique (skos:exactMatch,
owl:sameAs, etc.)
Cas particulier des alignements de traduction
▪ Ils vont d’un portail a un autre
▪ Ils utilisent plusieurs « étiquettes » (tag)
46
Mappings
▪ En naviguant dans une
ontologie, on peut récupérer
tous les mappings entre
deux ontologies
▪ En naviguant sur un concept,
on peut récupérer tous les
mappings pour un concept
donné
Mappings entre ontologies: quelques exemples
▪ http://agroportal.lirmm.fr/ontologies/STY?p=classes&conceptid=http%3A%2F%2
Fpurl.bioontology.org%2Fontology%2FSTY%2FT002#mappings
▪ http://bioportal.lirmm.fr/ontologies/MSHFRE/?p=classes&conceptid=http%3A%2
F%2Fpurl.lirmm.fr%2Fontology%2FMSHFRE%2FD012959
À vous de jouer !
Récupérez l’ensemble des alignements générés
par le portail pour votre ontologie préférée
Saisir des alignements (pertinents) entre classes
de différentes ontologies
Saisir des alignements vers des classes qui ne sont
pas dans le portail e.g., DBPedia
• (SIFR BioPortal et AgroPortal seulement)
50
REST Web Service API:
http://data.agroportal.lirmm.fr/documentation
SPARQL endpoint:
http://sparql.agroportal.lirmm.fr
Qu'est-ce qu'une API REST ?
Une architecture pour construire des applications Web
▪ protocole HTTP
▪ accès à une ressource par son URI unique
▪ des opérations supportées nativement par HTTP :
▪ GET (Afficher)
▪ POST (Créer)
▪ PATCH (modifier)
▪ DELETE (Supprimer)
Présentation de l’API REST (1/2)
▪ Les données du portail sont exposées au format JSON (ou XML) par l’API REST
▪ http://data.agroportal.lirmm.fr/
▪ http://data.bioportal.lirmm.fr/
▪ http://data.bioontology.org/
▪ Opérations réalisées sur ces données (ajout, modification, suppression) avec des requête HTTP
▪ http://data.agroportal.lirmm.fr/documentation
▪ Les requêtes GET permettent de récupérer des objets (ontologies, classes, mappings, utilisateur,
projet, slice, etc.)
▪ Les requêtes PUT ou POST permettent de créer de nouveaux objets
▪ Les requêtes PATCH permettent de modifier des objets existants et les requêtes DELETE de les
supprimer
Présentation de l’API REST (2/2)
▪ Une APIKey est nécessaire pour effectuer des appels a l’API.
▪ Les paramètres sont donnés dans l’URL (appels GET) ou à l’aide d’un document JSON
joint (PUT, POST, PATCH)
▪ Exemple: http://data.agroportal.lirmm.fr/users?apikey=72574b5d-b741-42a4-b449-
4c1b64dda19a&display=all
API REST : l'accès aux services
agroportal.lirmm.fr/annotator
services.agroportal.lirmm.fr/annotator/?t
ext="banana"&apikey=***
Exemples d’appels REST
▪ Récupération d’un utilisateur
▪ http://data.agroportal.lirmm.fr/users/jonquet
▪ Récupération d’un groupe
▪ http://data.agroportal.lirmm.fr/groups/LOVINRA
▪ Récupération d’une ontologie
▪ http://data.agroportal.lirmm.fr/ontologies/CO_125
▪ Récupération d’un projet
▪ http://data.agroportal.lirmm.fr/projects/SIFR
Exemples de récupération des mappings
▪ Récupération d’un mapping
▪ http://data.agroportal.lirmm.fr/mappings/fd709e40-fcab-0132-77e3-525400026749
▪ Afficher les mappings récents ajoutés manuellement
▪ http://data.agroportal.lirmm.fr/mappings/recent
▪ Afficher les mappings entre 2 ontologies
▪ http://data.agroportal.lirmm.fr/mappings?ontologies=BT,CL
▪ Afficher tous les mappings d’une ontologie
▪ http://data.agroportal.lirmm.fr/ontologies/CL/mappings
▪ Afficher tous les mappings d’une classe
▪ http://data.agroportal.lirmm.fr/ontologies/CL/classes/http%3A%2F%2Fpurl.obolibrary.or
g%2Fobo%2FUBERON_0000479/mappings
Exemples de requêtes SPARQL
// all triples about ontologies
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?s ?p ?o WHERE {
GRAPH http://data.bioontology.org/metadata/Ontology>{
?s ?p ?o .
}}
// list of all username
PREFIX meta: <http://data.bioontology.org/metadata/>
SELECT DISTINCT ?user WHERE {
GRAPH <http://data.bioontology.org/metadata/User> {
?user meta:username ?o .
}}
//liste des graphes dans 4stores
SELECT DISTINCT ?g WHERE {
GRAPH ?g {
?s a ?p .
}}
//Get all ontology terms (owl:Class) from the ANDO ontology.
SELECT DISTINCT ?s ?label WHERE {
GRAPH <http://data.bioontology.org/ontologies/ANDO/submissions/1> {
?s a owl:Class .
?s rdfs:label ?label .
}}
À vous de jouer !
Faire quelques appels
REST
Faire quelques
requêtes SPARQL
Voilà c’est la fin
• Questions & remarques
• Nous restons à votre disposition
• Allez plus loin
Lectures possibles
▪ Natalya F. Noy, Nigam H. Shah, Patricia L. Whetzel, Benjamin Dai, Michael Dorf, Nicholas B. Griffith, Clement
Jonquet, Daniel L. Rubin, Margaret-Anne Storey, Christopher G. Chute & Mark A. Musen. BioPortal: ontologies
and integrated data resources at the click of a mouse, Nucleic Acids Research. May 2009. Vol. 37 ((web
server)), pp. 170-173. [PDF]
▪ Whetzel, P. L., Noy, N. F., Shah, N. H., Alexander, P. R., Nyulas, C., Tudorache, T., & Musen, M. A. (2011).
BioPortal: enhanced functionality via new Web services from the National Center for Biomedical Ontology
to access and use ontologies in software applications. Nucleic acids research, 39(suppl 2), W541-W545.
▪ Clement Jonquet, Esther Dzalé-Yeumo, Elizabeth Arnaud & Pierre Larmande. AgroPortal : a proposition for
ontology-based services in the agronomic domain, In 3ème atelier INtégration de sources/masses de données
hétérogènes et Ontologies, dans le domaine des sciences du VIVant et de l’Environnement, IN-OVIVE'15.
Rennes, France, June 2015. pp. 5. [PDF]
▪ Clement Jonquet, Amina Annane, Khedidja Bouarech, Vincent Emonet & Soumia Melzi. SIFR BioPortal : Un
portail ouvert et générique d’ontologies et de terminologies biomédicales françaises au service de
l’annotation sémantique, In 16th Journées Francophones d'Informatique Médicale, JFIM'16. Genève, Suisse,
July 2016. [PDF]