Affichage des articles dont le libellé est Sma. Afficher tous les articles
Affichage des articles dont le libellé est Sma. 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.




10/04/2014

Découverte et tutoriel de l'utilisation de Polarsys

Polarsys est basé sur Eclipse, développé par OBEO et semble , à première vue, proposer un outil de développement de systèmes embarqué, basé sur UML ou plutôt SysML , et devrait permettre le développement de systèmes complexes. Polarsys utilise pour ce faire le plugin Papyrus :
plus d'infos sur Polarsys : http://polarsys.org/ .

D'après la présentation, c'est un outil de développement OpenSource centré sur l'utilisateur, l'utilisateur devrait même pouvoir faire remonter, contribuer... c'est exactement ce qu'il nous faut pour Smag...
Présentation ici : http://wiki.eclipse.org/images/f/f9/Polarsys-Presentation_ERTSS-final.pdf

Voyons si Polarsys tiens ses promesses ...

Va-t-il nous permettre de modeliser le projet Smag0 ? Testons ce nouvel outil !

Sur le site de Polarsys, télécharger la version adaptée à votre OS, dézippez, lancez l'executable Polarsys.
Pour pouvoir tester, j'ai tenté de suivre la vidéo de présentation (dans About / Videos, sur le site de Polarsys , ou ici : http://www.youtube.com/watch?v=cslBl9cS3TM) .

Première chose : une fois Polarsys lancé, modifiez la perspective : Window / Show Perspective / Other / Papyrus.

