EulerGUI 1.2, environnement pour les règles et le Web sémantique

Posté par (page perso) . Modéré par baud123.
8
28
août
2009
Technologie
EulerGUI est un environnement de développement pour le Web sémantique, sous licence LGPL. Il permet de mettre au point des règles avec plusieurs moteurs d'inférences : Drools en Java, Euler en Prolog, CWM et Fuxi en Python.

Nous avons un noyau d'ontologies et de règles en logique N3 (Notation 3), et de moteurs d'Inférence, offrant la génération de formulaires et d'applications à partir d'un modèle métier et d'un minimum de spécifications annexes. EulerGUI est centré sur le langage N3, qui permet s'exprimer à la fois des données, des modèles, des règles et des requêtes.

Dans EulerGUI :
  • N3 est la syntaxe de convergence, comparable en cela à JSON ou XMI.
  • La modélisation de convergence est assurée par OWL du W3C.

Ceci signifie que, après lecture et traduction en N3 de fichiers eCore EMF, UML XMI, ou RDF Schéma, EulerGUI traite des modèles OWL. Avec EulerGUI on peut créer des pipelines de projets et importer des sous-projets.

Les application Swing générées utilisent un moteur Drools à l'exécution en temps réel pour créer les formulaires à partir du modèle. Positionnement

D'un côté, vous avez les systèmes experts "traditionnels" en Prolog et les moteurs de règle, tels que Drools et Jess.

De l'autre côté il y a les applications habituelles qui sont faites entièrement ou en grande partie à la main. Et même les moteurs MDA et autres générateurs d'application sont eux-mêmes codés à la main. Le projet Déductions veut appliquer des règles logiques et des moteurs d'inférence pour des tâches de génie logiciel telles que :
  • Générer des applications ou des sous-Systèmes ;
  • Permettre une intégration transparente de bibliothèques et composants ;
  • Et plus encore.

Vision du projet Déductions

Le premier outil que le projet Déduction développe, parce qu'elle est la fonctionnalité la plus visible, est un générateur d'application centré autour d'un générateur de formulaire avec une persistance de fichiers au format N3.

La pièce principale du générateur d'application Déductions est un ensemble de règles constructives en logique N3 ; elles sont hébergées dans le projet Sourceforge Déductions.

Ensuite, pour exécuter les règles, et exécuter l'application générée, l'Environnement de Développement Intégré EulerGUI est utilisé.

La nature déclarative et logique de l'architecture rend possibles d'autres caractéristiques désirables :
  • Générer des formulaires pour d'autres plateformes, par exemple HTML + PHP, Ajax, SWT, etc. ;
  • Ajouter de l'intelligence à l'application générée, en intégrant un moteur logique embarqué (permet des règles de validation et de présentation, et plus).

Voici une présentation (en format Open Office), en PDF.

Le logiciel libre à la pointe

Il ne fait pas de doute que tôt ou tard, l'Intelligence Artificielle va jouer un rôle dans le logiciel. Et ça « risque » d'être tôt. Une fois de plus, le logiciel libre est à la pointe, en particulier à cause du rôle des universités et de la recherche, en IA et avec le Web sémantique. De plus, le logiciel libre est bien adapté à des projets avec équipe réduite mais forte technicité.

Il ne faut pas cacher que le passage à la programmation déclarative et logique représente un changement d'habitudes plus radical que le passage du procédural à l'Orienté Objet. Mais puisque les outils eux-mêmes deviennent intelligents, cela devrait mieux passer. La voie logique de tout ça, c'est que des non-informaticiens qui connaissent les concepts de leur métier vont pouvoir créer des applications non triviales.

Que faire dans ce projet?

Pour développer les règles en logique N3 du projet Déduction, une connaissance de la programmation logique ( Prolog, Drools, Ilog rules, ...), ou le désir d'apprendre l'Intelligence Artificielle sont nécessaires. Le livre classique AIMA (Artificial Intelligence: A Modern Approach) vient justement de sortir en Français.

