Techniques de R - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Techniques de R

Description:

On a envie de pouvoir manipuler ces donn es. pour y rechercher de l'information. pour g n rer de nouveaux documents (HTML, LaTeX, PDF, XML, etc. ... – PowerPoint PPT presentation

Number of Views:33
Avg rating:3.0/5.0
Slides: 19
Provided by: pierreetie
Category:
Tags: envie | techniques

less

Transcript and Presenter's Notes

Title: Techniques de R


1
Techniques de Réécriture et Transformations
  • Pierre-Etienne Moreau

2
Application à XML
3
Document XML
  • XML permet de décrire des documents structurés
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltPersonsgt
  • ltPerson Age"30"gt ltFirstNamegt Paul lt/FirstNamegt
    lt/Persongt
  • ltPerson Age"42"gt ltFirstNamegt Mark lt/FirstNamegt
    lt/Persongt
  • ltPerson Age"21"gt ltFirstNamegt
    Jurgen lt/FirstNamegt lt/Persongt
  • ltPerson Age"21"gt ltFirstNamegt
    Julien lt/FirstNamegt lt/Persongt
  • ltPerson Age"24"gt ltFirstNamegt
    Pierre lt/FirstNamegt lt/Persongt
  • lt/Personsgt
  • On peut voir un document XML comme un arbre

4
Transformation de documents XML
  • On a envie de pouvoir manipuler ces données
  • pour y rechercher de linformation
  • pour générer de nouveaux documents (HTML, LaTeX,
    PDF, XML, etc.)
  • Quels sont les outils permettant de le faire
  • XSLT / XPath
  • Xquery
  • Xduce / Cduce
  • DOM
  • Peu permettent de manipuler un document XML en
    Java
  • Les manipulations se font souvent en utilisant
    DOM directement

5
Exemple
  • On veut savoir sil existe un noeud de la forme
    ltPersongtltFirstNamegt Julien lt/FirstNamegtlt/Persongt
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltPersonsgt
  • ltPerson Age"30"gt ltFirstNamegt Paul lt/FirstNamegt
    lt/Persongt
  • ltPerson Age"42"gt ltFirstNamegt Mark lt/FirstNamegt
    lt/Persongt
  • ltPerson Age"21"gt ltFirstNamegt
    Jurgen lt/FirstNamegt lt/Persongt
  • ltPerson Age"21"gt ltFirstNamegt
    Julien lt/FirstNamegt lt/Persongt
  • ltPerson Age"24"gt ltFirstNamegt
    Pierre lt/FirstNamegt lt/Persongt
  • lt/Personsgt

6
Filtrage
  • Il faut savoir si un pattern XML filtre vers un
    noeud de document XML
  • On aimerait pouvoir écrire
  • match(t)
  • ltPersongtltFirstNamegt Julien lt/FirstNamegtlt/Persongt
    -gt
  • // Noeud trouvé
  • Ou plus généralement
  • ltPersongtltFirstNamegt X lt/FirstNamegtlt/Persongt -gt

7
Modèle de donnée (simplifié)
  • ElementNode(namestr, attrListTNodeList,
  • childListTNodeList) -gt TNode
  • AttributeNode(namestr, valuestr) -gt TNode
  • TextNode(datastr) -gt TNode
  • conc(TNode) -gt TNodeList

8
XML vs. Term
  • Un document XML peut se voir comme un arbre
  • ltA a"at1"gtltB/gtlt/Agt
  • est représenté par
  • ElementNode("A",
  • conc(AttributeNode("a", "at1")),
  • conc(ElementNode("B",conc(),conc()))
  • )

9
Pattern XML
  • On veut pouvoir écrire un pattern de la forme
  • ltA a"at1"gtXlt/Agt
  • qui sera encodé par
  • ElementNode("A",
  • conc(AttributeNode("a", "at1")),
  • conc(X)
  • )

10
Questions
  • A-t-on
  • ltA a"at1"gtXlt/Agt ltlt ltA a"at1"gtltB/gtlt/Agt ?
  • ltA a"at1"gtXlt/Agt ltlt ltA a"at1"gtltB/gtltC/gtlt/Agt ?
  • Quel est le type de X ?
  • TNode ?
  • TNodeList ?
  • On voudrait pouvoir écrire
  • ltA a"at1"gtXlt/Agt ltlt ltA a"at1"gtltB/gtltC/gtlt/Agt
  • Quelles sont les solutions ?