Ensuite, le cadre Model Explorer semble vide... je teste d'installer les modules complémentaires de Papyrus ( dans  le menu Help/ Install Papyrus Additionnal Components. Une autre demande d'installation ( SVN est apparue lors de la création du premier projet, j'ai installé la dernière version de SVN . )

La doc de Polarsys ne semble pas très fournie, 
Voir aussi, la doc  de Papyrus hébergée par Eclipse : http://www.eclipse.org/papyrus/

27/03/2014

Le systeme multi-agent sous forme de holon

Trouvé ce texte de Descartes dans une des thèses :http://sebastian.rodriguez.free.fr/files/ThesisSRodriguez_print.pdf )
Les hommes sont les proies d'une si aveugle curiosité qu'ils conduisent souvent leur esprit par des chemins inconnus, et sans aucune raison d'espérer, mais seulement pour courir leur chance d'y trouver par hasard ce qu'ils cherchent ; comme quelqu'un qui brûlerait d'un désir si brutal de découvrir un trésor, qu'il ne cesserait de courir les rues ça et là, cherchant si par hasard il n'en trouverait pas un qu'un voyageur aurait perdu. C'est ainsi que travaillent presque tous les chimistes, la plupart des géomètres, et plus d'un philosophe ; et certes je ne nie point que parfois ils ne vagabondent avec assez de bonne fortune pour trouver quelque vérité ; je n'admets pas pour autant qu'ils en soient plus habiles, mais seulement plus chanceux. Il vaut cependant bien mieux ne jamais songer à chercher la vérité sur quelque objet que ce soit, que le faire sans méthode : car il est très certain que ces recherches désordonnées et ces méditations obscures troublent la lumière naturelle et aveuglent l'esprit ; et tous ceux qui s'habituent ainsi à marcher dans les ténèbres affaiblissent tant leur vue que par la suite ils ne peuvent plus supporter la lumière du jour ; l'expérience aussi le confirme, puisque nous voyons très souvent ceux qui ne se sont jamais souciés d'étudier porter des jugements bien plus solides et bien plus clairs sur ce qui se présente à eux, que ceux qui ont passé tout leur temps dans les écoles. DESCARTES

Les systèmes multi-agents : 

Qu'est ce qu'un système multi-agent ?
http://www.lirmm.fr/~ferber/publications/LesSMA_Ferber.pdf

Les méthodes de conception de systèmes multi-agent :

Diamond : http://tel.archives-ouvertes.fr/docs/00/18/90/46/PDF/These_Jean-Paul_Jamont_2005.pdf
Aspecs :  http://www.aspecs.org/Home ou en   Pdf

Un agent particulier, le holon : 

Holons dans les systèmes multi-agents[modifier | modifier le code]

Les systèmes multi-agents sont des systèmes composés d'entités logicielles autonomes. Ils sont capables de simuler un système ou de résoudre des problèmes. L'holon peut être vu comme une sorte d'agent récursif : un agent composé d'agents qui, a un niveau donné, a son propre comportement comme un conséquence partielle des comportements de ses composants5. Janus Multiagent Platform est un exemple de plate-forme logicielle capable de faire tourner des holons.
( source Wikipedia :
http://fr.wikipedia.org/wiki/Holon_(philosophie)#Holons_dans_les_syst.C3.A8mes_multi-agents )


Exemlpe de systèmes multi-agent :
Janus Project (Java) : http://www.janus-project.org/Home
Spade (Python) :
Jade (Java) :
Quelque chose en ruby, où autre ? faites-le nous savoir qu'on rajoute l'info .
Dans jade, spade, Janus, les agents respectent les normes de la FIPA pour les communications .
Les systèmes multi-agents ont l'air un peu veillots...
Pour se renseigner sur la programmation des agents :
https://www.google.fr/search?q=programmation+agent+java&oq=java+programmation+ag&aqs=chrome.1.69i57j0.8663j0j4&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8
Un autre type d'agent directement natif dans java (à voir si ça correspond?) : http://blog.xebia.fr/2008/05/02/java-agent-instrumentez-vos-classes/

Pour en savoir plus : 

https://www.google.fr/search?q=holon&oq=holon&aqs=chrome..69i57j0l5.1180j0j4&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#q=holon+multi-agent


19/02/2014

une interface utilisateur pour la méthode Diamond

(suite de http://smag0.blogspot.fr/2014/01/de-la-methode-diamond-pour-sma-basee.html )

Explorons d'autres pistes pour créer une interface utilisateur(une application ?) basée sur une ontologie
- reste la piste EulerGui (pris contact avec JMVanel )
- appliquer une fiche de style (xslt) à une ontologie. 


Une première version de l'ontologie diamond.owl.  (télécharger diamond.owl)




c'est en fait pour qu'un utilisateur puisse décrire son projet. Definition des Besoins est une instance d'une étape de la procedure(la première), d'autres étapes existent , elles s'enchainent par la propriété next, les étapes possèdent des sous-étapes définies par la propriété hasPart, (la première sous étape est définie par la propriété first). et produisent des documents qui eux sont des instances des la classe Documentation (et sous classes) grâce à la propriété "document produit".


Cette ontologie diamond.owl est sensée, comme décrit précédemment, représenter la méthode Diamond citée plus haut.  Peut-être un modèle pour la création d'autres méthodes : une recette de cuisine, une tâche effectuée par un robot ou un objet connecté ( utilisation de rdfs:Seq (Sequences au format RDFS) http://www.w3.org/TR/rdf-schema/#ch_seq ou http://www.w3schools.com/webservices/ws_rdf_containers.asp
  • une classe Methode
  • une classe Documentation
  • une classe Acteurs 

Les étapes de la méthode sont représentées par une sous-classe de Methode
Etape (à modifier ! les étapes ne sont pas des méthodes ?)
Processus sous classe de Etape
Activite sous classe de Processus

Methode également sous-classe de rdfs:Seq afin d'organiser chronologiquement les étapes, processus, activités.

Créer une interface / une application à partir d'une ontologie

On devrait pouvoir créer une application (des formulaires html) de puis l'ontologie diamond.owl qui décrit une méthode, avec 4 étapes. Pour chaque étape : 1 ou plusieurs formulaires.

- Ici trois solutions restent en course : 
- EulerGui ?
- une feuille de style xslt qui transforme l'ontologie en page html (besoin d'un ontologie supplémentaire de description des balises html ? de constitution des formulaires -> rajouter des indications dans l'ontologie de la méthode.
- un parser javascript / java / jena / Processing ???  qui récupère dans l'ontologie la classe Methode, avec ses classes Etapes.... et créé à la volée les formulaires.

La feuille de style XSLT semble faire apparaitre la plus grande souplesse, une fois que l'ontologie diamond.owl intégrera des indications quand aux formulaires à implémenter.
Ou encore l'utilisation de Jena en java ou avec Processing ?
-> le stockage des informations créées par l'application est également envisagée comme pouvant être produites au format owl / rdf / ou vers un endoint sparql ? un serveur fuseki local?

Cette interface / application pourra être implémentée sur un objet connecté / un robot mobile (pcduino avec Linux et serveur Web/ Fuseki ?)

Une autre solution serait de partir de Freemind qui propose une interface plus visuelle, mais semble offrir moins de liaison entre les concepts, moins de propriétés, mais c'est une interface dont on peut s'inspirer.

22/01/2014

De la méthode Diamond pour SMA basée sur une Ontologie

Pour créer une interface facilitant la description / gestion du système multi-agent, on va s'appuyer sur des méthode de conception de systèmes multi-agents.
Deux méthodes pourront ici nous être utiles :
- la méthode DIAMOND: UNE APPROCHE POUR LA CONCEPTION
DE SYSTEMES MULTI-AGENTS EMBARQUES proposant un cycle de vie en spirale, semble être un bon début pour se lancer .
- on pourra faire la même chose avec la méthode ASPECS utilisée par Janus-Project et qui prend en compte la notion de holon ( plusieurs niveaux hiérarchique, décomposition d'agents)

Pour une interface Utilisateur  :
javascript avec ontologyonline.org ou Java avec EulerGui/Déductions (vidéo de présentation du cadriciel)

OntologyOnline : Un petit peu de javascript (grâce à http://ontologyonline.org/), permet d'afficher l'ontologie (en cours d'élaboration) de la méthode Diamond   : un premier test de ce que ça donne : jowl.zip
 (à décompresser et lancer le fichier jOWLBrowser.html)
dernière mise à jour du fichier diamond.owl

TODO : un petit bug dans ontologyonline : Seuls les 'Individuals' possédant le type 'Thing' sont affichés dans l'onglet 'Individuals'

mail envoyé au développeur : 
Hi, it seem that only the 'Individuals' with the type "Thing" might appear like this one : 


    <owl:Thing rdf:about="&vin;Ola">
        <rdf:type rdf:resource="&owl;NamedIndividual"/>
        <rdf:type rdf:resource="&vin;Test"/>
    </owl:Thing>


But those who don't have the type 'Thing' don't appear, like this one : 

    <owl:NamedIndividual rdf:about="&vin;Ola">
        <rdf:type rdf:resource="&vin;Test"/>
    </owl:NamedIndividual>

Do you have any idea of the file I have to modify ?

Thanks


pas de réponse du développeur de ontologieOnline

-> on continue l'investigation