14/03/2016

Projet, idée, problème... partager sous forme de graphe, collaborer... et bien plus encore...

[ cet article fait partie de la série RDF FACILE - Mon petit BigData ]

Si mes explications ne sont pas claires, y'a toujours Wikipedia : https://fr.wikipedia.org/wiki/Resource_Description_Framework

Parti d'un projet un peu loufoque, il est vrai d'"un robot qui range ma chambre", il m'est très vite apparu que ce projet d'envergure n'était pas simple à partager avec mon entourage, et encore moins avec des inconnus.
Pour ce projet, j'avais imaginé non pas un robot qui rangerait, mais une multitude de robots, d'objets connectés, de modules qui s'entraideraient, collaboreraient.
Ils devaient pour ce faire s'échanger des informations dont la structure devaient être libre de toute modification au cours du temps, et chacun de ces robots aurait la possibilité de compléter, corriger les informations en fonction de ses capacités à capter l'environnement.
Au fil de mes recherches, le format qui me parut le plus adapté fut le RDF et je n'ai rien trouvé de mieux depuis, mais la discussion reste ouverte ;-)
RDF
Le rdf nous permet, en effet, à partir de notions toutes simples que tout le monde peut comprendre, de partager et d'échanger, de décrire tout et n'importe quoi... J'imaginais alors que pour que mes robots puissent comprendre leur environnement, il leur fallait déjà le connaître un petit peu... Mes quelques connaissances sur le Machine Learning en plein boom me laissant supposer que ces différents modules pourraient être dotés d'ici peu d'une quelconque intelligence artificielle répondant aux besoins qui leur seraient demandés : apprentissage, adaptation au contexte, à l'utilisateur...
La première notion essentielle, le triplet, est décrite un peu plus bas, mais avant ça, nous devons parler de l'information...
L'information
Si je vous dis "Voiture", tout le monde ou presque voit à peut près ce que cela représente. Méa Culpa à ceux qui pourraient penser que je les prends pour des ânes, mais les notions que l'ont va aborder ici, même si elles sont simples, imposent d'oublier tout ce que vous savez, ou plutôt de regarder le monde sous un autre angle, avec un peu plus de recul... Et de bien considérer que chacun peut posséder une vision différente de chaque concept, selon son origine, ses habitudes, sa culture...
Si cette fois, je vous dis "La Voiture de David", vous m'accorderez que l'information est plus précise... Dans "La Voiture de David est jaune et c'est une Opel Corsa", on aura encore plus d'informations...