11
Questions
  • En fonction du parseur, ltA a"at1"gtltB/gtlt/Agt peut
    être reconnu comme ltA a"at1"gt?ltB/gt?lt/Agt
  • A-t-on
  • ltA a"at1"gtXlt/Agt ltlt ltA a"at1"gt?ltB/gt?lt/Agt ?
  • ltA a"at1"gtXlt/Agt ltlt ltA a"at1"gt?ltB/gt?lt/Agt ?
  • Comment est encodé ltA a"at1"gt?ltB/gt?lt/Agt ?
  • ElementNode("A",
  • conc(AttributeNode("a", "at1")),
  • conc(
  • TextNode("?"),
  • ElementNode("B",conc(),conc()),
  • TextNode("?"))
  • )
  • Est-ce que cela filtre ?

12
Notation explicite
  • ltA a"at1"gt(_,X,_)lt/Agt
  • qui correspond à
  • ltA a"at1"gtconc(_,X,_)lt/Agt
  • A-t-on ltA a"at1"gt(_,X,_)lt/Agt ltlt ltA
    a"at1"gt?ltB/gt?lt/Agt ?
  • Oui, il y a 3 solutions

13
Notation implicite
  • ltA a"at1"gt(_,X,_)lt/Agt
  • qui correspond à
  • ltA a"at1"gtXlt/Agt
  • qui correspond également à
  • ltA a"at1"gtXlt/Agt
  • A-t-on ltA a"at1"gtXlt/Agt ltlt ltA a"at1"gt?ltB/gt?lt/Agt
    ?
  • Oui, il y a 3 solutions

14
Attributs
  • Les attributs sont représentés par une liste de
    couples (nom,valeur)
  • Il existe également des notations implicites et
    explicites
  • Ainsi
  • ltA a"at1"gt correspond à ltA a"at1"gt
  • qui correspond à ltA (_,a"at1",_)gt

15
Questions
  • A-t-on
  • ltA a"at1"gtlt/Agt ltlt ltA a"at1"gtlt/Agt ?
  • ltA a"at1"gtlt/Agt ltlt ltA a"at1" b"at2"gtlt/Agt ?
  • Pourquoi ?
  • car ltA (_,a"at1",_)gtlt/Agt ltlt ltA (a"at1"
    b"at2 )gtlt/Agt ?
  • A-t-on
  • ltA a"at1" b"at2"gtlt/Agt ltlt ltA a"at1"
    b"at2"gtlt/Agt ?
  • ltA a"at1" b"at2"gtlt/Agt ltlt ltA b"at2"
    a"at1"gtlt/Agt ?
  • Non, car
  • (_, a"at1", _, b"at2", _) !ltlt (b"at2",
    a"at1")
  • Il faudrait du filtrage AC avec élément neutre!

16
Attributs dans Tom
  • On considère un ordre sur les noms dattributs
  • et les formes canoniques où les attributs sont
    triés
  • Ainsi, ltA b"at2" a"at1"gtlt/Agt est représenté par
  • ElementNode("A",
  • conc( AttributeNode("a", "at1"),
  • AttributeNode("b", "at2")),
  • conc())
  • De même, pour les motifs

17
Utilisation dans Tom
  • Node sort(Node subject)
  • match(subject)
  • ltPersonsgt(X1,p1,X2,p2,X3)lt/Personsgt -gt
  • if(compare(p1,p2) gt 0)
  • return sort(xml(ltPersonsgt
  • X1 p2 X2 p1 X3
  • lt/Personsgt))
  • return subject

18
Comparaison dattributs
  • int compare(Node t1, Node t2)
  • match(t1, t2)
  • ltPerson Agea1gtltFirstNamegt n1
    lt/FirstNamegtlt/Persongt,
  • ltPerson Agea2gtltFirstNamegt n2
    lt/FirstNamegtlt/Persongt
  • -gt return a1.compareTo(a2)
  • return 0
Write a Comment
User Comments (0)
About PowerShow.com