XQuery

From alpha
Jump to navigation Jump to search
XQuery
Paradigmdeclarative, functional, modular
द्वारा डिज़ाइन किया गयाW3C
पहली प्रस्तुति2007
Stable release
3.1 / March 21, 2017; 7 years ago (2017-03-21)[1]
टाइपिंग अनुशासनdynamic or static,[2][3] strong
ओएसCross-platform
फ़ाइल नाम एक्सटेंशनएस.xq, .xql, .xqm, .xqy, .xquery
वेबसाइटwww.w3.org/XML/Query/
Major implementations
Many
Influenced by
XPath, SQL, XSLT

XQuery (XML क्वेरी) एक क्वेरी भाषा और कार्यात्मक प्रोग्रामिंग भाषा है जो आमतौर पर XML, टेक्स्ट के रूप में और अन्य डेटा प्रारूपों (JSON, बाइनरी डेटा, आदि) के लिए विक्रेता-विशिष्ट एक्सटेंशन के साथ संरचित और असंरचित डेटा के संग्रह को क्वेरी और परिवर्तित करती है। यह भाषा W3C के XML क्वेरी कार्य समूह द्वारा विकसित की गई है। यह कार्य XSL काम करने वाला समहू द्वारा XSLT के विकास के साथ घनिष्ठ रूप से समन्वित है; दोनों समूह XPath के लिए जिम्मेदारी साझा करते हैं, जो XQuery का एक उपसमूह है।

XQuery 1.0 23 जनवरी 2007 को W3C अनुशंसा बन गया।[4] XQuery 3.0 8 अप्रैल 2014 को W3C अनुशंसा बन गया।[5] XQuery 3.1 21 मार्च, 2017 को W3C अनुशंसा बन गया।[6]

"The mission of the XML Query project is to provide flexible query facilities to extract data from real and virtual documents on the World Wide Web, therefore finally providing the needed interaction between the Web world and the database world. Ultimately, collections of XML files will be accessed like databases."[7]

सुविधाएँ

XQuery एक कार्यात्मक, साइड इफेक्ट (कंप्यूटर विज्ञान) | साइड इफेक्ट-मुक्त, एक सरल प्रकार की प्रणाली के साथ अभिव्यक्ति-उन्मुख प्रोग्रामिंग भाषा है, जिसे किल्पेलैनेन द्वारा संक्षेपित किया गया है:[8]

All XQuery expressions operate on sequences, and evaluate to sequences. Sequences are ordered lists of items. Items can be either nodes, which represent components of XML documents, or atomic values, which are instances of XML Schema base types like xs:integer or xs:string. Sequences can also be empty, or consist of a single item only. No distinction is made between a single item and a singleton sequence. (...) XQuery/XPath sequences differ from lists in languages like Lisp and Prolog by excluding nested sequences. Designers of XQuery may have considered nested sequences unnecessary for the manipulation of document contents. Nesting, or hierarchy of document structures is instead represented by nodes and their child-parent relationships

XQuery XML दस्तावेज़ों या किसी भी डेटा स्रोत से डेटा निकालने और हेरफेर करने का साधन प्रदान करता है जिसे XML के रूप में देखा जा सकता है, जैसे संबंध का डेटाबेस [9] या कार्यालय दस्तावेज़.

XQuery में XML दस्तावेज़ के विशिष्ट भागों को संबोधित करने के लिए XPath अभिव्यक्ति सिंटैक्स का एक सुपरसेट शामिल है। यह जुड़ने के लिए SQL-जैसी FLWOR अभिव्यक्ति के साथ इसे पूरक करता है। एक FLWOR अभिव्यक्ति का निर्माण पाँच खंडों से किया गया है जिसके बाद इसका नाम रखा गया है: FOR, LET, WHERE, ORDER BY, RETURN।

भाषा नए XML दस्तावेज़ों के निर्माण की अनुमति देने वाला सिंटैक्स भी प्रदान करती है। जहां तत्व और विशेषता नाम पहले से ज्ञात हों, वहां XML-जैसे सिंटैक्स का उपयोग किया जा सकता है; अन्य मामलों में, डायनेमिक नोड कंस्ट्रक्टर के रूप में संदर्भित अभिव्यक्तियाँ उपलब्ध हैं। इन सभी निर्माणों को भाषा के भीतर अभिव्यक्ति के रूप में परिभाषित किया गया है, और इन्हें मनमाने ढंग से नेस्ट किया जा सकता है।

