Typage de données XML Les besoins de schémas Plan

Transcription

Typage de données XML Les besoins de schémas Plan
1
3
Les besoins de schémas
Dans la gestion de données XML, un schéma est utile pour
naviguer et interroger des données,
créer et modifier des données,
l’optimisation de requêtes, et
le stockage des données.
Dans la gestion de documents XML, un schéma est utile pour
Typage de données XML
créer et modifier (éditeurs structurés),
échanger (vérification) des documents.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
2
4
Plan
Exemple: Interrogation et Optimisation
Typage de données XML
DTD :
– Utilisation du typage dans le contexte XML
1
– Grammaires d’arbres
2
– XML Schema
3
<!ELEMENT Personnes (Etudiant|Prof)*>
<!ELEMENT Etudiant Nom>
<!ELEMENT Prof (Nom, Salaire)>
Requête XQuery :
for $a in Personnes/* return $a/Salaire
Version optimisée :
for $a in Personnes/Prof return $a/Salaire
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
5
7
Exemple: Stockage d’un document XML
dans une Base de Données
DTD :
1
2
3
<!ELEMENT Cours (Titre, NomProf, (Etudiant)* >
<!ELEMENT Etudiant NomEt >
<!ELEMENT Prof (NomProf, Salaire) >
Schéma relationnel :
Cours(titre, nomProf)
Etudiant(nomEt, titre)
Prof(nomProf, salaire)
Grammaires d’arbres
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
6
8
Exemple: Echange de documents
Est-ce que les documents du fournisseurs
avec les applications du client ?
DTD et Validation
sont compatibles
a
:
Schéma de
bbcdd
par rapport au schéma de
de
On valide les documents
L(b*cd*)
:
Ensemble de documents qui satisfont
:
ee
f
fg
L(f(g?))
L(e*)
et de
(analyse statique):
On compare les schémas de
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
<!ELEMENT a (b*cd*) >
<!ELEMENT c (e*) >
<!ELEMENT d (f(g*)) >
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
9
11
DTD = grammaire d’arbre
DTD étendues: types et éléments
DTD:
Doc
doc
<!ELEMENT officiel (#PCDATA | cinéma | film)*>
<!ELEMENT cinéma (nom, adresse, (séance)*)>
Titre
titre
section
Titre
titre
Section
Para
para
Grammaire d’arbres :
TypeOfficiel -> officiel (TypeCinema|TypeFilm|Pcdata)*
TypeCinema -> cinema (TypeNom, TypeAdresse, TypeSéance*)
TypeFilm -> film (...)
TypeNom -> nom (Pcdata)
...
Para
para
element
type
Section
section (Titre, Para*)
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
10
12
Grammaires d’arbres
Interpretation
Une interpretation d’un arbre
vers une
grammaire d’arbres est une “mapping” de chaque noeud , noté
, dans vers un non-terminal (type) tel que :
Une grammaire d’arbres (régulière) est un quadruple
, où
est , et
.
est dans
2. le terminal (étiquette) de
3.
, il existe une
est un ensemble fini de règles de production
ou
, où
,
et est une expression régulière sur
( est appelé le modèle de contenu de ).
et ses enfants
telle que
,
1.
pour chaque noeud
règle de production
(types des racines),
est un ensemble fini de terminaux (noms d’élément),
est un sous-ensemble de
est un symbole dans , et
est un ensemble fini de non-terminaux (types),
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
13
15
1
2
Titre
titre
section
Section
3
4
5
Titre
titre
Para
para
Para
para
6
7
8
Section
section (Titre, Para*)
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
14
16
5
6
7
8
4
3
:
Doc
doc
Grammaire d’arbres
Interprétation
Grammaire d’arbre
2
N = {Doc, Para1, Para2, Pcdata}
T = {doc, para, pcdata}
S = {Doc}
Doc
-> doc (Para1, Para2*)
Para1 -> para (Author, Pcdata)
Para2 -> para (Pcdata)
Author -> author (Pcdata)
Pcdata -> pcdata
element
type
1
:
Grammaire d’arbres
Doc
doc
Grammaire d’arbre
Interprétation
N = {Doc, Section, Titre, Para, Pcdata}
T = {doc, section, titre, para, pcdata}
S = {Doc}
Doc -> doc (Titre, Section+)
Titre -> titre (Pcdata)
Section -> section (Titre, Para*)
Para -> para (Pcdata)
Pcdata -> pcdata
Para1
para
Para2
para
auteur
.
et
section
Titre
titre
Normalisation : Il n’existe pas deux règles
Section
Titre
titre
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Para1
para (Auteur, Pcdata)
Para2
para (Pcdata)
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
17
19
Géneration d’arbres et langages
Grammaires à types uniques
s’il existe
Un arbre est généré par une grammaire d’arbres
une interprétation de dans .
Une grammaire à types uniques est une grammaire régulière
telle que
– pour chaque règle de production, les non-terminaux dans
son modèle de contenu ne sont pas concurrents et
Un langage d’arbres régulier est l’ensemble des arbres
générés par une grammaire d’arbres régulièrs.
ne sont pas concurrents.
– les symboles dans
– XML Schema = grammaire à types uniques
Exemples :
est une grammaire à types uniques.
et
n’est pas une grammaire à types uniques (
sont concurrents dans la même règle)
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
18
20
Grammaires locales
Non-terminaux concurrents
Une grammaire locale est une grammaire régulière sans
non-terminaux concurrents.
Un modèle de contenu restreint la concurrence entre deux
non-terminaux et concurrents s’il n’existe pas de
séquences de non-terminaux , , et
telles que génère
et
.
Deux non-terminaux et sont concurrents entre eux s’il
existe deux règles de production
et
avec le
même terminal .
DTD=grammaire locale
Exemples :
est une grammaire locale
et
n’est pas une grammaire locale (
)
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
21
23
Grammaires avec concurrence restreinte
Fermeture
Question : Si
les grammaires d’arbres régulières sont fermés sous l’union,
l’intersection et la différence.
ne sont pas concurrents.
précédente est une grammaire avec concurrence
les grammaires locales, à types uniques et avec concurrence
restreinte sont uniquement fermées sous l’intersection.
La grammaire
restreinte.
les non-terminaux dans
grammaire
pour chaque règle de production, le modèle de contenu
restreint la concurrence entre ses non-terminaux et
et
sont deux grammaires d’arbres et
est une opération ensembliste, est-ce qu’il existe une
tel que
?
Une grammaire avec concurrence restreinte est une grammaire
régulière telle que
Exemples :
ne peut pas “prendre la
restreint la concurrence (
)
place” de
Doc -> doc (Para1* Para2*) ne restreint pas la
concurrence entre Para1 et Para2.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
22
24
Validation
Expressivité et validation
Dans une grammaire
sont associés à la même
locale, tous les éléments d’un type
règle de production
Toutes les grammaires d’arbres régulières permettent la validation
par évènement (SAX).
Exemple : Grammaires à types uniques
on cherche une règle
de type
(a) noeud = racine : il existe au maximum une règle de
production
(b) noeud <> racine : soit
la règle de production du
parent de ; on cherche la règle
tel que
apparaît dans
avec concurrence restreinte, il est possible d’identifier pour
chaque élément une seule règle de production à partir de son
parent et de ses frères de gauche.
1. entrée d’un noeud
:
à types uniques, tous les fils de type d’un élément sont
associés à la même règle de production
concurrence restreinte
type unique
locale
2. sortie d’un noeud : on compare la séquence des étiquettes
des enfants de avec .
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
25
Langages de définition de schémas XML
27
XML Schéma
Séparation entre types et éléménts (grammaire d’arbre à types
uniques)
DTD: grammaires locales
XML Schéma: grammaires à types uniques
Types complexes, abstraits et anonymes
DSD, XDuce, Relax Core, Trex: grammaires régulières
Sous-typage par extension et restriction
Contraintes d’intégrité (clés, clés étrangères)
Un schéma XML est lui même un document XML.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
26
28
Types Simples
DTD: un seul type simple (#PCDATA) et 10 types d’attributs
Schéma XML: 43 types simples
– xsd:string, xsd:byte, ...
– xsd:integer, xsd:long, xsd:float, xsd:double, ...
– xsd:boolean
XML Schema
– xsd:time, xsd:timeDuration, xsd:Date, xsd:year,
xsd:month, ...
– xsd:language, xsd:uriReference
– xsd:ID, xsd:IDREF, xsd:NMTOKEN, ...
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
29
31
Restrictions de Types Simples
Listes de Valeurs de Type Simple
Une liste de numéros de téléphone :
On peut restreindre les types simples
<xsd:simpleType name=’listeNumTél’>
<xsd:list itemType=’numTél’/>
</xsd:simpleType>
par leur longueur (length, minLength, maxLength)
(chaînes de caractères ou listes)
Une liste de cinq numéros de téléphone (restriction du type
précédent) :
par des motifs (chaînes de caractères),
par énumération,
<xsd:simpleType name=’cinqNumTél’>
<xsd:restriction base=’listNumTél’>
<xsd:length value=’5’/>
</xsd:restriction>
</xsd:simpleType>
par des intervalles (maxInclusive, maxExclusive,
minInclusive, minExclusive) et
autres (precision, scale, encoding, period,
duration).
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
30
32
Restriction de Types Simples par Motifs
Numéro de téléphone: +33-(0)-1-34-45-67-89
DTD: #PCDATA
Union de Types Simples
Un numéro de téléphone Européen est soit un numéro français, un
numéro allement, ...
Grammaire d’arbres :
Schéma XML: Similaire aux expressions régulières de Perl
<xsd:simpleType name=’numTél’>
<xsd:restriction base=’xsd:string’>
<xsd:pattern value=’+33-(0)-\d(-\d{2}){3}’/>
</xsd:restriction>
</xsd:simpleType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
euroNumTél -> francTél | gerTél | belTél | ...
Schéma :
<xsd:simpleType name=’euroNumTél’>
<xsd:union memberTypes=’francTél
gerTél
belTél
...’/>
</xsd:simpleType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
33
35
Types Complexes
Eléments
Trois constructeurs de type:
Déclaration d’éléments:
<xsd:element name type contraintes [value]/> ou
<xsd:element ref contraintes/>
– xsd:sequence: séquence ordonnée d’éléménts
– xsd:all: séquence non-ordonnée d’éléménts
– xsd:choice: choix d’éléménts (DTD: ’ ’)
Contraintes: minOccurs, maxOccurs, fixed
– xsd:group: regroupement (DTD: ’(...)’).
Exemple:
<xsd:element name=’nom’
type=’xsd:string’
minOccurs=’0’
maxOccurs=’2’/>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
34
36
Attributs
Type Complexe: Exemple
Déclaration d’attributs:
<xsd:attribute name use [value]/>
Modèle de contenu DTD: (titre, année)
Use : required, optional, fixed, prohibited
<xsd:complexType name=’FilmType’>
<xsd:sequence>
<xsd:element name=’titre’ type=’xsd:string’/>
<xsd:element name=’année’ type=’xsd:year’/>
</xsd:sequence>
</xsd:complexType>
Exemple:
<xsd:attribute name=’langue’
type=’xsd:language’
optional=’true’/>
XML Schéma:
Grammaire :
FilmType -> Titre Année
Titre -> titre String
Année -> année xsd:year
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
37
39
Valeurs Nulles
Contenu Mélangé (mixed)
On distingue entre les éléments vides et les éléments avec un
contenu inconnu :
DTD: (#PCDATA | cinéma | film)*
Schéma XML:
Schéma XML :
<xsd:complexType name=’OfficielType’ mixed=’true’>
<xsd:choice minOccurs=’0’ maxOccurs=’unbounded’>
<xsd:element name=’cinema’ type=’CinemaType’ />
<xsd:element name=’film’ type=’FilmType’ />
</xsd:choice>
</xsd:complexType>
<xsd:element name=’heureFilm’
type=’xsd:time’
nullable=’true’/>
Élément XML:
<heureFilm xsi:null=’true’/>
xsi:null est défini dans l’espace de noms pour des instances
(http://www.w3.org/2000/10/XMLSchema-instance).
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
38
40
Groupes: Exemple
Extension de Types Complexes
Cinémas avec un site Web et un pays (fichier webcountry.xsd):
DTD: ((B|C)*,D)+
XML schéma:
<xsd:complexType>
<xsd:group minOccurs=’1’ maxOccurs=’unbounded’>
<xsd:sequence>
<xsd:group minOccurs=’0’ maxOccurs=’unbounded’>
<xsd:choice>
<xsd:element name=’B’ xsd:type=’xsd:string’/>
<xsd:element name=’C’ xsd:type=’xsd:string’/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:complexType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
<complexType name=’cybercinemaType’>
<complexContent>
<extension base=’officiel:cinemaType’>
<sequence>
<element name=’url’ type=’xsd:string’/>
</sequence>
</extension>
</complexContent>
</complexType>
Grammaire d’abres :
CybercinemaType -> Nom Adresse (Seance)* Url,
Nom -> nom String, Url -> url String, ...
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
41
Extension de Types Complexes
43
Restriction de Types Complexes
On définit un type spécifique pour les cinémas avec une à trois
séances (fichier seance.xsd):
Chaque occurrence de CinemaType dans le modèle de
contenu d’une règle est remplacée par
(CinemaType|CybercinemaType)
<complexType name=’séanceobligType’>
<complexContent>
<restriction base=’cinemaType’>
<complexType content=’elementOnly’>
<sequence minOccurs=’1’ maxOccurs=’3’>
<element ref=’seance’/>
</sequence>
<element name=’nom’ type=’string’/>
<element ref=’adresse’/>
</complexType>
</complexContent>
</complexType>
Le remplacement automatique peut être empeché par les
attributs block et final. Ces deux attributs peuvent prendre
comme valeurs #all ou une liste contenant les valeurs
restriction, extension et/ou substitution :
<xsd:complexType name=’CinemaType’
block=’restriction’>
...
</xsd:complexType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
42
44
Utilisation de Types Étendus
Valeur unique
On indique explicitement le type (grammaire à types uniques) :
<cinema xsi:type=’CybercinemaType’>
<nom>St André des Arts</nom>
<officiel:adresse>
<ville> Paris </ville>
<rue> rue St. André des Arts </rue>
<numéro> 13 </numéro>
</officiel:adresse>
<url>http://www.st-andré.com</url>
</cinema>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
L’attribut film_id d’un film doit être unique:
<unique name=’toto’>
<selector>film</selector>
<field>@film_id</field>
</unique>
Les valeurs des element <selector> et <field> sont des
expressions XPath.
La valeur de <field> doit être unique à l’intérieur de chaque
élément sélectionné par le sélecteur.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
45
Clés et Références
47
Exemple: Inférence de type avec Datalog
Etant donné un graphe de données et un graphe de schéma
(type) on peut se poser deux questions :
Une clé est unique (filmcli = clé):
Est-ce que
est conforme à
? (validation)
appartient à quelle classe dans
Quel noeud dans
(classification)
<key name=’filmclé’>
<selector>film</selector>
<field>@film_id</field>
</key>
?
Référence (filmref = clé etrangère):
<keyref name=’filmref’ refer=’filmclé’>
<selector>séance</selector>
<field>@ref_film</field>
</keyref>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
46
48
Exemple: Classification avec Datalog
Règles :
Si est le fils d’un élément de type Personne et de type
string, alors est de type Nom;
Si est le fils d’un élément de type Employé et de type
integer, alors est de type Sal;
Inférence de type
Si a des fils de type Nom, alors
Personne;
est un élément de type
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Si a des fils de type Nom et de type Salaire alors
élément de type Employé.
est un
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
49
51
Point-fixe maximal
Exemple: Règles Datalog
Le résultat des règles précédentes est vide dans les deux cas si on
applique la sémantique du point fixe minimal (Nom, Sal, Personne,
Employe et Root sont vides au départ)
Schéma ;
Point fixe maximal:
Nom(x) :- Personne(y), parent(x,y), string(x);
Sal(x) :- Personne(y), parent(x,y), integer(x);
Personne(x) :- Nom(y), parent(y,x);
Employe(x) :- Nom(y), parent(y,x),
Sal(z), parent(y,z);
Root(x):- Personne(y), parent(y,x);
Root(x):- Employe(y), parent(y,x);
: chaque prédicat intensionel (type) contient tous les faits
(objets) de la base ;
contient tous les faits qui peuvent être dérivé de
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
50
52
Exemple Base 1
Exemple : Deux Bases de données
Base 1 :
,
&c
"Toto"
,
,
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
=
,
,
:
123
&6
,
&5
"Lulu"
&4
"Toto"
&d
"Lulu"
,
&b
,
&3
&2
, ...
,
:
:
&a
Base 2:
&1
Base 1:
(point fixe)
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
53
55
Exemple Base 2
Base 2 :
&r1
,
person
employee
,
,
,
:
&p1
&c1
name position
,
,
:
&p2
,
person
company
employee
,
,
data
, ...
,
,
:
,
:
Simulation: Données
works_for
name
address
name position
,
,
&s0
(point fixe)
=
:
&s2
&s3
&s4
&s5
n’a pas pu être typé
le noeud
&s1
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
54
56
Simulation
Simulation: Schéma et Simulation
Schémas et données sont des graphes avec des arcs étiquettés :
schema
person
Person
company
employee
works_for
Company
addr
Une relation
est une simulation de dans
(
) si pour chaque arc
dans
et chaque pair
, il existe un arc
dans
, tel que
et
.
Root
position
name
name
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
String
String
String
&r1
&p1
&c1
&p2
&s0
&s1
&s2
&s3
&s4
&s5
Root Simulation
Person
Company
Person
String
String
String
String
String
String
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
57
Simulation: Exemple
Bibliographie: Typage XML
dans
Si
et
, alors
toujours une simulation maximale de
M. Makoto, Taxonomy of XML Schema Languages using
Formal Language Theory
:
Il peut y avoir plusieurs simulations de
59
: il existe
J. Siméon et P. Wadler, The Essence of XML
S. Abiteboul, P. Buneman, D. Suciu: Data on the Web - from
relations to semi-structured data and XML
est la
où
Un objet appartient à un concept , si
simulation maximale de dans .
vers
Site W3C: http://www.w3.org/XML/Schema
Remarque : le calcul de la simulation maximale correspond au
calcul du point fixe maximal du programme Datalog.
Articles plus théoriques sur les automates d’arbres...
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
58
Comparaison de schémas
On veut vérifier si toutes les bases de données qui sont conforme
à un schéma , sont aussi conforme à un schéma ? (
subsume/inclue ) :
, alors
et
Si
où
.
vers
, et
est conforme à
S’il existe une simulation de
, alors est conforme à .
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann

Documents pareils