Dans un premier temps, et pour se rapprocher de ce que tout le monde connait, ce que nous allons devoir faire (tant que le Natural Langage Processing n'est pas intégré au site), c'est de découper cette information... c'est un peu comme un tableau à deux lignes, avec dans la première ligne, les champs et dans la deuxième les valeurs.

champ 1 champ 2 champ 3 champ 4 ... ...
Ce que nous voulons décrire valeur 1 valeur 2 valeur 3 valeur 4 ... ...

Par exemple, pour décrire ma voiture, je pourrais utiliser le tableau suivant :
marque modèle couleur vitesse maxi propriétaire position actuelle
Voiture de David Opel Corsa Jaune 128 000 David Lyon

Comme vous avez pu le constater, les propriétés (champs dans le tableau) sont très libres et nous laissent le loisir de décrire tout et n'importe quoi... J'utilise ici le terme "propriété", et ceux qui sont allés voir la page Wikipédia sur le RDF aurons constaté qu'il est mentionné "prédicat"... Et bien les deux sont équivalents... et oui, faudra vous y faire...
Bon allez, je n'y tiens plus... passons au triplet...
Le Triplet
Repartons de l'exemple que nous avons pris précédemment : "La Voiture de David est jaune et c'est une Opel Corsa".
Nous avons découpé les informations de manière atomique dans le tableau à deux lignes... et bien ce tableau que n'importe qui est capable de reproduire, pour décrire n'importe quel concept, objet, procédure..., nous donne tout naturellement les triplets que nous attendions...
Le triplet se matérialise sous la forme de trois éléments :
  • un sujet : c'est la chose que l'on va décrire,
  • un objet : c'est une chose avec laquelle notre sujet est lié,
  • une propriété (ou prédicat) : c'est la nature de la relation entre le sujet et l'objet.

Ainsi notre tableau précédent nous donne les triplets suivants :
(Voiture de David, marque, Opel)
(Voiture de David, modèle, Corsa)
(Voiture de David, couleur, Jaune)
(Voiture de David, vitesse maxi, 128 000) --> enfin seulement dans les bonnes descentes...
(Voiture de David, propriétaire, David)
(Voiture de David, position actuelle, Lyon)
A quoi ça sert ? me direz-vous ? Ouais super... j'ai perdu 10 minutes à lire un truc qui ne sert à rien...
Meuh non, va voir plus bas !
Le Graphe
Bien maintenant que nous avons nos triplets, envoyons-les dans un "graphMaker" tel que http://smag0.meteor.com,

avec quelques exemples de fichiers rdf /ttl /owl (http://smag-smag0.rhcloud.com/dca/ontologies/)


On obtient alors le début d'un graphe : 


Mais les choses deviennent intéressantes lorsque l'on rajoute de nouveaux triplets :

(Voiture de David, type, Voiture)
(David, type, Personne)
(Lyon, type, Ville)
(Voiture, subclassOf, Vehicule)
(David, habite, Lyon)
(Paris, type, Ville)
(Madrid, type, Ville)
(Paris, capitale de, France)
(France, type, Pays)
(Soleil, couleur, Jaune)
(Lyon, sameAs, http://fr.dbpedia.org/page/Lyon)
...
Oulà ! STOP !, c'est quoi cette dernière ligne ??? !!! ce dernier "triplet", comme ils disent ???
Attention ! Là, on rentre dans le vif du sujet
Sur cette dernière ligne (Lyon, sameAs, http://fr.dbpedia.org/page/Lyon), qui et toujours un triplet, y'a un max de nouvelles notions, mais j'imagine que si vous avez tenu jusque là, vous êtes prêt à affronter la suite :
  • sameAs : la propriété "sameAs", comme vous pourrez le constater, si le RDF continue de vous intéresser, nous permet de spécifier que le sujet (Lyon) et l'objet (http://fr.dbpedia.org/page/Lyon) du triplet représentent la même chose.
    Et c'est là, la plus grande qualité du RDF, "it's a kind of magic", c'est là que la magie "s'opère"... C'est là que s'ouvre une infinité de possibilité...
    Vous pouviez déjà grâce au RDF tout décrire, vous pouvez maintenant connecter votre graphe à d'autres graphes, d'autres bases de données RDF crées par d'autres... comme celle de DBPedia, qui reprend les informations contenues dans Wikipedia, et vous les propose au format RDF : allez jeter un œil sur la page en question : http://fr.dbpedia.org/page/Lyon et vous verrez d'autres propriétés apparaître, comme la population, la superficie, les monuments... ainsi que des liens vers d'autres bases de données ou des endpoint sparql
  • http://fr.dbpedia.org/page/Lyon : à décrire...
  • prefix
  • sparql
La suite ?
Bandes d'impatients, commencez par jeter un oeil sur dreamcatcher -> http://dreamcatcher-smag1.rhcloud.com/#!/outils (patientez 30 secondes que le serveur redémarre l'appli)



 vous y trouverez l'aide pour vous balader dans les graphes..., sinon en attendant la suite, vous pouvez également interpeller le fautif, lui posez vos questions, ou faire part de vos attentes, vos idées sur Twitter : @DFaveris
d'autres infos techniques se trouvent sur http://smag0.blogspot.fr

Un bon tendeur...
ça tient bien, tiens, ça tombe bien !

Aucun commentaire:

Enregistrer un commentaire