Affichage des articles dont le libellé est smag. Afficher tous les articles
Affichage des articles dont le libellé est smag. Afficher tous les articles

08/06/2015

Comment créer une méthode pour Smag0, la méthode Diamond, au format RDF

On peut maintenant enregistrer un nouveau projet ou une information à transmettre à sa maison, grâce à l'appli Coolitude4, ou bien directement sur le site http://smag-smag0.rhcloud.com/visu.jsp.

Ensuite, pour nous aider à réaliser ce projet, ou pour aider le système à analyser l'information qu'on lui a envoyer, nous allons de voir utiliser une ou plusieurs méthode. Cet article décrit comment créer une nouvelle méthode et comment l'intégrer au système Smag0. On pourra de la même manière créer d'autres méthodes, des procédures métiers, des recettes de cuisine, des manières de ranger une chambre. Ces méthodes sont partageables et utilisables par plusieurs systèmes, elles devront également être personnalisables, selon l'envie, le contexte de chacun.

J'avais dans un premier temps, fait un premier test pour modéliser la méthode Diamond en me basant sur ce document : DIAMOND : Une approche pour la conception de systèmes multi-agents embarqués par Jean-Paul Jamont, et ça nous donnait ceci : http://smag0.rww.io/diamond.owl.
On pourra aussi se pencher sur la méthode ASPECS à laquelle est étroitement liée Janus.

J'ai depuis approfondi mes connaissances en RDF, et il apparaît opportun, d'utiliser au maximum des vocabulaires déjà existants, pour renforcer la compatibilité et la portabilité d'un méthode.
pour un rappel (ou une découverte) sur RDF et ses triplets, un petit coup d'oeil sur Wikipedia.

Une méthode est tout d'abord une séquence ordonnée d'instructions, ce qui se traduit en RDF par le triplet suivant : 

{ MethodeDiamond        rdf:type     rdf:Seq }


avec rdf:type http://www.w3.org/TR/rdf-schema/#ch_type : 
rdf:type est une instance de rdf:Property qui est utilisé pour indiquer qu'une ressource est une instance d'une classe.Un triplet de la forme: R rdf:type Cstipule que C est une instance de rdfs:Class et R est une instance de C.Le rdfs:domain de rdf:type est rdfs:Resource. Les rdfs:range de rdf:type est rdfs:Class.

Le rdf:Seq est la classe de «séquence» conteneurs RDF. Il est une sous-classe de rdfs:Container. Bien que formellement il est pas différent d'un rdf:Bag ou un rdf:Alt. rdf:Seq est utilisée conventionnellement pour indiquer à un lecteur humain que l'ordre numérique des propriétés d'appartenance de conteneur du conteneur est destiné à être significatif.


La méthode Diamond (enfin, comme je l'ai comprise ;-)) se décompose en 4 étapes majeures : 
  1. A. Définition des besoins
  2. B. Analyse du système Multi-Agents
  3. C. Conception Générique
  4. D. Implantation
ce qui se traduira par les triplets suivants
{ MethodeDiamond rdf:_1 DefinitionDesBesoins }
{ MethodeDiamond   rdf:_2 AnalyseSMA }
{ MethodeDiamond   rdf:_3 ConceptionGenerique }
{ MethodeDiamond   rdf:_4 Implantation }


Chacun de ces étapes majeures étant elle même une séquence  composée d'autres étapes, on continuera donc en décrivant l'étape DefinitionDesBesoins par les triplets suivants : 


DefinitionDesBesoins rdf:type  rdf:Seq  }
DefinitionDesBesoins rdf:_1 ApprochePreliminaire }
{ DefinitionDesBesoins rdf:_2 EtudeActeurs }
{ DefinitionDesBesoins rdf:_3 EtudeCasUtilisation }
{ DefinitionDesBesoins rdf:_4 EtudeBesoinsService }
{ DefinitionDesBesoins rdf:_5 EtudeModeMarcheArret }

et ainsi de suite,
pour plus d'infos sur comment construire une ontologie :
http://python.espe-bretagne.fr/master-hst-ue9-2/wp-content/uploads/2013/03/Tutoriel-Pizza-gloria-1.pdf
http://protegewiki.stanford.edu/wiki/Protege4Pizzas10Minutes
http://protegewiki.stanford.edu/wiki/Protege4UserDocs

Bien , maintenant, passons à la pratique.


Commencez par télécharger et exécuter Protégé2000,
ensuite nommez votre ontologie comme décrit dans les tutoriels juste au dessus (si vous bloquez à ce niveau, demandez de l'aide dans un des groupes de discussion du blog, ou en commentaire de cet article), et importez le vocabulaire rdf : http://www.w3.org/1999/02/22-rdf-syntax-ns#
dans votre ontologie.
Cela nous donnera accès aux classes rdf:Seq et aux propriétés rdf:type...
Ensuite, pour avoir accès à la numérotation, on va aussi importer le vocabulaire rdfs : http://www.w3.org/1999/02/22-rdf-syntax-ns#

dans objectPropertyHierarchie, ajouter des sous-propriétés à la propriété "member" telles que celles-ci : 
http://www.w3.org/1999/02/22-rdf-syntax-ns#_1
http://www.w3.org/1999/02/22-rdf-syntax-ns#_2
http://www.w3.org/1999/02/22-rdf-syntax-ns#_3
...


article), et importez le vocabulaire r
Creez une classe Methode sous la classe Thing, et créez une instance "MaMethode" de type "Methode".

  •  ajoutez le type "Seq" à "MaMethode". --> ceci nous donnera le triplet { MethodeDiamond        rdf:type     rdf:Seq }
  • ensuite utilisez les propriétés _1, _2 que vous avez créé sous la propéiété member, et créez les instances  DefinitionDesBesoins, AnalyseSMA  ConceptionGenerique  Implantation ,
    ce qui nous donnera les triplets :
    { MethodeDiamond rdf:_1 DefinitionDesBesoins }
    { MethodeDiamond   rdf:_2 AnalyseSMA }
    { MethodeDiamond   rdf:_3 ConceptionGenerique }
    { MethodeDiamond   rdf:_4 Implantation }
