www.wikidata.de-de.nina.az
XQuery steht fur XML Query Language und bezeichnet eine vom W3C spezifizierte Abfragesprache fur XML Datenbanken Sie dient dazu aus grossen XML Datensammlungen einzelne Teile herauszusuchen Im Gegensatz dazu wird XSLT verwendet um komplette XML Dokumente zu transformieren XQueryParadigmen XMLErscheinungsjahr 2005Entwickler World Wide Web ConsortiumAktuelle Version 3 1 21 Marz 2017 Typisierung starkWichtige Implementierungen BaseX EXist Datenbank Galax Saxon Pathfinder XQilla ZorbaStandardisierungen W3C SpezifikationenBeeinflusst von XQL XML QL QuiltBetriebssystem plattformunabhangigw3 orgXQuery benutzt eine an XSLT SQL und C angelehnte Syntax und verwendet XPath sowie XML Schema fur sein Datenmodell und seine Funktionsbibliothek Es ist aus den Sprachen XQL XML QL und Quilt hervorgegangen XQuery ist stark typisiert und Turing vollstandig An der Entwicklung wesentlich beteiligt war wie schon bei Quilt Donald D Chamberlin Inhaltsverzeichnis 1 Sprachelemente 1 1 Datenmodell 1 2 Konstruktion von XML Elementen 1 3 Sortier Funktionalitat order by 1 4 FLWOR Ausdrucke 1 5 Verbundoperationen und Gruppierungen 1 6 Vordefinierte Funktionen 1 7 Benutzerdefinierte Funktionen 1 8 Verschiedene Vergleichsoperatoren 2 Beispiele 3 Anwendung 4 Implementierungen 5 Literatur 6 Weblinks 7 EinzelnachweiseSprachelemente BearbeitenAusser Pfadausdrucken XPath gibt es eine ganze Reihe weiterer Spracheigenschaften die in den folgenden Abschnitten anhand von kurzen Beispielen erlautert werden sollen Datenmodell Bearbeiten Die grundlegende Datenstruktur in XQuery ist eine Sequenz Eine Sequenz ist eine geordnete Liste von keinem einem oder mehreren Elementen Eine Sequenz kann also auch ein XML Dokument sein Sequenzen werden in der Regel geklammert und konnen auch Duplikate enthalten Sequenzen konnen nicht verschachtelt werden Folgende Sequenzen sind identisch 1 2 1 und 1 2 1 1 und 1 lt A gt und lt A gt XQuery stellt sechs Funktionen zur Abfrage von Kardinalitaten auf Sequenzen zur Verfugung fn zero or one seq fn one or more seq fn exactly one seq fn empty seq fn exists seq fn count seq Variablen werden in XQuery mit Prafix bezeichnet Bearbeiten von Sequenzen Der Kommaoperator hangt zwei Sequenzen hintereinander Werte hinzufugen kann man mit der Funktion fn insert before Werte loschen kann man mit der Funktion fn remove Werte neu anordnen kann man mit der Funktion fn reverse Werte umsortieren kann man mit der Funktion fn unorderedKonstruktion von XML Elementen Bearbeiten Direkte XML Konstruktion mit konstanten Elementnamen direct constructors lt html gt lt head gt page head content lt head gt lt body bgcolor style bgcolor text gt page body content lt body gt lt html gt Computed constructors element html element head page head content element body attribute bgcolor style bgcolor text text page body content Zur Konstruktion von XML Daten stehen sowohl die direkte Schreibweise als XML als auch die eher deklarative Konstruktion mittels der sogenannten computed constructors zur Verfugung In beiden Fallen dienen die geschweiften Klammern zur Einbettung von beliebigen weiteren XQuery Ausdrucken in den Konstruktor Sortier Funktionalitat order by Bearbeiten Im Gegensatz zur Relationalen Algebra und zu SQL besitzen XML Datenelemente eine implizit vorgegebene Ordnung document order Alle XQuery Ausdrucke mussen diese Ordnung erhalten es sei denn dies wird im Ausdruck explizit ausgeschaltet Ordering mode unordered FLWOR Ausdrucke Bearbeiten Eine zentrale Rolle in XQuery spielen die sogenannten FLWOR Ausdrucke ausgesprochen flower FLWOR ist eine Abkurzung fur die Konstrukte for let where order by und return und kann als Analogie zu den SELECT FROM WHERE Konstrukten in SQL betrachtet werden Im Unterschied zu SQL sind FLWOR Ausdrucke allerdings case sensitive FLWOR Ausdrucke bilden Sequenzen auf Sequenzen ab vgl Datenmodell FLWOR Ausdrucke besitzen die folgende generische Form for forvar1 at posvar1 in lt Expr gt forvar2 at posvar2 in lt Expr gt let letvar1 lt Expr gt letvar2 lt Expr gt where lt BoolExpr gt order by lt Expr gt ascending descending return lt Expr gt Hierbei steht lt Expr gt fur beliebige andere XQuery Ausdrucke und lt BoolExpr gt fur einen Ausdruck vom Typ boolean Die for Konstrukte binden ihre Variablen forvar1 forvar2 sequentiell an je einen Wert aus den Bindungssequenzen lt Expr gt Uber das Schlusselwort at kann die Position der vorherstehenden Variable in der lt Expr gt Sequenz an eine Positionsvariable gebunden werden wobei die Nummerierung bei 1 beginnt Im Unterschied dazu binden die let Konstrukte ihre Variablen letvar1 letvar2 an das gesamte Ergebnis des assoziierten Ausdrucks Die sich ergebende Tupelfolge beinhaltet alle moglichen Kombinationen von Variablenbindungen die sich aus der Belegung der for und let Variablen bilden lassen Das where Konstrukt dient zur Eliminierung unerwunschter Tupel Sinnvollerweise nimmt sein boolescher Ausdruck Bezug auf mindestens eine der in den for und let Konstrukten gebundenen Variablen Das Gleiche gilt fur das order by Konstrukt das zum Sortieren der Tupel dient Im return Konstrukt werden schliesslich die Variablen von Interesse zuruckgegeben moglicherweise eingebettet in direkt oder indirekt konstruierte Elemente In komplexeren Fallen werden FLWOR Ausdrucke auch geschachtelt das bedeutet dass an der Stelle von jedem Vorkommen von lt Expr gt wiederum ein beliebiger FLWOR Ausdruck stehen kann Das nachfolgende Beispiel veranschaulicht die Verwendung von for und let Der for Teil des Ausdrucks selektiert alle Absatze innerhalb einer HTML Seite lt p gt Elemente Im let Teil wird fur jeden Paragraph mit Hilfe von vordefinierten Funktionen die Zahl der Worte ermittelt Anschliessend werden alle nicht leeren Paragraphen Wortzahl gt 0 um eine Grossenangabe erweitert und ausgegeben for par in page p let words fn count fn tokenize par content n t where words gt 0 return lt p gt par content lt br gt Size words lt p gt Zu beachten ist bei diesem Ausdruck dass for und let Teil abhangig voneinander sind die im for Teil deklarierte Variable par wird im let Teil verwendet Fur die Auswertung bedeutet dies dass der let Teil fur jede Belegung der Variable par neu ausgewertet werden muss Verbundoperationen und Gruppierungen Bearbeiten Verbundoperationen oder engl Joins bezeichnen eine Mengenoperation bestehend aus der Bildung eines kartesischen Produktes zweier Eingabemengen und einer nachfolgenden Selektion vergl Relationale Algebra Im Beispiel des vorherigen Abschnitts zu FLWOR Ausdrucken ist bereits eine solche Verbundoperation gezeigt Die Bindungen der in den for und let Teilen deklarierten Variablen bilden die jeweiligen Eingabemengen auf deren kartesisches Produkt die Selektionsbedingungen des where Teils angewandt werden Da Selektionsbedingungen sowohl im where Teil des Ausdrucks als auch innerhalb der for und let Teile in Subausdrucken auftreten konnen ist vor der Auswertung eines Ausdrucks eine Normalisierung notwendig Vordefinierte Funktionen Bearbeiten Zur Berechnung arithmetischer Gleichungen sowie Datumsberechnungen sowie zur Bearbeitung von Sequenzen im Datenmodell Benutzerdefinierte Funktionen Bearbeiten Mittels declare function konnen benutzerdefinierte Funktionen deklariert werden Die allgemeine Form sieht folgendermassen aus declare function namespace funktionsname parameter1 as datentyp1 parameter2 as datentyp2 as ruckgabedatentyp lt XQuery Ausdruck gt Funktionen konnen andere Funktionen und sich selbst rekursiv aufrufen damit ist XQuery Turing vollstandig Verschiedene Vergleichsoperatoren Bearbeiten XQuery kennt zwei Typen von Vergleichsfunktionen wertqualifizierend oder existenzqualifizierend Die wertqualifizierenden Operatoren ahneln den ublichen Operatoren aus anderen Programmiersprachen Folgende Operatoren sind definiert eq Pruft auf Gleichheit equal ne Pruft auf Ungleichheit not equal lt Pruft auf Kleiner less than gt Pruft auf Grosser Greater than le Pruft auf Kleiner Gleich Less or equal ge Pruft auf Grosser Gleich Greater or equal Die ublichen Vergleichsoperatoren lt gt lt gt fuhren einen existenziellen Vergleich durch Dabei konnen links und rechts des Operators Sequenzen stehen So ist der Ausdruck seq1 OP seq2 genau dann wahr wenn ein Element e1 aus seq1 und ein e2 aus seq2 existieren mit e1 OP e2 wobei OP einer der Operatoren lt gt lt oder gt ist So ist 1 2 gt 3 0 wahr da 1 gt 0 ist Beispiele BearbeitenZahlen aller question XML Elemente im Quelldokument fn count question Komplexeres Beispiel Auflisten aller Fragen aller Dokumente einer Galerie fur KEduca die weniger als zwei Antworten haben lt noanswerquestions gt for s in fn doc lpi101 edugallery server address for d in fn doc s count question true false lt 1 return lt doc src s gt d question count true false lt 1 lt doc gt lt noanswerquestions gt Ein weiteres Beispiel zeigt die Moglichkeit der indirekten Umstrukturierung durch XQuery Quell Dokument lt xml version 1 0 encoding ISO 8859 1 gt lt partlist gt lt part partid 0 name car gt lt part partid 1 partof 0 name engine gt lt part partid 2 partof 0 name door gt lt part partid 3 partof 1 name piston gt lt part partid 4 partof 2 name window gt lt part partid 5 partof 2 name lock gt lt part partid 10 name skateboard gt lt part partid 11 partof 10 name board gt lt part partid 12 partof 10 name wheel gt lt part partid 20 name canoe gt lt partlist gt Ziel Dokument lt parttree gt lt part partid 0 name car gt lt part partid 1 name engine gt lt part partid 3 name piston gt lt part gt lt part partid 2 name door gt lt part partid 4 name window gt lt part partid 5 name lock gt lt part gt lt part gt lt part partid 10 name skateboard gt lt part partid 11 name board gt lt part partid 12 name wheel gt lt part gt lt part partid 20 name canoe gt lt parttree gt Losung in XQuery declare function local one level p as node as node lt part partid p partid name p name gt for s in doc data parts data xml part where s partof p partid return local one level s lt part gt lt parttree gt for p in doc data parts data xml part empty partof return local one level p lt parttree gt Anwendung BearbeitenAufgrund der Wichtigkeit von XML und historisch bedingt hoher Datenbestande in relationalen Datenbanken wurde von der ISO eine Erweiterung des SQL Standards namens SQL XML entwickelt um die Moglichkeiten von XML und SQL zu kombinieren Als Abfragesprache zur Abfrage von XML Daten im Rahmen der SQL Funktion XMLQuery wurde XQuery definiert 1 Implementierungen BearbeitenBaseX Open Source XQuery 3 1 XQuery Full Text 1 0 XQuery Update 1 0 eXist Open Source XQuery 3 0 XQuery Update 1 0 Saxon Open Source und kommerziell XQuery 3 1 XQuery Update 1 0 Sirix Open Source XQuery 1 0 und XQuery Update 1 0 auf Basis von Brackit xqerl Open Source XQuery 3 1 XQuery Update 3 0 XQilla Open Source XPath 2 0 XQuery Update 1 0 Zorba Open Source XQuery 3 0 XQuery Full Text 1 0 XQuery Update 1 0 XQuery Test Suite Results Konformitat mit XQuery 1 0Literatur BearbeitenPriscilla Wamsley XQuery O Reilly Media Beijing 2007 ISBN 978 0 596 00634 1 Margit Becher XML DTD XML Schema XPath XQuery XSLT XSL FO SAX DOM W3L Verlag Witten 2009 ISBN 978 3 937137 69 8 Weblinks Bearbeiten nbsp Wiktionary XQuery Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen XQuery Spezifikation XQuery Use Cases Anwendungsgebiete XQuery Update Facility Ausfuhrliche Einfuhrung in XQueryEinzelnachweise Bearbeiten Michael Wagner SQL XML 2006 Evaluierung der Standardkonformitat ausgewahlter Datenbanksysteme Diplomica Verlag 2010 ISBN 3 8366 9609 6 V DStandards des World Wide Web Consortiums W3C Empfehlungen ActivityPub ARIA Canonical XML CDF CSS DOM Geolocation API HTML HTML5 InkML ITS JSON LD MathML OWL P3P PLS PNG RDF RDF Schema RIF SCXML SISR SKOS SMIL SOAP SRGS SSML SVG SPARQL Timed Text Turtle VoiceXML WSDL XForms XHTML XHTML RDFa XInclude XLink XML XML Base XML Encryption XML Events XML Information Set XML Namespace XML Schema XML Signature XPath XPointer XProc XQuery XSL XSL FO XSLT Elemente nbsp Arbeitsentwurfeund Kandidaten CCXML CURIE SMIL Timesheets sXBL WICD XFrames XBL XHTML MathML SVG XMLHttpRequestAnmerkungen XAdES XFDL XHTML SMIL XUPRichtlinien Web Content Accessibility Guidelines Multimodal Interaction Activity Markup Validation ServiceInitiativen Web Accessibility Initiative Normdaten Sachbegriff GND 4737681 8 lobid OGND AKS Abgerufen von https de wikipedia org w index php title XQuery amp oldid 235813083