भाषा XQuery और XPath डेटा मॉडल (XDM) पर आधारित है जो XML दस्तावेज़ की सूचना सामग्री के ट्री-संरचित मॉडल का उपयोग करती है, जिसमें सात प्रकार के नोड्स होते हैं: दस्तावेज़ नोड्स, तत्व, विशेषताएँ, पाठ नोड्स, टिप्पणियाँ, प्रसंस्करण निर्देश और नामस्थान।

XDM सभी मानों को अनुक्रमों के रूप में भी मॉडल करता है (एक सिंगलटन मान को लंबाई का अनुक्रम माना जाता है)। अनुक्रम में आइटम या तो XML नोड्स या परमाणु मान हो सकते हैं। परमाणु मान पूर्णांक, स्ट्रिंग, बूलियन इत्यादि हो सकते हैं: प्रकारों की पूरी सूची XML स्कीमा (W3C) में परिभाषित आदिम प्रकारों पर आधारित है।

XML दस्तावेज़ों या डेटाबेस को अद्यतन करने की सुविधाएँ और पूर्ण पाठ खोज क्षमता, मूल भाषा का हिस्सा नहीं हैं, लेकिन ऐड-ऑन एक्सटेंशन मानकों में परिभाषित हैं: XQuery अद्यतन सुविधा 1.0 अद्यतन सुविधा का समर्थन करता है और XQuery और XPath पूर्ण पाठ 1.0 XML दस्तावेज़ों में पूर्ण पाठ खोज का समर्थन करता है।

XQuery 3.0 पूर्ण कार्यात्मक प्रोग्रामिंग के लिए समर्थन जोड़ता है, इसमें फ़ंक्शंस वे मान होते हैं जिन्हें हेरफेर किया जा सकता है (वेरिएबल्स में संग्रहीत किया जा सकता है, उच्च-क्रम फ़ंक्शंस में पास किया जा सकता है, और गतिशील रूप से कॉल किया जा सकता है)।

उदाहरण

