Programmation des Systèmes Experts



Documents pareils
Projet de programmation (IK3) : TP n 1 Correction

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Sécurité des applications web. Daniel Boteanu

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Configurer la supervision pour une base MS SQL Server Viadéis Services

Snapshot Qualiwatt. Description du Format. Version v1.0

JES Report Broker. Campus Technologies. SAE de CHALEMBERT 1 Rue Blaise PASCAL JAUNAY-CLAN info@campustec.

Rapport de Mini-Projet en ArcGIS Engine

Recherche dans un tableau

Document Object Model (DOM)

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Vanilla : Virtual Box

Introduction aux concepts d ez Publish

Cours Bases de données 2ème année IUT

Techniques de Programmation pour Internet

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Serveur d Applications Web : WebObjects

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Formation VBA 3 Interagir

Paris Airports - Web API Airports Path finding

Le Modèle de Sécurité dans JAVA

Autres langages de l IA

SYSTÈMES D INFORMATIONS

Formulaires et Compteurs

Sécurité Informatique. Description. Prérequis. Un petit test avant de commencer s embourber

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Application de lecture de carte SESAM-Vitale Jeebop

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Formulaire pour envoyer un mail

Le serveur HTTPd WASD. Jean-François Piéronne

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Initiation à l algorithmique

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de SQL. Hacks 1-6 CHAPITRE UN

Paginer les données côté serveur, mettre en cache côté client

Extended communication server 4.1 : VoIP SIP service- Administration

Mysql avec EasyPhp. 1 er mars 2006

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Direction des Systèmes d'information

Initiation à la Programmation en Logique avec SISCtus Prolog

Configuration des notifications de messagerie avec les scripts pour les alertes IDS avec le CiscoWorks Monitoring Center for Security

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

Présentation du langage et premières fonctions

Contrôle d'accès Access control. Notice technique / Technical Manual

TP Contraintes - Triggers

HTML/CSS - Travaux Pratiques 2

OCL - Object Constraint Language

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

DOM - Document Object Model

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

TP JAVASCRIPT OMI4 TP5 SRC

Bases de données avancées

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Once the installation is complete, you can delete the temporary Zip files..

Gestion Electronique de Document (ECM/GED)

MS SQL Express 2005 Sauvegarde des données

.NET - Classe de Log

VoD ( Video on Demand ) avec VLC

CREATION d UN SITE WEB (INTRODUCTION)

Présentation Windows Azure Hadoop Big Data - BI

SERVEUR DÉDIÉ DOCUMENTATION

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

INFO-F-404 : Techniques avancées de systèmes d exploitation

1 Lecture de fichiers

Programme Compte bancaire (code)

WEB page builder and server for SCADA applications usable from a WEB navigator

Table des matières Hakim Benameurlaine 1

Application Form/ Formulaire de demande

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Activités HTML. Code: act-html

Introduction aux «Services Web»

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Bases de Données Avancées PL/SQL

PROGRAMMATION EVENEMENTIELLE sur EXCEL

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

modèles génériques applicables à la synthèse de contrôleurs discrets pour l Internet des Objets

ETABLISSEMENT D ENSEIGNEMENT OU ORGANISME DE FORMATION / UNIVERSITY OR COLLEGE:

Gestion du cache dans les applications ASP.NET

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

Master d Informatique Corrigé du partiel novembre 2010

Best Practices : Utilisation des APIs de Lotus Web Content Management

Attaques de type. Brandon Petty

Introduction aux algorithmes répartis

Request Tracker pour les Nuls. Yves Agostini - YVESAGO

PHP et les Bases de données - Généralités

Algorithmique I. Algorithmique I p.1/??

Transcription:

Programmation des Systèmes Experts James L. Crowley Deuxième Année ENSIMAG Deuxième Semestre 2000/2001 TD 4 : 20 avril 2001 Exercice : L'objet de cet exercice est de réaliser un système de schémas permettant de répondre aux questions concernant les pages html. Les pages sont décrites par un arbre d objets généré par un système de règles. Les objets représentent les composants syntaxiques des pages. Les réponses sont générées par des "handlers" des objets. À fin d éviter les complications dans les règles, certains conventions syntaxique sont imposé sur la structure des pages html. Ces conventions peuvent êtres éliminés par un système de règle plus complexe, mais un tel système n est pas le but de cet exercice. Soit la définition de la classe «page» : (defclass page (is-a USER (role concrete (pattern-match reactive (slot file-name (create-accessor read-write (slot head (create-accessor read-write (slot body (create-accessor read-write (message-handler what-is-title (message-handler where-is-page (message-handler Get-level1-headings (message-handler Get-Hrefs Définir une classe pour head avec les slots «title» et «base». Faire une exemple de head avec (make-instance [page] of page (make-instance [head] of head (page "page.html"(title "This is a sample html page"(base "http://www-prima.imag.fr/" (send [page] put-head [head] Définir une classe body avec le les multislots «input» «H1s», «H2s», «HREFs» et «Ps». Faire un exemple de body avec (make-instance [body] of body (page "page.html"(h1 "Sample level 1 header"(ps [T1]