On peut ensuite ajouter le type Seq à ces quatres instances et continuer, en décrivant les sous-étapes de ces étapes, et ainsi de suite...

Le but étant d'avoir une structure récursive, identique pour toutes les méthodes, afin de pouvoir être utilisé de manière transparente par différentes applications.

On a décrit ici comment construire l'ontologie. on pourra ensuite la stocker sur http://rww.io/ (attention, la survie de ce site n'est pas garantie), ou sur un truc comme https://github.com/scenaristeur/smagserver/tree/master/src/main/webapp/ontologies, pour avoir une possibilité d'évolution, de versionning sur l'ontologie.

Pour l'instant, une première version là : http://smag-smag0.rhcloud.com/ontologies/diamondMethode.owl

reste à ajouter un formulaire sur Smag0 pour intégrer de nouvelles ontologies.




15/01/2015

Android et RDF sur le serveur Fuseki - Jena

une application android créée avec App-Inventor permet d'inserer et de lire les informations RDF présentes sur le serveur FUSEKI : http://fuseki-smag0.rhcloud.com/, elles sont récupérées au format JSON.


Cette démo est un premier test... juste pour la preuve du concept.
Maintenant je peux envoyer des infos sur mon serveur FUSEKI, et les récupérer sur mon smartphone Android. Utile pour envoyer des infos au système multi-agent Smag qui gère mon domicile : http://smag-smag0.rhcloud.com/ . Le code est disponible ici : https://github.com/scenaristeur/smagserver


ici se trouve le code source et l'apk : https://drive.google.com/folderview?id=0B0zEK4yLB5C6UUVsMWNkbDZ0WEU&usp=sharing

le fichier Projet.aia est à importer en tant que nouveau projet sur App-inventor : http://ai2.appinventor.mit.edu/

le fichier Projet.apk est prêt à l'emploi

deux fonctions sont incluses pour l'instant : Derniers projets et Ajout d'un projet (Connection internet /wifi activée nécessairement)
Parfois le serveur fuseki met du temps à démarrer. attendez 30 secondes et renouvelez en cas d'échec

!!!! première étape franchie !!! Yahou !!!!

Les deux serveurs Fuseki et Smag sont hébergés sur openshift . Le serveur Smag utilise le système multi-agent Janus

27/03/2014

Réclamations, Doutes, Demandes

On est partis pour... Ok, si je considère... allez... que dans 20 ans tout sera connecté dans ma maison et branché sur internet et commandable par mon smartphone (ou autre...)
Un paquet de questions se posent ...
Parce qu'un projet comme ça pose beaucoup de problème : éthique, sécurité, confidentialité, ...

Si vous avez des doutes, des peurs, des requêtes, des oppositions, quand au projet, ... c'est normal, j'ai aussi souvent peur de ce que je ne connais pas ...

On va tenter de  trouver des solutions à ces questions :
- Les robots vont-ils donner plus de chômage ?
- Vais-je perdre mon boulot ? 
- Qui est responsable d'un robot qui commettrait un délit ?
- Comment être sûr que mes informations personnelles ne sont pas diffusées sur le Net ?
- Comment désactiver un robot qui se trouverait dans ma maison ... et que j'y ferais des trucs que je n'ai pas envie qu'il voie ?
- Comment être certain que le robot dont j'ai besoin sera disponible au moment où j'en aurai besoin ? 
- Où vont-ils se ranger dans ma maison ?
- Comment le robot qui me fera le café va t-il savoir que le matin je mets deux sucres dans mon café et que le soir je n'en met qu'un ?
... et toutes les autres questions que vous pourriez-vous poser...

 Je vous invite au "Café des prudents, sceptiques & des opposants" : le café PSO, la discussion y est libre et plus elle sera virulente, plus on pourra approfondir les sujets et trouver des solutions.
Et juste à côté du café PSO, on va ouvrir le café SPO... le "Café des Sujets, Propriétés, & Objets", ce café parlera plus de technique et de la manière dont l'information peut être stockée : sous forme de triplet avec  :
un sujet, une propriété, un objet.
pour faire simple : 
<voiture> <couleur><rouge>
<david><age><37>
<pcduino Rover><type><robot>
...

d'autres cafés sont en train d'ouvrir leurs portes... Tenez... par exemple, je vois là-bas M. GéoTrouvetout... c'est lui qui tient le "café DIMB & DUMB" , le café des DIYeurs, des inventeurs, des makers et des bricoleurs, il y a également Mr Holon qui tient le "café SMA" , le café des Agents et des Multi-agents..., et d'autres encore... des boutiques, aussi où les inventeurs et fabricants exposent leurs projets... que du beau monde... il y a même un espace réservé pour l'utilisation du projet Smag0 par les enfants...

Vous trouverez également LA MAISON DES DEFIS : c'est l'endroit où l'on réalise les trucs qui ne sont normalement pas réalisables...
Et la place reste ouverte... n'importe qui peut se poser sur un banc et lancer un sujet de conversation, une idée, un problème...


Pour afficher le groupe de discussion en pleine page, suivez ce lien