नीचे दिया गया नमूना XQuery कोड शेक्सपियर के नाटक हैमलेट के प्रत्येक अंक में अद्वितीय वक्ताओं को सूचीबद्ध करता है, जो hamlet.xml में एन्कोड किया गया है।

 <html><body>
 {
   for $act in doc("hamlet.xml")//ACT
   let $speakers := distinct-values($act//SPEAKER)
   return
     <div>
       <h1>{ string($act/TITLE) }</h1>
       <ul>
       {
         for $speaker in $speakers
         return <li>{ $speaker }</li>
       }
       </ul>
     </div>
 }
 </body></html>

गणना करने के लिए सभी XQuery निर्माण अभिव्यक्ति (प्रोग्रामिंग) हैं। कोई वक्तव्य (प्रोग्रामिंग) नहीं है, भले ही कुछ कीवर्ड स्टेटमेंट-जैसे व्यवहार का सुझाव देते प्रतीत होते हैं। किसी फ़ंक्शन को निष्पादित करने के लिए, मुख्य भाग के भीतर अभिव्यक्ति का मूल्यांकन किया जाता है और उसका मान लौटाया जाता है। इस प्रकार इनपुट मान को दोगुना करने के लिए एक फ़ंक्शन लिखने के लिए, कोई बस लिखता है:

declare function local:doubler($x) { $x * 2 }

'हैलो वर्ल्ड' कहकर पूरी क्वेरी लिखने के लिए, कोई अभिव्यक्ति लिखता है:

 "Hello World"

यह शैली कार्यात्मक प्रोग्रामिंग में आम है।

अनुप्रयोग

नीचे कुछ उदाहरण दिए गए हैं कि XQuery का उपयोग कैसे किया जा सकता है:

  1. वेब सेवा में उपयोग के लिए डेटाबेस से जानकारी निकालना।
  2. XML डेटाबेस में संग्रहीत डेटा पर सारांश रिपोर्ट तैयार करना।
  3. प्रासंगिक जानकारी के लिए वेब पर पाठ्य दस्तावेज़ों को खोजना और परिणामों को संकलित करना।
  4. वेब पर प्रकाशित करने के लिए XML डेटा को XHTML में चुनना और परिवर्तित करना।
  5. एप्लिकेशन एकीकरण के लिए उपयोग किए जाने वाले डेटाबेस से डेटा खींचना।
  6. एक XML दस्तावेज़ को विभाजित करना जो एकाधिक लेन-देन का प्रतिनिधित्व करता है, कई XML दस्तावेज़ों में।

XQuery और XSLT की तुलना

दायरा

हालाँकि XQuery की शुरुआत में XML दस्तावेज़ों के बड़े संग्रह के लिए एक क्वेरी भाषा के रूप में कल्पना की गई थी, यह व्यक्तिगत दस्तावेज़ों को बदलने में भी सक्षम है। इस प्रकार, इसकी क्षमताएं XSLT के साथ ओवरलैप होती हैं, जिसे स्पष्ट रूप से इनपुट XML दस्तावेज़ों को HTML या अन्य प्रारूपों में परिवर्तित करने की अनुमति देने के लिए डिज़ाइन किया गया था।

XSLT 2.0 और XQuery मानकों को W3C के भीतर अलग-अलग कार्य समूहों द्वारा विकसित किया गया था, जहां उपयुक्त हो, एक सामान्य दृष्टिकोण सुनिश्चित करने के लिए मिलकर काम किया गया था। वे समान डेटा मॉडल (XQuery और XPath डेटा मॉडल), टाइप सिस्टम और फ़ंक्शन लाइब्रेरी साझा करते हैं, और दोनों में XPath 2.0 को उपभाषा के रूप में शामिल किया गया है।

उत्पत्ति

हालाँकि, दोनों भाषाएँ अलग-अलग परंपराओं में निहित हैं और विभिन्न समुदायों की जरूरतों को पूरा करती हैं। XSLT की कल्पना मुख्य रूप से एक स्टाइलशीट भाषा के रूप में की गई थी जिसका प्राथमिक लक्ष्य स्क्रीन पर, वेब पर (वेब टेम्पलेट के रूप में), या कागज पर मानव पाठक के लिए XML प्रस्तुत करना था। XQuery की कल्पना मुख्य रूप से SQL की परंपरा में एक डेटाबेस क्वेरी भाषा के रूप में की गई थी।

चूँकि दोनों भाषाएँ अलग-अलग समुदायों में उत्पन्न हुई हैं, XSLT अधिक मजबूत है[according to whom?] अधिक लचीली संरचना के साथ कथात्मक दस्तावेजों को संभालने में, जबकि XQuery अपने डेटा हैंडलिंग में मजबूत है (उदाहरण के लिए, रिलेशनल जॉइन करते समय)।

संस्करण

XSLT 1.0 1999 में एक अनुशंसा के रूप में सामने आया, जबकि XQuery 1.0 केवल 2007 की शुरुआत में एक अनुशंसा बन गया; परिणामस्वरूप, XSLT अभी भी अधिक व्यापक रूप से उपयोग किया जाता है। दोनों भाषाओं में समान अभिव्यंजक शक्ति है, हालांकि XSLT 2.0 में कई विशेषताएं हैं जो XQuery 1.0 से गायब हैं, जैसे समूहीकरण, संख्या और दिनांक स्वरूपण, और XML नामस्थानों पर अधिक नियंत्रण।[10][11][12] इनमें से कई सुविधाओं की योजना XQuery 3.0 के लिए बनाई गई थी।[13] किसी भी तुलना में XSLT के संस्करण को ध्यान में रखा जाना चाहिए। XSLT 1.0 और XSLT 2.0 बहुत भिन्न भाषाएँ हैं। XSLT 2.0, विशेष रूप से, मजबूत टाइपिंग और स्कीमा-जागरूकता के अपने कदम में XQuery से काफी प्रभावित हुआ है।

ताकतें और कमजोरियां

प्रयोज्यता अध्ययनों से पता चला है कि XQuery को XSLT की तुलना में सीखना आसान है, विशेष रूप से SQL जैसी डेटाबेस भाषाओं के पिछले अनुभव वाले उपयोगकर्ताओं के लिए।[14] इसका श्रेय इस तथ्य को दिया जा सकता है कि XQuery एक छोटी भाषा है जिसमें सीखने के लिए कम अवधारणाएँ हैं, और इस तथ्य के कारण कि कार्यक्रम अधिक संक्षिप्त हैं। यह भी सच है कि XQuery अधिक ऑर्थोगोनल है, इसमें किसी भी अभिव्यक्ति का उपयोग किसी भी वाक्यात्मक संदर्भ में किया जा सकता है। इसके विपरीत, XSLT एक दो-भाषा प्रणाली है जिसमें XPath अभिव्यक्तियों को XSLT निर्देशों में नेस्ट किया जा सकता है लेकिन इसके विपरीत नहीं।

XSLT वर्तमान में उन अनुप्रयोगों के लिए XQuery से अधिक मजबूत है जिनमें छोटे परिवर्तन करना शामिल है एक दस्तावेज़ (उदाहरण के लिए, सभी नोट तत्वों को हटाना)। ऐसे अनुप्रयोगों को आम तौर पर नियंत्रित किया जाता है XSLT में एक कोडिंग पैटर्न के उपयोग से जिसमें एक पहचान टेम्पलेट शामिल होता है जो सभी नोड्स को अपरिवर्तित कॉपी करता है, विशिष्ट टेम्पलेट्स द्वारा संशोधित होता है जो चयनित नोड्स को संशोधित करता है। XQuery के पास इस कोडिंग पैटर्न के बराबर कोई नहीं है, हालांकि भविष्य के संस्करणों में विकास के तहत भाषा में अद्यतन सुविधाओं का उपयोग करके ऐसी समस्याओं से निपटना संभव होगा।[15] XQuery 1.0 में गतिशील बाइंडिंग या बहुरूपता के लिए किसी भी प्रकार के तंत्र का अभाव था; XQuery 3.0 में प्रथम श्रेणी मानों के रूप में फ़ंक्शंस की शुरूआत के साथ इसका समाधान किया गया है। बड़े एप्लिकेशन लिखते समय, या विभिन्न वातावरणों में पुन: प्रयोज्य होने के लिए डिज़ाइन किए गए कोड लिखते समय इस क्षमता की अनुपस्थिति ध्यान देने योग्य होने लगती है।[citation needed] XSLT इस क्षेत्र में दो पूरक तंत्र प्रदान करता है: टेम्पलेट नियमों का गतिशील मिलान, और नियमों का उपयोग करके ओवरराइड करने की क्षमता xsl:import, जो कई अनुकूलन परतों के साथ एप्लिकेशन लिखना संभव बनाता है।

XQuery 1.0 से इन सुविधाओं की अनुपस्थिति एक जानबूझकर डिजाइन निर्णय था: इसका परिणाम यह हुआ कि XQuery स्थैतिक विश्लेषण के लिए बहुत उत्तरदायी है, जो डेटाबेस क्वेरी भाषाओं में आवश्यक अनुकूलन के स्तर को प्राप्त करने के लिए आवश्यक है। इससे संकलन समय पर XQuery कोड में त्रुटियों का पता लगाना भी आसान हो जाता है।

तथ्य यह है कि XSLT 2.0 XML सिंटैक्स का उपयोग करता है जो इसे XQuery 1.0 की तुलना में अधिक क्रियाशील बनाता है। हालाँकि, कई बड़े एप्लिकेशन प्रोसेसिंग पाइपलाइन के हिस्से के रूप में स्टाइलशीट को गतिशील रूप से पढ़ने, लिखने या संशोधित करने के लिए XSLT का उपयोग करके इस क्षमता का लाभ उठाते हैं। XML सिंटैक्स का उपयोग XSLT कोड के प्रबंधन के लिए XML-आधारित टूल के उपयोग को भी सक्षम बनाता है। इसके विपरीत, XQuery सिंटैक्स जावा (प्रोग्रामिंग भाषा) (जावा के लिए XQuery एपीआई देखें) या C शार्प (प्रोग्रामिंग भाषा)|C# जैसी पारंपरिक प्रोग्रामिंग भाषाओं में एम्बेड करने के लिए अधिक उपयुक्त है। यदि आवश्यक हो, तो XQuery कोड को XQueryX नामक XML सिंटैक्स में भी व्यक्त किया जा सकता है। XQuery कोड का XQueryX प्रतिनिधित्व अधिक जटिल है और मनुष्यों के लिए सुविधाजनक नहीं है, लेकिन इसे आसानी से XML टूल के साथ संसाधित किया जा सकता है, उदाहरण के लिए XSLT स्टाइलशीट के साथ रूपांतरित किया जा सकता है।[16][17]


विस्तार और भविष्य का कार्य

W3C एक्सटेंशन

XQuery के दो प्रमुख एक्सटेंशन W3C द्वारा विकसित किए गए थे:

दोनों XQuery 1.0 के एक्सटेंशन के रूप में अनुशंसा स्थिति तक पहुंच गए, लेकिन XQuery 3.0 के साथ काम करने के लिए उन्हें आगे ले जाने का काम संसाधनों की कमी के कारण छोड़ दिया गया था।

XQuery 3.0 पर कार्य 8 अप्रैल 2014 को एक अनुशंसा के रूप में प्रकाशित किया गया था,[19] और फरवरी 2017 तक XQuery 3.1 एक अनुशंसा है।

XQuery के लिए एक स्क्रिप्टिंग (प्रक्रियात्मक) एक्सटेंशन डिज़ाइन किया गया था, लेकिन कभी पूरा नहीं हुआ।[20][21] एक्सपाथ सामुदायिक समूह[22] XQuery और अन्य संबंधित मानकों (XPath, XSLT, XProc, और XForms) के लिए एक्सटेंशन विकसित करता है। निम्नलिखित एक्सटेंशन वर्तमान में उपलब्ध हैं:

  • पैकेजिंग सिस्टम[23]
  • फ़ाइल मॉड्यूल[24]
  • बाइनरी मॉड्यूल[25]
  • वेब अनुप्रयोग[26]


तृतीय-पक्ष एक्सटेंशन

JSONiq XQuery का एक एक्सटेंशन है जो JSON दस्तावेज़ों से डेटा निकालने और बदलने के लिए समर्थन जोड़ता है। JSONiq XQuery 3.0 का सुपरसेट है। इसे क्रिएटिव कॉमन्स लाइसेंस|क्रिएटिव कॉमन्स एट्रिब्यूशन-शेयरअलाइक 3.0 लाइसेंस के तहत प्रकाशित किया गया है।

EXQuery[27] प्रोजेक्ट पोर्टेबल XQuery एप्लिकेशन बनाने के लिए मानक विकसित करता है। वर्तमान में निम्नलिखित मानक उपलब्ध हैं:

  • रेस्टएक्सक्यू[28]


अग्रिम पठन

  • Querying XML: XQuery, XPath, and SQL/XML in context. Jim Melton and Stephen Buxton. Morgan Kaufmann, 2006. ISBN 1-55860-711-0.
  • Walmsley, Priscilla (2007). XQuery, 1st Edition. O'Reilly Media. ISBN 978-0-596-00634-1.
  • Walmsley, Priscilla (2015). XQuery, 2nd Edition. O'Reilly Media. ISBN 978-1-4919-1510-3.
  • XQuery: The XML Query Language. Michael Brundage. Addison-Wesley Professional, 2004. ISBN 0-321-16581-0.
  • XQuery from the Experts: A Guide to the W3C XML Query Language. Howard Katz (ed). Addison-Wesley, 2004. ISBN 0-321-18060-7.
  • An Introduction to the XQuery FLWOR Expression. Dr. Michael Kay (W3C XQuery Committee), 2005.


कार्यान्वयन

Overview of popular XQuery implementations
Name License Language XQuery 3.1 XQuery 3.0 XQuery 1.0 XQuery Update 1.0 XQuery Full Text 1.0
BaseX BSD license Java Yes Yes Yes Yes Yes
eXist LGPL Java Partial Partial Yes No No
MarkLogic Proprietary C++ No Partial Yes No No
Saxon HE Mozilla Public License Java Partial Partial Yes Yes No
Saxon EE Proprietary Java Yes Yes Yes Yes No
Zorba Apache License C++ No Yes Yes Yes Yes

यह भी देखें

संदर्भ

  1. "XQuery 3.1 Recommendation". 2017-03-21.
  2. "XQuery 3.1: An XML Query Language". 2017-03-21.
  3. "XQuery and Static Typing".
  4. "XML and Semantic Web W3C Standards Timeline" (PDF). 2012-02-04.
  5. "XQuery 3.0 Recommendation". 2014-04-08.
  6. "XQuery 3.1 Recommendation". 2017-03-21.
  7. W3C (2003-10-25). "cited by J.Robie".
  8. Kilpeläinen, Pekka (2012). "समस्या समाधान के लिए XQuery का उपयोग करना" (PDF). Software: Practice and Experience. 42 (12): 1433–1465. doi:10.1002/spe.1140. S2CID 15561027.
  9. "Data retrieval with XQuery". Retrieved on 18 January 2016.
  10. Kay, Michael (May 2005). "XSLT और XQuery की तुलना करना".
  11. Eisenberg, J. David (2005-03-09). "XSLT और XQuery की तुलना करना".
  12. Smith, Michael (2001-02-23). "XQuery, XSLT "ओवरलैप" पर बहस हुई".
  13. "XQuery 3.0 requirements".
  14. Usability of XML Query Languages. Joris Graaumans. SIKS Dissertation Series No 2005-16, ISBN 90-393-4065-X
  15. "XQuery Update Facility".
  16. "XML Syntax for XQuery (XQueryX)".
  17. Michael Kay. "Saxon diaries: How not to fold constants".
  18. XQuery and XPath Full Text 1.0
  19. XML Query (XQuery) 3.0
  20. XQuery Scripting Extension 1.0 Requirements
  21. XQuery 1.0 Scripting Extension
  22. EXPath Community Group
  23. Packaging System
  24. File Module
  25. Binary Module
  26. Web Applications
  27. "पोर्टेबल XQuery अनुप्रयोगों के लिए मानक". Retrieved 12 December 2013.
  28. "RESTXQ 1.0: RESTful Annotations for XQuery".


बाहरी संबंध