(send [page] put-body [body] Le message-handler «what-is-title» a la forme : (defmessage-handler page what-is-title ( (send?self:head get-title Le message-handler «where-is-page» return la valeur de «base» stocké en «head». Définir et tester le message handler «where-is-page». Les règles suivantes (ENSI2.SE.TD4.clips peuvent être utilisé pour lire le contenu d un fichier. ;; ;; defclass page ;; (defclass page (is-a USER (role concrete (pattern-match reactive (slot file-name (create-accessor read-write (slot head (create-accessor read-write (slot body (create-accessor read-write (defclass head (is-a USER (role concrete (pattern-match reactive (slot page (create-accessor read-write (slot title (create-accessor read-write (slot base (create-accessor read-write (defclass body (is-a USER (role concrete (pattern-match reactive (multislot H1s (create-accessor read-write (multislot H2s (create-accessor read-write (multislot Ps (create-accessor read-write (multislot HREFs (create-accessor read-write (defclass str "used for H1s, H2s and Ps" (is-a USER (role concrete (pattern-match reactive (slot text (create-accessor read-write 2

(defclass HREF (is-a USER (role concrete (pattern-match reactive (slot url (create-accessor read-write (slot ref (create-accessor read-write (deffacts tags (tags "<HTML>" "</HTML>" "<HEAD>" "</HEAD>" "<TITLE>" "</TITLE>" "<BASE>" "</BASE>" "<BODY>" "</BODY>" "<P>" "</P>" "<H1>" "</H1>" "<H2>" "</H2>" "<A" "</A>" ">" ;; regle d'ouverture et lecture du fichier html (defrule init (initial-fact (printout t "File Name? " (bind?file (read (assert (file-name?file (assert (file?file =(open?file data "r" (defrule no-file?f <- (file?file FALSE (retract?f (printout t?file " not found." crlf 3

(defrule read-line (declare (salience -10?f <- (file?file TRUE (retract?f (bind?in (readline data (printout t?in crlf (if (eq?in EOF then (assert (eof else (assert (line?in (assert (file?file TRUE (assert (file?file TRUE (defrule eof?f <- (file?file TRUE?eof <- (eof (retract?f?eof (close data ;; ce regle detecte les tags (defrule detect-tag (declare (salience 10?L<- (line $?start?str&:(stringp?str $?end (tags $??tag $? (test (str-index?tag?str (retract?l (bind $?list (parse?tag?str (printout t "Parse " $?list crlf (assert (line $?start $?list $?end (defrule add-line?l <- (line $?line?p <- (page $?page (retract?l?p (assert (page (create$ $?page $?line 4

Les instances de «pages» et «head» sont crée par les règles (defrule make-page (declare (salience 10 (file?file TRUE?page <- (page $?before HTML $?after (retract?page (assert (page $?before $?after (make-instance of page (file-name?file (defrule make-head (declare (salience 10?P <- (object (is-a page (file-name?file (file?file TRUE?page <- (page $?before HEAD $?head-stuff /HEAD $?after (retract?page (assert (page $?before $?after (assert (head $?head-stuff (bind?head (make-instance of head (page?page (send?p put-head?head (defrule make-title (declare (salience 10?H <- (object (is-a head?head <- (head $?before TITLE?title-str /TITLE $?after (retract?head (assert (head $?before $?after (send?h put-title?title-str (defrule delete-head?h<-(head (retract?h (defrule make-body (declare (salience 10?P <- (object (is-a page(file-name?file (file?file TRUE?page <- (page $?before BODY $?head-stuff /BODY $?after 5

(retract?page (assert (page $?before $?after (assert (body $?head-stuff (bind?body (make-instance of body (send?p put-body?body (defrule make-h1 (declare (salience 10?H <- (object (is-a body (H1s $?h1?body <- (body $?before H1?h1-str /H1 $?after (retract?body (assert (body $?before $?after (bind?new-h1 (make-instance of str (text?h1-str (send?h put-h1s (create$ $?h1?new-h1 (defrule make-p-text (declare (salience 10?H <- (object (is-a body (Ps $?P?body <- (body $?before P?P-str /P $?after (retract?body (assert (body $?before $?after (bind?new-p (make-instance of str (text?p-str (send?h put-ps (create$ $?P?new-P Ajouter les règles de lire le «title» et «base» d un «head». Ajouter une règle de créer un body. 6