© Jean-Marc Vanel 2011
Déductions SARL - Conseil, services,
formation,
Programmation basée sur les règles, Web Sémantique
EulerGUI EDI plaque
tournante pour le Web Sémantique (SPARQL, exploration) + règles, XML, UML,
eCore
Cette présentation utilise JavaScript, CSS et XHTML
via le Slidy 2 du W3C
Préambule : la connaissance et sa gestion
Qu'est ce que la connaissance?
Plusieurs choses:
- l'expertise : exemple "un béton contient des granulats
et un ciment"
- les algorithmes et formules : exemple "formule pour le
vieillissement d'un béton"
- les données : exemple "base de données sur les ciments
disponibles"
- des documents bureautiques classés par sujets et multi-critères
Notre sujet sera : 1-2-3.
Logique métier et Système d'Information
Le fil conducteur à travers les tendances du développement logiciel
pourrait être : comment on va (plutôt cahotiquement ) vers plus de
sémantique.
Domaines couverts par le logiciel d'entreprise:
Domaine |
impacté par |
logique métier |
règles, langage Naturel Contrôlé |
IHM |
règles |
stockage persistant |
Web Sémantique |
échange de données |
Web Sémantique |
Le point 1 est le parent pauvre, car dans le courant dominant aujourd'hui,
on code cela dans un langage procédural, typiquement Java (ou alors
on délègue ça à un progiciel comme SAP, ce qui revient au même).
langage procédural ( et non logique ) => non composable,
dépendance au language
Le point 4 est aussi un parent pauvre, car on pense en terme d'extraction
(ETL), exportation et importation, le plus souvent en XML, parfois en temps
réel via des services réseau.
Formaliser, pérenniser, sécuriser l'expertise métier
- pérenniser et sécuriser (afin qu'elle survive aux experts),
- formaliser, afin de pouvoir l'exécuter directement, la valider
- réutiliser pour construire du logiciel directement : plusieurs
logiciels, pour plusieurs clients, sur plusieurs plateformes
Rappels sur le Web sémantique - 1 les bases
Rappels sur le Web sémantique - 2
Rappels sur le Web sémantique - 3
cf Comparing
Formats - English (Informal)
There is a person, Pat, known as "Pat Smith" and "Patrick Smith". Pat has a
pet dog named "Rover".
mysql> select * from person;
+----+-----------+------+
| id | name | pet |
+----+-----------+------+
| 6 | Pat Smith | 7 |
+----+-----------+------+
mysql> select * from pet;
+----+-----------+
| id | name |
+----+-----------+
| 7 | Rover |
+----+-----------+
Web sémantique - 4
Le même graphe sémantique au format de la logique des propositions ( à la
Prover9 ) .
Human(pat).
pet(pat,r).
Dog(r).
name(r,"Rover").
name(pat, "Pat Smith").
name(pat, "Patrick Smith").
Le format N3 du Web Sémantique - 1
# brut :
@prefix : <http://my.com/semweb#> .
@prefix bio: <http://biology.org/ontology#> .
@prefix per: <http://ontology.org/> .
:pat a bio:Human .
:pat per:pet :r .
:r a bio:Dog .
:r per:name "Rover" .
:pat per:name "Pat Smith" .
:pat per:name "Patrick Smith" .
|
# avec plus de sucre syntaxique :
@prefix : <http://my.com/semweb#> .
@prefix bio: <http://biology.org/ontology#> .
@prefix per: <http://ontology.org/> .
:pat a bio:Human ;
per:pet :r ;
per:name "Pat Smith" ,
"Patrick Smith" .
:r a bio:Dog ;
per:name "Rover" .
|
# Sans sucre syntaxique:
<http://my.com/semweb#pat> <http://www.w3.org/2000/01/rdf-schema#type> <http://biology.org/ontology#Human>.
<http://my.com/semweb#pat> <http://ontology.org/name> "Pat Smith" .
# ... etc ...
http://prefix.cc site collaboratif pour les
préfixes.
Le format N3 du Web Sémantique - 2
Notion d'ontologie (Logique de Description == DL )
OWL, le standard W3C d'ontologie
- variantes : OWL DL, , OWL RL, OWL full
Systèmes en chaînage avant (alias moteurs de règles, "systèmes
de production')
- chaînage avant : propagation des conséquences jusqu'à épuisement
- algorithme optimisé : RETE
- gère un état dynamiquement (adapté gestion d'évènements)
- pas un raisonnement logique; on part des faits initiaux
- chaînage avant versus chaînage arrière
Moteurs de règles: avantages
- modification et relecture par les experts métiers
- Capture bien l'expertise métier
- Une règle isolée a un sens; composabilité
- changement de règles métier facile (en dehors du code source!)
- Le moteur enchaîne les règles, pas le programmeur
- + efficace que la programmation classique
- Règles traduisibles depuis et vers le langage naturel
- Les « systèmes experts « ont fait leurs preuves (Ilog/IBM,
Drools/RedHat, ...)
Moteurs de règles: avantages spécifiques du moteur
Drools+N3
Impossible avec moteurs SWRL dans Protégé, Pellet, etc
- règles mélangeant classes et faits
- règles agissant sur des objets Java
- création d'objets
- utilisation libre de propriétés et classes non déclarées
Moteurs de règles Drools+N3 / règles traitant classes et
faits
- règles mélangeant classes et faits (impossible en SWRL)
- exemple "abduction sur les symptomes de maladies"
calculer, pour un individu, un indice de correspondance C par rapport
aux critères de chaque classe OWL.
C = nombre de critères vérifiés / nombre total de critères pour la
classe OWL
0 ≤ C ≤ 1
C permet de trouver la (ou les) classes qui correspond le mieux.
Si c'est 1, c'est une instance de la classe.
Critère == expression OWL "atomiques" :
- axiome rdfs:subClassOf, ou
- restriction sur Propriété
- énumération
- owl:complementOf
On peut le programmer en Java avec OWL API, ou en règles N3 avec le
moteur Euler de Jos de Roo.
Développement logiciel sémantique
Automatisation du développement logiciel ==> idée de développement
logiciel sémantique.
Deux usages:
- tirer le meilleur parti de modèles métier pour créer des applications
quelconques,
- utiliser le format N3 du Web Sémantique pour tous les artefacts
logiciels hors programmation: configuration (formats. properties, JSON,
.ini, XML, ... ), DSL.
Langages naturels contrôlés (CNL)
A la fois logique formelle et Anglais standard:
Every client is a person.
Everything that a man buys is a good.
- lisibles à la fois par l'homme et la machine
- marche dans les 2 sens: analyse et verbalisation
- ATTEMPTO ACE: outils : ligne de commande, client Web, client Swing (via
Protégé), Wiki Sémantique
Expressivité comparée : règles versus DL
- expressivité en gros supérieure aux ontologies;
- la majeure partie des ontologies se traduisent en règles;
- autre solution: règles qui interprètent OWL (Jos de Roo)
- les règles sont interprétables directement par un moteur d'inférence;
- la génération de classes métier POJO est inutile,
- car les données de la session sont hébergées dans le moteur sous
forme de triplets RDF;
Expressivité comparée : DL, règles, CNL
règles
DL
(OWL)
CNL
OWL 2 RL
Modal
Expressivité : règles > DL(OWL)
Règles avec nombreuses variables:
If a user U has-as-friend a person X, and has-as-friend a person Y,
and X is not Y,
and X has-as-friend Z, and Y has-as-friend Z,
and Z is not U
then Z is-a-proposed-friend-for U.
Expressivité : DL(OWL) > règles
Ou logique (disjonction) :
Every person has a job, or is an unemployed-person.
Réutilisation de modèles, ontologies, vocabulaires
- réutiliser les ontologies : pourquoi ?
- interopérabilité,
- économie de conception
- comment :
- moteurs de recherches spécialisés;
- ajout des notions manquantes;
- ajout des règles
- enrichissement d'une application avec des données ouvertes
De la connaissance au logiciel: différentes chaînes de
traitement, implémentation, déploiement
- flux de données :
ACE(modèle+règles) -> OWL+SWRL -> N3 -> moteurs inférence
(Java (Drools), Python, Prolog, PHP, service REST)
- moteur Euler : capacités d'explication et de génération de modèles et
contre-modèles
- utilisation de raisonneurs OWL
- génération de code pilotée par règles logiques et patrons
(templates)
Scénario système expert
- alias moteur d'inférence, moteur de règles, système de production
- génération de classes métier POJO inutile!
- données session hébergées dans le moteur sous forme de triplets
RDF
- règles interprétées directement par le moteur
- possibilité de traiter par règles au choix:
- métier pur seulement
- aussi processus métier (règles applicatives)
- aussi affichage - formulaires
- reste à gérer par du code écrit à la main:
- peupler le moteur de règles à partir d'une base de données
- persistance des données
- affichage - formulaires
L'Orienté Objet pour les données métier a vécu
- En OO, les modèles et règles métiers sont mélangés avec
l'infrastructure
- Le temps est venu des bases de connaissances!
- OO demeure pour le code d'infrastructure et algorithmique cependant
- Une révolution copernicienne!
Liaison métier-implémentation - 1
Pure règle métier:
{ BloodPressure val ?x.
?x math:greaterThan 70
} => {
Service112 alert "true" } .
Un fait qui déclenche la règle:
BloodPressure val 72 .
Conclusion ajoutée à la base de connaissances:
Service112 alert "true" .
Liaison métier-implémentation - 2
Règle applicative:
{ ?L alert "true"
; log:uri ?LL .
} => {
application displayAlert ?LL . }.
Conclusion ajoutée à la base de connaissances:
application displayAlert "http://eulergui.sourceforge.net/examples#Service112".
Liaison avec plateforme (Java)
{ application displayAlert ?LL .
} => {
?F a java:eulergui-gui-TemporaryFrame # instanciation
; javap:localizedMessage ?LL . # affectation propriété
}.
Avantages par rapport à un développement classique
- limiter les problèmes de compréhension entre développeurs et experts
métier
- limiter le coût des changements de technologie, ou de
fonctionalités.
- qualité logicielle accrue par diminution du code écrit à la main (donc
des bugs)
- on n'est pas lié à un format ou un logiciel propriétaire, puisque :
- tout est open source
- l'Anglais Contrôlé est le format ultime indépendent de toute
technologie
- prototyper la logique métier, afin de la faire manipuler par ceux qui
l'ont définie,
- insertion dans les architectures existantes via API, service Web, ou
génération de code
- ajouter dynamiquement des règles, éventuellement choisies par
l'utilisateur
Les utilisations possibles du cadriciel
Démo
- utilisation de ACE View et ACE Wiki
- interaction simple Java + logique N3 : BloodPressure.n3p
- appli. générée à partir de FOAF + personalisation minimale :
- via moteur de règles et patrons, génération de HTML