fabernovel loader

Mar 27, 2019 | 5 min de lecture

Tech

Quelles technologies pour faire des APIs Sémantiques ?

Antoine Chéron

Developer


FABERNOVEL TECHNOLOGIES
Les possibilités qu’offre la sémantique interprétable par la machine vous ont interpellées ? Et vous souhaitez maintenant savoir quelles technologies utiliser pour décrire ses APIs sémantiquement ? Nous vous partageons cela dans cet article.

Précédemment nous vous présentions ce qu’il est possible de faire lorsque la machine peut raisonner sur les mots que les APIs emploient. Pour rendre cela possible, les APIs doivent être sémantiquement annotées.

Sachez qu’il est possible d’ajouter de la sémantique à vos APIs et pages web existantes. Vous n’aurez pas à tout refaire, simplement compléter.

Deux choses vous seront nécessaires : le vocabulaire sémantique (ou ontologie) et une technologie permettant d’annoter les documents renvoyés par vos APIs.

Trouver un dictionnaire sémantique

La sémantique nous vient du Web Sémantique, lequel utilise le modèle RDF (Resource Description Framework) pour décrire sémantiquement les données. Nous vous recommandons de partir de cette technologie si vous souhaitez approfondir le sujet.

Afin de trouver des dictionnaires sémantiques, vous pouvez partir de cette page, ou celle-ci. Parmi les dictionnaires existants, Schema.org est le plus populaire car il est utilisé dans les moteurs de recherche, pour afficher des aperçus enrichis par exemple. Il a été créé par Google, Yahoo, Microsoft et Yandex.

En dernier recours, si vous n’y trouvez pas le vocabulaire qui répond à votre besoin, il sera nécessaire de le créer vous-même. Pour cela vous pourrez utiliser le Web Ontology Language (OWL). Si vous souhaitez vous lancer, vous pourrez partir de cette introduction au sujet.

De la sémantique dans les pages web HTML

Du côté des pages HTML, vous pouvez utiliser un mécanisme pour annoter les informations qu’elles contiennent avec de la sémantique. C’est ce que fait l’Open Graph Protocol. Le nom de ce mécanisme est RDFa.

Voici un exemple de page HTML sans sémantique.

Et voici la même page, annotée avec de la sémantique. Vous pouvez voir qu’il suffit d’importer les dictionnaires choisis avec l’attribut prefix puis décrire les données avec l’attribut property. RDFa offre davantage de possibilités que nous ne détaillerons pas dans cet article.

De la sémantique dans les APIs JSON

JSON-LD est un format qui enrichit JSON d’un bloc <code>@context</code> permettant d’ajouter de la sémantique à un document JSON. Hors de ce bloc, la structure peut être identique à un fichier JSON sans sémantique.

Des librairies sont disponibles en Javascript, Python, PHP, Ruby, Java, C#, Go et Erlang.

Dans cet exemple, <code>”prenom”: “foaf:firstName”</code> est équivalent à <code>”prenom”: “http://xmls.com/foaf/spec/#term_firstName”</code>.

Pour les API JSON, comment faire dans son code ?

Pour aller au plus simple, vous pouvez placer toute la sémantique utilisée dans votre application, dans un seul fichier JSON-LD. Vous n’aurez plus qu’à rajouter à tous vos fichiers JSON : <code>”@context”: “lien/vers/ce/fichier/json-ld”</code>.

Pour faire plus fin, vous pouvez créer un template JSON-LD pour chaque ressource de votre API. Placez la description sémantique de la ressource dans ce template.

Sinon, si vous préférez que cette description se trouve directement dans votre code, vous pouvez ajouter un attribut <code>context</code> à vos classes. Utilisez ensuite cet attribut pour le placer dans votre fichier JSON. Voir exemple ci-dessous.

L’idée qui nous plait le plus est d’ajouter des annotations au-dessus des attributs de la classe, plutôt qu’un attribut context. Toutefois, la librairie permettant de faire cela n’existe pas encore !

Exploiter la sémantique des APIs existantes

Malheureusement, seuls des projets de recherche exploitent cette sémantique. Certains présentent des librairies et technologies pour composer des APIs automatiquement, les annoter, raccourcir le processus d’annotation sémantique et autres. Toutefois, rares sont ceux qui publient ces librairies en open source. De plus, elles sont développées pour des expérimentations scientifiques, pas pour être utilisées par d’autres développeurs.

Pour faire avancer ce sujet, il est nécessaire que des développeurs proposent des librairies open source qui exploiteront cette sémantique.

La sémantique nous vient du créateur du World Wide Web.

Les concepts du Web Sémantique et par conséquent de sémantique interprétable par la machine viennent de Tim Berners Lee, le créateur du World Wide Web.

Un ensemble de technologies forme le Sémantique Web : RDF, SparQL, OWL,  les bases de données de triples, RIF, RDF XML, JSON-LD.

De notre point de vue, le challenge actuel de l’utilisation de la sémantique dans les API RESTful est de créer des outils utilisables sur des projets industriels. Finalement, c’est un challenge commun de passage des technologies de la recherche à l’industrie.

Si vous souhaitez explorer les sujets de recherche dans ce domaine, voici quelques pointeurs. Les mashups sont des compositions d’APIs [1] [2] [3] [4] [5]. Le rapprochement d’ontologies a pour objectif de créer des liens et trouver les similitudes entre plusieurs dictionnaires sémantiques [6] [7] [8] [9]. Les matchmakers sont les “moteurs de recherche d’API sémantique” [10] [11] [12]. Certaines approches, comme [13] simplifient la description, découverte et composition d’API Semantic REST.

N’hésitez pas à continuer vos lectures en parcourant les références des papiers que vous lirez. Vous pouvez aussi retourner sur Google Scholar, taper le nom d’un papier et regarder quelles autres publications le citent.

Tim Berners-Lee travaille aujourd’hui sur Solid, un projet dont Fast Company, Vanity Fair et The Times parlent. L’objectif est de décentraliser le web. Chacun possèderait ses données, qui seraient stockées dans un “pod”. Ensuite, les applications que nous utilisons viendraient récupérer les données dont elles ont besoin dans notre pod. Bien entendu, nous contrôlerions ce qu’elles ont le droit de lire ou non. Solid est basé sur le Web Sémantique, et notamment JSON-LD et FOAF, que nous avons introduit dans cet article.

Conclusion

Dans cet article, nous vous avons partagé des technologies qui vous permettent de décrire vos APIs avec de la sémantique, ainsi que des publications scientifiques desquelles vous pouvez partir pour creuser davantage ce sujet.

Dans le prochain billet de cette série, nous vous présenterons ce qu’il est possible de faire en combinant à la fois l’hypermedia et la sémantique permettant de créer des assistants vraiment intelligents, des architectures moins rigides et de nombreux outils qui aident le développeur au quotidien.

Crédits images :

Icones : freepik from www.flaticon.com

Illustrations personnages : semantic-ui-react

Captures de code : carbon.now.sh

Ce sujet vous intéresse ?

ECHANGEONS
Cet article appartient à une enquête
logo business unit

FABERNOVEL TECHNOLOGIES

150 talents pour répondre aux défis technologiques de la transformation digitale.

à lire