Terug naar de beginpaginaCentor Homepage

XQuery in vogelvlucht

Oracle experimenteert met nieuwe programmeertaal

Oracle heeft een prototype ontwikkeld waarin een Java Application Programming Interface (API) voor XQuery is opgenomen — JXQI — en een interface voor de invoer van commando's. Dit prototype is een technische preview van de implementatie van XQuery, een programmeertaal die momenteel nog 'in de maak' is bij het World Wide Web Consortium. Java XQuery maakt gebruik van de kenmerkende Oracle-extensies en richt zich op 'Relational Data' en 'Experiences and Examplers' (XMP). Als experiment is een Java API in JDBC-stijl opgenomen. Ook kan XQuery worden losgelaten op SQL-zoekresultaten door gebruik te maken van de SQL( )-functie.

Oracle wil met dit project een zowel op SQL- als op XQuery-gebaseerde zoeksyntax voor XML-gegevens ontwikkelen, zodat een gemeenschappelijke onderliggende database-engine ontstaat voor Oracle. Het voert te ver om alle functies van het prototype in dit artikel te bespreken. We nodigen u uit het programma zelf eens te proberen. In het grijze kader vindt u het download adres.

Een korte zoektocht op internet wijst uit dat er niet veel boeken over XQuery zijn verschenen. Om precies te zijn één: 'Early Adopter XQuery' van uitgeverij Wrox Press Ltd. Misschien is het daarom goed eens dieper op de basisbeginselen van deze nieuwe programmeertaal in te gaan...

Wat is XQuery?
Steeds meer informatie wordt opgeslagen, uitgewisseld en gepresenteerd als XML-bestand. Dit heeft tot gevolg dat de vraag naar intelligente zoeksystemen voor XML-data is toegenomen. Eén van de sterke kanten van XML is zijn flexibele omgang met verschillende soorten informatie, afkomstig van diverse bronnen. Om die flexibiliteit uit te buiten moet een XML-zoeksysteem over functies beschikken waarmee die informatie van verschillende bronnen kan worden gevonden en geïnterpreteerd. XQuery is een taal die ervoor zorgt dat zoekopdrachten begrijpelijker en gebruiksvriendelijker worden. Het is flexibel genoeg om een breed spectrum aan XML-informatiebronnen te doorzoeken, databases en documenten inbegrepen. De Query-werkgroep binnen het World Wide Web Consortium heeft een aantal eisen opgesteld waaraan de taal moet voldoen, zodat de zoek-syntax voor mensen leesbaar is en het ook alle vereisten in zich heeft om doeltreffend XML-gegevens te doorzoeken. XQuery is ontstaan uit de XML-taal Quilt, die op zijn beurt weer functies heeft overgenomen van verschillende andere talen zoals XPath 1.0, XQL, XML-QL, SQL en OQL.
XQuery versie 1.0 vertoont sterke overeenkomsten met XPath versie 2.0. Elke valide gegevensinvoer die in beide programma's succesvol wordt uitgevoerd, zal ook in beide gevallen dezelfde resultaten opleveren. Omdat deze programmeertalen zo nauw met elkaar zijn verweven, worden verdere 'grammatica' en taalbeschrijvingen uit een gezamenlijke bron gegenereerd. Dat levert een hoge mate van consistentie op, die nog eens wordt versterkt door het feit dat de ontwerpers nauw met elkaar samenwerken.

Hoe werkt XQuery?
XQuery is afhankelijk — en sterk verweven met — de volgende specificaties:
• Het XQuery-gegevensmodel stelt de informatie in een XML-document vast, maar dat document moet wel beschikbaar zijn voor de XQuery-processor. Het gegevensmodel wordt gedefinieerd in de programma's XQuery 1.0 en XPath 2.0 Data Model.
• De statische en dynamische betekenis van symbolen (semantiek) van XQuery worden in beginsel vastgelegd in XQuery 1.0 Formal Semantics. Dit gebeurt door de volledige XQuery-taal te importeren in het vooraf gedefinieerde Formal Semantics. Het document wat hierdoor ontstaan is, komt degene die XQuery in zijn systeem wil implementeren goed van pas.
• XQuery's typesysteem is gebaseerd op XML Schema. Er wordt op het moment hard aan gewerkt dat de typesystemen van XQuery, XQuery Core en XML Schema volledig op elkaar zijn afgestemd.
• De bibliotheek waarin functies en operators zijn vastgelegd die door XQuery worden ondersteund, wordt gemaakt in XQuery 1.0 en XPath 2.0 Functions and Operators.

Basisbeginsels
De XQuery-taal voorziet in een aantal verschillende expressies die worden samengesteld uit kernwoorden, symbolen en opdrachtelementen ('operands'). Over het algemeen bestaan de opdrachtelementen van een expressie weer uit andere expressies. XQuery is een functionele taal waarmee diverse soorten expressies in elkaar kunnen worden genesteld. Maar het is ook een 'strongly-typed' programmeertaal waarin opdrachtelementen van verschillende expressies, operators en functies zich moeten conformeren aan aangeduide types.
Net als XML is XQuery een taal die gevoelig is voor kapitalen. Alle kernwoorden in XQuery worden zonder hoofdletters geschreven. De waarde van een expressie is altijd afhankelijk van de volgorde waarop het geschreven is. Zo'n 'sequence' bestaat uit een geordende verzameling van items: 'atomic values' en 'nodes'.

De afronding van de specificatie van de XQuery-taal nadert zijn einde. Het World Wide Web Consortium verwacht eind dit jaar de laatste hand eraan te kunnen leggen. Intussen experimenteert Oracle druk verder met XQuery en Java in de hoop zo snel mogelijk een doeltreffend, op SQL- en XQuery-gebaseerd zoeksysteem te ontwikkelen voor XML-data.