Par contre, pour tester le générateur d'application Déductions, il faut juste être familier de la modélisation des données, soit en UML, langages Orientés Objet, SQL, soit avec les formats du W3C, RDF Schéma et OWL (voir « Java Swing application generator from OWL model and N3 logic rules »).

Justement, ceux qui s'intéressent au Web sémantique trouveront avec EulerGUI un des outils pour se mettre le pied à l'étrier. Il y en a d'autres comme Protégé, Sésame.

Vous pouvez participer en créant de nouvelles possibilités pour les applications générées:
  • Soit générer de nouveaux langages de programmation ;
  • Soit pour de nouveaux frameworks : Ajax (GWT, Wicket), PHP (Drupal, Joomla), Eclipse, …

Enfin, si vous êtes déçus par XSLT ou par QVT/ATL, et si vous voulez tâter de la transformation de graphes d'objets via des règles logiques, l'environnement EulerGUI mérite l'essai.

Voyez par exemple les règles pour UML → OWL .
  • # Carton complet

    Posté par (page perso) . Évalué à 6.

    FOUTAISES !
    • [^] # Re: Carton complet

      Posté par (page perso) . Évalué à 4.

      Mouais mouais.

      C'est pas parce qu'on comprend pas qu'on doit critiquer. Moi, par exemple, j'ai absolument rien pané à la dépêche, mais est-ce que pour autant je me laisse aller de la sorte à une agressivité facile ?

      Bon.

      D'accord.

      FOUTAISES !
      • [^] # Re: Carton complet

        Posté par . Évalué à -2.

        Non non non, t'es fou !
      • [^] # Re: Carton complet

        Posté par (page perso) . Évalué à 2.

        Surtout que ce n'est pas une critique : ce projet à l'air très intéressant (même si je n'ai pas tout compris) et la dépêche, en elle-même, est bien rédigée.

        Mais bon, autant de buzzwords fait forcément au moins un heureux autour d'une table (de réunion).
        • [^] # Re: Carton complet

          Posté par . Évalué à 1.

          Des réunions avec des buzzwords???
          Mais c'est dépassé depuis longtemps.
          Maintenant, une réunion, çà doit être "entertaining".
          cf ce post hilarant de Dilbert:
          http://rossel.free.fr/reuCool.gif
        • [^] # Re: Carton complet

          Posté par (page perso) . Évalué à 2.

          Loin de moi les buzzwords et le vaporware !

          En fait tout est parti d'une réflexion sur "comment (ré)utiliser au mieux
          les modèles métier et l'Intelligence Artificielle" pour créer des applications
          de gestion. Et ensuite j'ai appris, j'ai cherché dans ce qui existe (il y a
          énormément d'outils!) , et j'ai commencé quelque chose qui marche et
          qui peut rendre service.

          Et en cherchant je suis tombé sur les systèmes à bases de règles ( http://en.wikipedia.org/wiki/Rule_engine ) , et sur le Web Sémantique (http://fr.wikipedia.org/wiki/Web_s%C3%A9mantique) . J'ai développé EulerGUI pour m'aider à expérimenter, et en expérimentant, j'ai vu que je pouvais en grande partie réaliser mes objectifs en combinant le WS avec les moteurs de règles.
          • [^] # Re: Carton complet

            Posté par . Évalué à 1.

            Loin de moi les buzzwords et le vaporware !

            Pourtant, l'IA, question vaporware, c'est pas mal.
            (et « réutiliser l'IA » pour des applications de gestion... hum hum)
    • [^] # Re: Carton complet

      Posté par . Évalué à 2.

      Tout ce qui peut remettre en cause le .doc comme document formel de spécification mérite d'être étudié.
      D'autant que la syntaxe N3 est lisible par un humain, et reste processable par un programme informatique.
      Si en plus, on plugge là dessus un moteur de génération automatique, moi je dirais plutôt WHY NOT !!!!!
      • [^] # Re: Carton complet

        Posté par (page perso) . Évalué à 2.

        Lisible par un être humain il faut le dire vite.
        Par un informaticien, peut-etre ...
        • [^] # Re: Carton complet

          Posté par (page perso) . Évalué à 1.

          Il me parait difficile d'être plus lisible et concis que N3. En plus il y a des colorations syntaxiques pour N3 avec Vim, emacs, et JEdit.

          Mais bien sûr il a des alternatives à l'éditeur de texte.
          Vous pouvez ouvrir et créer un fichier N3 exprimant un modèle OWL avec l'éditeur graphique Protégé ( http://protege.stanford.edu/ ) ou avec Swoop ( http://code.google.com/p/swoop/ ) .
          • [^] # Re: Carton complet

            Posté par . Évalué à 3.

            En plus il y a des colorations syntaxiques pour N3 avec Vim, emacs, et JEdit.

            En même temps, je connais très peu de langage qui non pas de colorations syntaxiques sous vim ou emacs (sauf ceux de type brainfuck).
    • [^] # Re: Carton complet

      Posté par (page perso) . Évalué à 2.

      Euh, j'ai des hallucinations, ou c'est moi qui avait lancé ce fil (de façon assez peu intelligente, certes) et mon poste a mystérieusement disparu ?
      • [^] # Re: Carton complet

        Posté par . Évalué à 1.

        T'hallucine peut-être pas...
        Une question de karma ?
        Tu honnores ta vertu, enfin celle que t'a décerné J-A Ad'A :-)

        C'est pour rire...

        La prochaine fois, je le formule en N3, histoire de :-)
  • # Merci pour cette dépêche

    Posté par (page perso) . Évalué à 3.

    Et bravo pour le travail et la vision qu'il y a derrière.

    S.

    "There's no such thing as can't. You always have a choice." - Ken Gor

  • # Exemples ?

    Posté par (page perso) . Évalué à 6.

    Je crois voir la finalité de la chose, ça a autant l'air intéressant que c'est compliqué !

    Il faudrait qq exemples, par exemple pour une appli générée.
  • # J'en déduis :

    Posté par . Évalué à 1.

    [mode sérieux]
    qu'écrire du code de qualité étant un art difficile et très technique, la vision proposée permet de limiter l'expertise technique nécessaire pour commencer à programmer des applications non triviales. Je relève que le vocabulaire employé étant inhabituel pour la plupart d'entre nous, l'affaire semble difficile d'accès. Or la promesse de cette approche est belle en ce que nous pourrons à terme développer les applications dont nous maîtrisons parfaitement le cahier des charges, simplement par la réutilisation de code robuste aux fonctionnalités décrites (modélisées), dont nous considérerons les caractéristiques fonctionnelles plutôt que des aspects techniques.

    [mode ludique]
    J'identifie tel code sur la toile comme robuste.
    Sans le modifier, je lui ajoute du sens (une description ''normalisée'' de ce qu'il fait, en gros).
    Je partage mon ajout de sens avec la communauté en communiquant une URL.
    L'ensemble de ces URLs partagées, consolidées (vérification, débuggage) constitue alors une base de code réutilisable sans programmer dans un language classique mais en exprimant des règles et en définissant un modèle de données.
    L'écriture d'une application peut alors se faire en langage N3 (ou équivalent), en exploitant la force de la base de code partagée mondialement.

    [mode rêveur]
    Plus fort : l'écriture des règles, la définition du modèle peut se faire en language naturel et/ou graphique puis être traduite en N3 : on écrit un programme en parlant dans sa langue naturelle et en dessinant.

    [mode prophétique]
    D'ici 3 ans tout au plus, la programmation déclarative sera enseignée dans les écoles d'ingénieur comme une des meilleurs pratiques (qualité du code, réutilisabilité, maintenabilité, expressivité et lisibilité)


    J'appelle la communauté à réagir positivement : que ceux qui ont la capacité de comprendre et d'intégrer la vision de monsieur Vanel puissent oeuvrer pour la communiquer simplement par la réalisation de présentations didactiques, dynamiques et séduisantes.


    [mode troll (en guise de post-scriptum)]
    Si on peut maîtriser ces technologies, on comprendra mieux ce que les dignitaires du système, leur bras armé et les spécialistes du marketing nous concoctent.
    M'est d'avis qu'on pourra de plus contrer leurs assauts, en gardant le contrôle du net et de l'information (réactivité et maîtrise accessible pour tous : après familiarisation, tu changes la règle, tu cliques).

    Par la conscience, le peuple garde sa dignité.
    Le cas Zino n'est pas loin :-)
    • [^] # Re: J'en déduis :

      Posté par . Évalué à 2.

      Je réagit à : "qu'écrire du code de qualité étant un art difficile et très technique, la vision proposée permet de limiter l'expertise technique nécessaire pour commencer à programmer des applications non triviales."

      oui enfin, un code de qualité c'est pas juste quelques lignes d'algo, mais plus un assemblage d'algos (au plus haut niveau on parle d'assemblage de composants).

      Alors arriver à décrire des algos avec une sémantique plus naturelle je veut bien, mais réussir à décrire tout un programme avec, ça devient un peu barjo je pense. J'ai vraiment du mal à y croire. Surtout si on veut obtenir un code performant et donc adapté à notre besoin d'ensemble (et pas juste à des parties séparés du besoin). D'ailleurs l'approche réutilisation des composants peut également avoir ces limites sur ce point.

      D'ailleurs si après on passe autant de temps à écrire une spécification qu'à écrire le code ça perd un peu d'intérêt. Et comment être sur d'une spécification ? Comment être sur que nos invariants sont correcte ? Qu'on en n'oublie pas ?

      Ces méthodes miracles n'ont rien de miracle pour moi. C'est une autre manière de faire, peut être mieux, peut être pas.

      A noter que je n'ai rien contre la recherche, continué à faire ce type de recherche, peut être que j'ai tords et que ça améliorera le travail des programmeurs/concepteurs tout comme l'approche objet l'a fait.
    • [^] # Re: J'en déduis :

      Posté par . Évalué à 2.

      simplement par la réutilisation de code robuste aux fonctionnalités décrites (modélisées), dont nous considérerons les caractéristiques fonctionnelles plutôt que des aspects techniques.

      Ça existe déjà, il suffit d'utiliser des bibliothèques tierce-partie disposant d'APIs documentées.
      Pas besoin de se branler la nouille avec des triplets RDF ;)
      • [^] # Re: J'en déduis :

        Posté par (page perso) . Évalué à 1.

        Antoine, si vous pensez (comme moi) que la modélisation est une bonne chose, vous devez en même temps reconnaître que les "bibliothèques tierce-partie disposant d'APIs documentées" c'est très rare dans la nature.
        Surtout pour les modèles métiers .
        C'est rare du moins avec les technologies tradi. (UML et les différents langages OO).
        C'est de moins en moins rare avec les technologies du Web Sémantique ( voir dans ce fil les moteurs de recherche WS ).

        Demandez vous pourquoi il en est en ainsi , ne vous demandez pas pourquoi le projet Déductions en tire les conséquences.

        Quand aux triplets RDF, si vous ne les comprennez pas bien, voyez :
        http://www.w3.org/2000/10/swap/Primer

        Il n'y a tout simplement pas de meilleur candidat que N3 au poste de format pivot universel.
        Maintenant si on dit : "on n'a pas besoin de format pivot universel" , je dis que c'est comme les réseaux: avant Internet on était résigné au fait qu'il y avait plusieurs réseaux incompatibles avec des passerelles branlantes. Maintenant Internet parait évident.
        • [^] # Re: J'en déduis :

          Posté par . Évalué à 3.

          reconnaître que les "bibliothèques tierce-partie disposant d'APIs documentées" c'est très rare dans la nature

          Heu, très rare selon quelles métrique ?
          Que la majorité des projets logiciels, qu'ils soient open source ou proprios, ne soient pas d'une très grande qualité, je suis d'accord. Mais si l'on pondère par la popularité et le taux d'usage, je suis sûr que le résultat est différent. En d'autres termes, les principales bibliothèques que l'on est amené à utiliser au jour le jour sont, en général, de bonne qualité et bien documentées (ne serait-ce que parce que l'on a tendance à éviter les mauvaises ;-)).

          Donc, non, je ne suis pas d'accord avec le diagnostic, et encore moins avec l'explication proposée ci-dessous :

          C'est rare du moins avec les technologies tradi. (UML et les différents langages OO).
          C'est de moins en moins rare avec les technologies du Web Sémantique


          Non. La formalisation d'une API dépend de la rigueur et de la compétence des développeurs, pas de l'utilisation de telle ou telle nouveauté à la mode.

          Quand aux triplets RDF, si vous ne les comprennez pas bien

          Merci, mais je suis déjà intéressé à la question.
          Il ne s'agit pas de comprendre (la notion de triplet est très simple, bien que RDF, comme toute norme W3C, soit un monstre bureaucratique qui enfouit la simplicité conceptuelle sous des tonnes de verbiage nuisible), mais de savoir en quoi c'est utile. Ma modeste réponse est que cela ne l'est pratiquement pas, car c'est une généralisation tellement vague que cela n'apporte rien.

          Il n'y a tout simplement pas de meilleur candidat que N3 au poste de format pivot universel.

          « Format pivot universel », voilà bien le genre d'expression vide de sens qui convient au business loto ;-)

          Puisque vous parlez de « comprendre », vous devriez vous intéresser au fait que la formalisation d'un langage logique universel a été tentée au dix-neuvième siècle (cf. par exemple Frege) et que ce fut un échec reconnu depuis. Il n'est pas étonnant que l'IA n'arrive à rien de concret puisqu'elle s'épuise à reproduire des lubies éculées.

          La devise des zélotes de RDF et du Web sémantique semble être : « on ne sait pas bien quel problème concret cela résout, mais puisqu'on arrive à l'implémenter, continuons à brasser du vent avec ».
          • [^] # Re: J'en déduis :

            Posté par (page perso) . Évalué à 1.

            Antoine, vous avez raison que, pondéré par l'utilisation,
            les API de bonne qualité existent au milieu d'un déchet
            important.

            Mais mon propos n'était pas les API, mais les modèles métier.
            Et c'est là q'il y a un manque de modèles réutilisables
            réellement disponibles avec UML, et là que le Web Sémantique
            apporte des modèles.

            Les modèles métiers sont la clé des logiciels, mais ils sont généralement
            cachés parmi des concepts informatiques. Le constat et la démarche
            ressemblent à ce qui est connu sous le vocable "Model Driven" (http://fr.wikipedia.org/wiki/Model_driven_architecture), mais
            en restant indépendant des technologies de l'OMG qui là, pour le coup, compliquent encore bien plus que celles du W3C.
  • # C'est beau l'enthousiasme

    Posté par . Évalué à 3.

    Il ne fait pas de doute que tôt ou tard, l'Intelligence Artificielle va jouer un rôle dans le logiciel.

    C'est vrai: je me souviens que dans les annees 80, Hebdologiciel (ca ne me rajeunit pas!!) avait annonce que la nouvelle generation d'ordinateur Japonais allais utiliser les dernieres technologie d'IA, donc cela devrait arriver bientot, je n'ai aucun doute la dessus comme tu le dis.

    Patience (et quand l'IA arrivera tu lui demanderas des nouvelle du Push?)

    [ Si, si j'ai le droit c'est Vendredi ]
    • [^] # Re: C'est beau l'enthousiasme

      Posté par . Évalué à 3.

      (et quand l'IA arrivera tu lui demanderas des nouvelle du Push?)

      Tu as oublié la réalité virtuelle (avec les lunettes 3D et les gants cybernétiques).
  • # lapin con pris

    Posté par . Évalué à 2.

    Ca a l'air terrible, mais il faudrait vraiment un 'EuleurGUI pour les nuls' pour rendre cette dépêche accessible à la race humaine.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.