• 20 hours
  • Hard

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 12/12/19

Exercice d'entraînement : Manipulez des données enrichies

Log in or subscribe for free to enjoy all this course has to offer!

L'objectif de cet exercice est d'exprimer des requêtes complexes pour interagir avec les mécanismes sémantiques de la plateforme.

Découvrez les limites du standard sans la sémantique

La découverte dans oneM2M

Jusqu’ici, vous avez interagi avec OM2M en sachant sur quelles ressources vous vouliez agir. Cependant, pour utiliser une plateforme déployée par un acteur tiers, il est nécessaire de découvrir à l’exécution les ressources accessibles sur la plateforme.

Pour ce faire, oneM2M offre différents mécanismes de découverte, dont certains sont implémentés dans OM2M. Une requête de découverte est une requête GET envoyée à une ressource avec une querystring fu=1 (fu pour Filter Usage). La ressource cible retournera à l’utilisateur les ressources qui, parmi ses descendants, correspondent au filtre demandé.

Le format de réponse de la plateforme est une liste d’URI qui peut être transformée en une liste Java par le désérialiseur de la librairie ipe-helper : Deserializer.getUrisFromDiscoveryResponse(responseALaRequete)

La découverte par type

Dans ce cas, le filtre est le type de ressource. Pour tester ce filtre, effectuez une requête GET avec comme query strings fu=1 et ty=X, avec X l’entier représentant le type de ressource qui vous intéresse. Pour rappel :

  • Application Entity : 2

  • Container : 3

  • Content instance : 4

La découverte par label

Dans ce cas, le filtre cherche les ressources étant décrites par des étiquettes. Les ressources sont valides par rapport au filtre si elles ont TOUTES les étiquettes du filtre, avec une correspondance EXACTE des mots (casse incluse). Par contre, une ressource peut avoir plus de labels que ce que le filtre recherche.

Testez ce filtre pour récupérer tous les capteurs, tous les capteurs de température, et tous les objets en rapport avec la température dans la cuisine (plateforme comprise). Vous aurez besoin de la fonction toURL de la classe Serializer pour que les labels soient encodés en URI (certains caractères sont remplacés par des codes, comme les accents ou les espaces).

Vous noterez la faiblesse de l’expressivité des requêtes : il est difficile par exemple de faire la distinction entre un objet situé dans la cuisine (éventuellement une plateforme dont les capteurs sont déployés ailleurs) et un objet qui permet de mesurer une propriété de la cuisine, ou même d’accéder à une propriété de la cuisine sans y être localisé.

De plus, même si la façon de faire la recherche est standardisée, les labels sont hors du standard, et chaque application peut les définir à sa façon. Vous-même avez choisi les labels pour les capteurs, les pièces, et les propriétés de manière tout à fait libre sans contrainte de casse, de langue, ou d’orthographe. Cela ramène donc à la problématique de l’interopérabilité, abordée dans la première partie de ce chapitre. Le reste de cette activité sera dédié à l’exploration des possibilités offertes par les technologies du Web sémantique quant à ces limitations.

Modifiez le comportement de l’IPE

Description sémantique des ressources

La librairie ipe-helper donne la possibilité de récupérer, pour les capteurs et les plateformes, une description en RDF. Cette description est basée sur les vocabulaires sosa (http://www.w3.org/ns/sosa/), un vocabulaire standard du W3C pour décrire les capteurs connectés, IoT-O (https://www.irit.fr/recherches/MELODI/ontologies/IoT-O), un vocabulaire décrivant le domaine de l’Internet des Objets, et OPA (https://w3id.org/laas-iot/adream), un vocabulaire défini pour décrire les objets dans un bâtiment intelligent au LAAS. Les documentations de ces vocabulaires sont accessibles en ligne.

Les descripteurs créés par la librairie sont sérialisés en RDF/XML, et vous n’avez pas besoin de les modifier. Ils donnent des informations sur la nature, la localisation et le centre d’intérêt des objets décrits.

Nouvelles ressources à créer dans OM2M

Vous devez à présent modifier l’IPE que vous avez créé dans l’activité précédente afin d’ajouter à chaque plateforme et à chaque capteur un descripteur sémantique qui le caractérise. Le Semantic descriptor peut être créé à l’aide du ResourceCreator, et le type Semantic Descriptor est associé à l’entier 24.

Expérimentez les nouvelles possibilités offertes par le Web sémantique

Utilisez les requêtes SPARQL prédéfinies

La librairie ipe-helper vous met à disposition des requêtes SPARQL prédéfinies :

  • getSensorsQuery permet de lister les ressources de type sosa:Sensor ;

  • getPlatformSensorsQuery permet de lister les capteurs reliés à une certaine plateforme ;

  • getTemperatureSensorsQuery permet de lister les objets qui mesurent la température.

Vous pouvez les consulter dans le dossier « queries » ou les afficher depuis le code pour mieux comprendre le langage SPARQL.

Utilisez ces requêtes pour compléter les fonctions de l’interface Discovery. Pour effectuer une découverte sémantique, il faut effectuer un GET HTTP avec la query string fu=1 (pour indiquer la découverte) et la query string smd=X, avec X la requête SPARQL encodée en URI.

Construisez votre propre requête SPARQL

URI utiles

Vous pouvez extraire beaucoup d’informations des requêtes déjà définies dans la librairie. Vous trouverez tout le vocabulaire dont vous avez besoin en suivant ce lien.

Requêtes à construire

En vous inspirant des requêtes déjà existantes, proposez une requête listant les plateformes hébergeant un capteur mesurant la température du jardin. Vérifiez la justesse de votre requête en l’utilisant pour faire de la découverte sur votre instance d’OM2M.

Vérifiez votre implémentation

Cliquez ici pour télécharger une archive contenant un code et des requêtes donnant le résultat attendu. Notez bien qu'il s'agit d'une implémentation possible, mais que vous pouvez avoir fait des choix de conception différents et obtenir un résultat tout aussi correct.

Example of certificate of achievement
Example of certificate of achievement