XML – QL : A Query Language for XML
http://www.w3c.org/TR/NOTE-xml-ql/ (19 Août 1998)
DEA IA & OC (Université Paris VIII)
Bases de données
3. Le regroupement avec des interrogations imbriquées
Comme le résultat d’une requête XML-QL est un document XML, il est possible de réaliser des
requêtes imbriquées. Cela consiste a restreindre un premier domaine et à le soumettre à une autre interrogation
pour, ensuite, réaliser des regroupements d’informations autour d’une donnée commune.
4. Jointure et Identité des éléments, IDs et IDREFs
Dans un document XML, la jointure est réalisée par la correspondance pour une même variable d’une
même valeur dans deux sélections. Pour faciliter la jointure, il existe deux types d’attribut (ID et IDREF). Le
type d’attribut ID permet d’attribuer un identifiant unique à un objet (un nœud ou un attribut). Le type d’attribut
IDREF permet de lier deux objets entre eux en faisant référence dans cet attribut à l’identifiant d’un objet
existant et définit par le type d’attribut ID.
5. Création d’identité d’éléments (ID=Fonction($a1, … $a2))
Dans le cas du résultat d’une requête XML-QL, il est parfois nécessaire d’identifier les objets créés. Il
existe, pour cela, un procédé qui consiste à attribuer un identifiant unique à chaque objet identifié par la suite
d’arguments $a1, … $a2 regroupé sous l’identifiant « Fonction ».
Ex : PersonID($Nom,$Prenom) attribue un identifiant unique à chaque paire distincte (Nom,Prenom)
regroupé sous le concept « PersonID ».
INSEEID($Numero_securite) attribut un identifiant unique à chaque N° INSEE différent
regroupé sous le concept « INSEEID ».
6. Jointure externe et fonction de Skolémisation ( … { <Requête> } … )
Dans le langage SQL, les jointures externes permettent d’exprimer la possibilité de faire des jointures
entre deux tables pouvant éventuellement ne pas satisfaire la condition de jointure. Cette fonctionnalité peut
s’avérer également très utile dans une requête XML-QL, surtout si les données proviennent de sources
différentes. Pour cela, il faut définir une requête XML-QL entre accolade « {» et « } ».
7. Tri des données (ORDER-BY .. [ASCENDING | DESCENDING])
Le tri s’applique uniquement sur des valeurs de champs. Le tri est soit croissant (par défaut), soit
décroissant. 8. « Regular path expressions » ou Expressions régulières d’un chemin
La nouveauté de ce langage, par rapport à SQL, est sa capacité à interroger sur des champs ou des
nœuds dont le nom n’est pas précisé ou dont l’accès répond lui même à un critère de sélection. Il est alors
possible de décrire sous forme d’expressions régulières (Cf. GREP) le chemin décrivant le nœud ou le champ à
accéder.
Ex : <part+.(subpart|component.piece)>
<part><subpart></></> , <part><part><subpart></></></> ou <part><component><piece></></></>
ou tout sous-arbre de nœud <part> contenant un attribut <subpart> ou un nœud <component> avec un
attribut <piece>
9. Définition de fonctions (FUNCTION … END)
Un document XML peut lui-même contenir une ou plusieurs requêtes XML-QL (définition par
extension). Un fichier DTD peut contenir aussi des fonctions (ou des macros) permettant de factoriser certaines
opérations d’extraction d’informations.
C. Avantages
Un tel langage offre la possibilité d’effectuer des interrogations sur des fichiers XML d’origines
différentes (données ou structures). Le résultat d’une requête reste un document XML, éventuellement,
réutilisable dans une autre requête.
Nous stockons dans une base de données au format XML que les informations utiles (les champs vides
peuvent être omis) et les relations de type pére-fils sont matérialisées par une sous-structure d’un objet (cela
permet de gagner une jointure, une colonne et une clé étrangère dans une base de données relationnelles). Ces