रीफिकेशन (कंप्यूटर विज्ञान): Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
{{Other uses|रेफिकेशन (अस्पष्टीकरण)}} | {{Other uses|रेफिकेशन (अस्पष्टीकरण)}} | ||
'''रीफिकेशन''' | '''रीफिकेशन''' वह प्रक्रिया है जिसके द्वारा [[कंप्यूटर प्रोग्राम]] के बारे में एक एब्स्ट्रेक्ट विचार को [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] में बनाए गए एक स्पष्ट [[डेटा मॉडल]] या अन्य ऑब्जेक्ट में बदल दिया जाता है। एक कंप्यूटेबल/एड्रेसेबल ऑब्जेक्ट-एक संसाधन-एक सिस्टम में एक गैर-कंप्यूटेबल/एड्रेसेबल ऑब्जेक्ट के लिए प्रॉक्सी के रूप में बनाया जाता है। रीफिकेशन के माध्यम से, कुछ ऐसा जो पहले निहित, अव्यक्त और संभवतः अव्यक्त था, स्पष्ट रूप से तैयार किया गया है और कॉन्सेप्टुअल (लॉजिकल या कम्प्यूटेशनल) परिवर्तन के लिए उपलब्ध कराया गया है। अनौपचारिक रूप से, रीफिकेशन को अधिकांशतः किसी विशेष प्रणाली के सीमा में किसी वस्तु को [[प्रथम श्रेणी का नागरिक|फर्स्ट-क्लास सिटीजन]] बनाने के रूप में संदर्भित किया जाता है। किसी सिस्टम के कुछ भाग को ''लैंग्वेज डिजाइन समय'' पर पुनरीक्षित किया जा सकता है, जो प्रोग्रामिंग लैंग्वेजो में रिफ्लेक्शन (कंप्यूटर विज्ञान) से संबंधित है। इसे ''सिस्टम डिज़ाइन समय'' पर [[चरणबद्ध शोधन|स्टेपवाइज रेफिनमेन्ट]] के रूप में प्रयुक्त किया जा सकता है। रीफिकेशन [[वैचारिक विश्लेषण|कॉन्सेप्टुअल एनालायसिस]] और ज्ञान प्रतिनिधित्व की सबसे अधिक उपयोग की जाने वाली तकनीकों में से एक है। | ||
== रिफ्लेक्टिव प्रोग्रामिंग लैंग्वेज == | == रिफ्लेक्टिव प्रोग्रामिंग लैंग्वेज == | ||
Line 15: | Line 15: | ||
* [[जावा (प्रोग्रामिंग भाषा)|जावा (प्रोग्रामिंग लैंग्वेज)]] प्रोग्रामिंग लैंग्वेज में, पुन: प्रयोज्य प्रकार उपस्तिथ हैं जो रन टाइम पर पूरी तरह से उपलब्ध हैं (अर्थात संकलन के समय उनकी जानकारी मिटाई नहीं जाती है)।<ref>[http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.7 The Java Language Specification, section 4.7], Java SE 7 Edition</ref> | * [[जावा (प्रोग्रामिंग भाषा)|जावा (प्रोग्रामिंग लैंग्वेज)]] प्रोग्रामिंग लैंग्वेज में, पुन: प्रयोज्य प्रकार उपस्तिथ हैं जो रन टाइम पर पूरी तरह से उपलब्ध हैं (अर्थात संकलन के समय उनकी जानकारी मिटाई नहीं जाती है)।<ref>[http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.7 The Java Language Specification, section 4.7], Java SE 7 Edition</ref> | ||
* [[REBOL|आरईबीओएल]] कोड को डेटा के रूप में और इसके विपरीत को दर्शाता है। | * [[REBOL|आरईबीओएल]] कोड को डेटा के रूप में और इसके विपरीत को दर्शाता है। | ||
* कई लैंग्वेज, जैसे लिस्प (प्रोग्रामिंग लैंग्वेज), [[जावास्क्रिप्ट]], और [[कर्ल (प्रोग्रामिंग भाषा)|कर्ल (प्रोग्रामिंग लैंग्वेज)]], एक <code>eval</code> या <code>evaluate</code> | * कई लैंग्वेज, जैसे लिस्प (प्रोग्रामिंग लैंग्वेज), [[जावास्क्रिप्ट]], और [[कर्ल (प्रोग्रामिंग भाषा)|कर्ल (प्रोग्रामिंग लैंग्वेज)]], एक <code>eval</code> या <code>evaluate</code> प्रक्रिया प्रदान करती हैं, वह जो लैंग्वेज इंटरप्रेटर को प्रभावी रूप से पुष्ट करती है। | ||
* प्रोलॉग के लिए [[लॉगटॉक]] फ्रेमवर्क [[तर्क प्रोग्रामिंग|लॉजिक प्रोग्रामिंग]] के संदर्भ में रीफिकेशन का पता लगाने का एक साधन प्रदान करता है। | * प्रोलॉग के लिए [[लॉगटॉक]] फ्रेमवर्क [[तर्क प्रोग्रामिंग|लॉजिक प्रोग्रामिंग]] के संदर्भ में रीफिकेशन का पता लगाने का एक साधन प्रदान करता है। | ||
* स्मॉलटॉक और [[ अभिनेता मॉडल |अभिनेता मॉडल]] ब्लॉक और संदेश भेजने की अनुमति देते हैं,<ref>{{cite web|url=http://c2.com/cgi/wiki?SmalltalkBlocksAndClosures |title=स्मॉलटॉक ब्लॉक और क्लोजर|publisher=C2.com |date=2009-10-15 |accessdate=2010-10-09}}</ref> जो लिस्प में लैम्ब्डा अभिव्यक्ति के समतुल्य हैं, और <code>thisContext</code> स्मॉलटॉक में, जो वर्तमान निष्पादन ब्लॉक का एक रीफिकेशन है। | * स्मॉलटॉक और [[ अभिनेता मॉडल |अभिनेता मॉडल]] ब्लॉक और संदेश भेजने की अनुमति देते हैं,<ref>{{cite web|url=http://c2.com/cgi/wiki?SmalltalkBlocksAndClosures |title=स्मॉलटॉक ब्लॉक और क्लोजर|publisher=C2.com |date=2009-10-15 |accessdate=2010-10-09}}</ref> जो लिस्प में लैम्ब्डा अभिव्यक्ति के समतुल्य हैं, और <code>thisContext</code> स्मॉलटॉक में, जो वर्तमान निष्पादन ब्लॉक का एक रीफिकेशन है। | ||
Line 21: | Line 21: | ||
== डेटा रीफिकेशन बनाम डेटा रेफिनमेन्ट == | == डेटा रीफिकेशन बनाम डेटा रेफिनमेन्ट == | ||
डेटा रीफिकेशन (स्टेपवाइज रेफिनमेन्ट ) में औपचारिक विनिर्देश में उपयोग किए गए [[अमूर्त डेटा प्रकार|एब्स्ट्रेक्ट डेटा टाइप्स]] | डेटा रीफिकेशन (स्टेपवाइज रेफिनमेन्ट ) में औपचारिक विनिर्देश में उपयोग किए गए [[अमूर्त डेटा प्रकार|एब्स्ट्रेक्ट डेटा टाइप्स]] का अधिक ठोस प्रतिनिधित्व खोजना सम्मिलित है। | ||
डेटा रीफ़िकेशन वियना [[वियना विकास विधि|डेवलपमेंट मेथड]] | डेटा रीफ़िकेशन वियना [[वियना विकास विधि|डेवलपमेंट मेथड]] (वीडीएम) की शब्दावली है जिसे अधिकांश अन्य लोग डेटा रेफिनमेन्ट कहते हैं। उदाहरण इच्छित कार्यान्वयन लैंग्वेज में किसी समकक्ष के बिना डेटा प्रतिनिधित्व को प्रतिस्थापित करके कार्यान्वयन की दिशा में एक पथ उठाना है, जैसे कि सेट, जिसमें एक समकक्ष होता है (जैसे कि निश्चित डोमेन वाले मैप जिन्हें सरणियों द्वारा कार्यान्वित किया जा सकता है), या कम से कम ऐसा जो समकक्ष के समीप, जैसे अनुक्रम हो। वीडीएम समुदाय परिशोधन के स्थान पर रीफिकेशन शब्द को प्राथमिकता देता है, क्योंकि इस प्रक्रिया का संबंध किसी विचार को परिष्कृत करने से अधिक उसे मूर्त रूप देने से है।<ref>[https://www.cs.tcd.ie/FME/original/FAQ/vdm/part13.html Formal Methods Europe, Frequently Asked Questions, part 13] {{webarchive|url=https://web.archive.org/web/20050312031255/http://www.cs.tcd.ie/FME/original/FAQ/vdm/part13.html |date=2005-03-12 }}.</ref> | ||
समान उपयोगों के लिए, रीफिकेशन (लैंग्वेजविज्ञान) देखें। | समान उपयोगों के लिए, रीफिकेशन (लैंग्वेजविज्ञान) देखें। | ||
== कॉन्सेप्टुअल | == कॉन्सेप्टुअल मॉडलिंग में == | ||
कॉन्सेप्टुअल | कॉन्सेप्टुअल मॉडल (कंप्यूटर विज्ञान) में रीफिकेशन का व्यापक रूप से उपयोग किया जाता है।<ref>Antoni Olivé, [http://www-pagines.fib.upc.es/~modeling/Preface.pdf Conceptual Modeling of Information Systems], Springer Verlag, 2007.</ref> किसी संबंध को साकार करने का अर्थ है उसे एक इकाई के रूप में देखना है। किसी संबंध की पुष्टि करने का उद्देश्य उसे स्पष्ट करना है, जब उसमें अतिरिक्त जानकारी जोड़ने की आवश्यकता होती है। संबंध के प्रकार <code>IsMemberOf(member:Person, Committee) पर विचार करें.</code> <code>IsMemberOf</code>का एक उदाहरण एक संबंध है जो इस तथ्य का प्रतिनिधित्व करता है कि व्यक्ति एक समिति का सदस्य है। नीचे दिया गया चित्र जनसंख्या का एक उदाहरण दिखाता है<code>IsMemberOf</code>'' relationship in tabular form. Person ''P1'' is a member of committees ''C1'' and ''C2''. Person ''P2'' is a member of committee ''C1'' only का सदस्य है.''[[File:reification example1.png|500px|thumb|उदाहरण जनसंख्या <code>IsMemberOf</code> सारणीबद्ध रूप में संबंध. व्यक्ति P1 समिति C1 और C2 का सदस्य है। व्यक्ति P2 केवल समिति C1 का सदस्य है।]] | ||
चूंकि, उसी तथ्य को एक इकाई के रूप में भी देखा जा सकता है। किसी संबंध को एक इकाई के रूप में देखते हुए, कोई कह सकता है कि इकाई संबंध को प्रतिबिंबित करती है। इसे संबंध का रीफिकेशन कहा जाता है। किसी भी अन्य इकाई की तरह, यह एक इकाई प्रकार का उदाहरण होना चाहिए। वर्तमान उदाहरण में, इकाई प्रकार का नाम <code>Membership</code>दिया गया है. के प्रत्येक उदाहरण के लिए<code>IsMemberOf</code>, और इसके विपरीत इसका और केवल एक ही उदाहरण <code>Membership</code>है। अब, मूल संबंध में और अधिक जानकारी जोड़ना संभव हो गया है। उदाहरण के रूप | चूंकि, उसी तथ्य को एक इकाई के रूप में भी देखा जा सकता है। किसी संबंध को एक इकाई के रूप में देखते हुए, कोई कह सकता है कि इकाई संबंध को प्रतिबिंबित करती है। इसे संबंध का रीफिकेशन कहा जाता है। किसी भी अन्य इकाई की तरह, यह एक इकाई प्रकार का उदाहरण होना चाहिए। वर्तमान उदाहरण में, इकाई प्रकार का नाम <code>Membership</code>दिया गया है. के प्रत्येक उदाहरण के लिए<code>IsMemberOf</code>, और इसके विपरीत इसका और केवल एक ही उदाहरण <code>Membership</code>है। अब, मूल संबंध में और अधिक जानकारी जोड़ना संभव हो गया है। उदाहरण के रूप से हम इस तथ्य को व्यक्त कर सकते हैं कि व्यक्ति p1 को व्यक्ति p2 द्वारा समिति c1 का सदस्य नामित किया गया था। रिफाइंड संबंध<code>Membership</code>नए संबंध <code>IsNominatedBy(Membership, Person)</code>के स्रोत के रूप में उपयोग किया जा सकता है. | ||
संबंधित उपयोगों के लिए रीफिकेशन (ज्ञान प्रतिनिधित्व) देखें। | संबंधित उपयोगों के लिए रीफिकेशन (ज्ञान प्रतिनिधित्व) देखें। | ||
Line 43: | Line 43: | ||
[[ संसाधन विवरण रूपरेखा | रिसोर्स डिस्क्रिप्शन फ्रेमवर्क]] (आरडीएफ) और [[वेब ओन्टोलॉजी भाषा|वेब ओन्टोलॉजी लैंग्वेज]] (ओडब्ल्यूएल) जैसी [[सेमांटिक वेब]] लैंग्वेजो में, एक स्टेटमेंट बाइनरी रिलेशन है। इसका उपयोग दो व्यक्तियों या एक व्यक्ति और मूल्य को जोड़ने के लिए किया जाता है। अनुप्रयोगों को कभी-कभी अन्य आरडीएफ स्टेटमेंट का वर्णन करने की आवश्यकता होती है, उदाहरण के लिए, स्टेटमेंट कब दिए गए थे, या उन्हें किसने बनाया था जैसी जानकारी रिकॉर्ड करने के लिए, जिसे कभी-कभी उद्गम जानकारी कहा जाता है। उदाहरण के रूप से, हम किसी संबंध के गुणों का प्रतिनिधित्व करना चाह सकते हैं, जैसे कि इसके बारे में हमारी निश्चितता, किसी संबंध की गंभीरता या शक्ति, किसी संबंध की प्रासंगिकता, इत्यादि। | [[ संसाधन विवरण रूपरेखा | रिसोर्स डिस्क्रिप्शन फ्रेमवर्क]] (आरडीएफ) और [[वेब ओन्टोलॉजी भाषा|वेब ओन्टोलॉजी लैंग्वेज]] (ओडब्ल्यूएल) जैसी [[सेमांटिक वेब]] लैंग्वेजो में, एक स्टेटमेंट बाइनरी रिलेशन है। इसका उपयोग दो व्यक्तियों या एक व्यक्ति और मूल्य को जोड़ने के लिए किया जाता है। अनुप्रयोगों को कभी-कभी अन्य आरडीएफ स्टेटमेंट का वर्णन करने की आवश्यकता होती है, उदाहरण के लिए, स्टेटमेंट कब दिए गए थे, या उन्हें किसने बनाया था जैसी जानकारी रिकॉर्ड करने के लिए, जिसे कभी-कभी उद्गम जानकारी कहा जाता है। उदाहरण के रूप से, हम किसी संबंध के गुणों का प्रतिनिधित्व करना चाह सकते हैं, जैसे कि इसके बारे में हमारी निश्चितता, किसी संबंध की गंभीरता या शक्ति, किसी संबंध की प्रासंगिकता, इत्यादि। | ||
कॉन्सेप्टुअल | कॉन्सेप्टुअल मॉडलिंग अनुभाग का उदाहरण <code>URIref person:p1</code>एक विशेष व्यक्ति का वर्णन करता है , जो इसका सदस्य है और<code>committee:c1</code>. उस विवरण से आरडीएफ ट्रिपल है | ||
<syntaxhighlight lang="sparql"> | <syntaxhighlight lang="sparql"> | ||
person:p1 committee:isMemberOf committee:c1 . | person:p1 committee:isMemberOf committee:c1 . | ||
Line 67: | Line 67: | ||
committee:membership12345Stat rdf:object committee:c1 . | committee:membership12345Stat rdf:object committee:c1 . | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ये कथन कहते हैं कि जिस संसाधन की पहचान की गई <code>URIref committee:membership12345Stat</code> आरडीएफ कथन है, कि कथन का विषय पहचाने गए संसाधन को संदर्भित करता है की<code>person:p1</code>, कथन का विधेय पहचाने गए संसाधन को संदर्भित करता है <code>committee:isMemberOf</code>, और कथन का उद्देश्य संसाधन को संदर्भित करता है <code>committee:c1</code>. यह मानते हुए कि मूल कथन वास्तव में | ये कथन कहते हैं कि जिस संसाधन की पहचान की गई <code>URIref committee:membership12345Stat</code> आरडीएफ कथन है, कि कथन का विषय पहचाने गए संसाधन को संदर्भित करता है की<code>person:p1</code>, कथन का विधेय पहचाने गए संसाधन को संदर्भित करता है <code>committee:isMemberOf</code>, और कथन का उद्देश्य संसाधन को संदर्भित करता है <code>committee:c1</code>. यह मानते हुए कि मूल कथन वास्तव में <code>committee:membership12345 पहचाना गया है</code> मूल कथन की पुनर्रचना के साथ तुलना करने से यह स्पष्ट होना चाहिए कि पुनर्रचना वास्तव में इसका वर्णन करती है। आरडीएफ रीफिकेशन शब्दावली के पारंपरिक उपयोग में सदैव इस पैटर्न में चार कथनों का उपयोग करके कथन का वर्णन करना सम्मिलित होता है। इसलिए, उन्हें कभी-कभी रीफिकेशन क्वाड भी कहा जाता है।<ref name="rdf"/> | ||
इस परिपाटी के अनुसार रीफिकेशन का उपयोग करते हुए, हम इस तथ्य को रिकॉर्ड कर सकते हैं कि<code>person:p3</code> में कथन को डेटाबेस में जोड़ा है | इस परिपाटी के अनुसार रीफिकेशन का उपयोग करते हुए, हम इस तथ्य को रिकॉर्ड कर सकते हैं कि<code>person:p3</code> में कथन को डेटाबेस में जोड़ा है | ||
Line 75: | Line 75: | ||
यह ध्यान रखना महत्वपूर्ण है कि रीफिकेशन के पारंपरिक उपयोग में, रीफिकेशन ट्रिपलों के विषय को विशेष आरडीएफ डॉक्यूमेंट में ट्रिपल के विशेष उदाहरण की पहचान करने के लिए माना जाता है, न कि कुछ इच्छनुसार रूप से ट्रिपलों में समान विषय, विधेय और वस्तु होती है। इस विशेष परिपाटी का उपयोग इसलिए किया जाता है क्योंकि रीफिकेशन का उद्देश्य रचना की डेट और स्रोत की जानकारी जैसे गुणों को व्यक्त करना है, जैसा कि पहले से दिए गए उदाहरणों में है, और इन गुणों को ट्रिपलों के विशिष्ट उदाहरणों पर प्रयुक्त करने की आवश्यकता है। | यह ध्यान रखना महत्वपूर्ण है कि रीफिकेशन के पारंपरिक उपयोग में, रीफिकेशन ट्रिपलों के विषय को विशेष आरडीएफ डॉक्यूमेंट में ट्रिपल के विशेष उदाहरण की पहचान करने के लिए माना जाता है, न कि कुछ इच्छनुसार रूप से ट्रिपलों में समान विषय, विधेय और वस्तु होती है। इस विशेष परिपाटी का उपयोग इसलिए किया जाता है क्योंकि रीफिकेशन का उद्देश्य रचना की डेट और स्रोत की जानकारी जैसे गुणों को व्यक्त करना है, जैसा कि पहले से दिए गए उदाहरणों में है, और इन गुणों को ट्रिपलों के विशिष्ट उदाहरणों पर प्रयुक्त करने की आवश्यकता है। | ||
ध्यान दें कि वर्णित ट्रिपल <code>(subject predicate object)</code> स्वयं इस तरह के रीफिकेशन क्वाड द्वारा निहित नहीं है (और यह आवश्यक नहीं है कि यह वास्तव में डेटाबेस में उपस्तिथ हो)। यह इस मैकेनिज्म | ध्यान दें कि वर्णित ट्रिपल <code>(subject predicate object)</code> स्वयं इस तरह के रीफिकेशन क्वाड द्वारा निहित नहीं है (और यह आवश्यक नहीं है कि यह वास्तव में डेटाबेस में उपस्तिथ हो)। यह इस मैकेनिज्म का उपयोग यह व्यक्त करने के लिए भी करता है कि कौन से ट्रिपल पकड़ में नहीं आते हैं। | ||
आरडीएफ में रीफिकेशन शब्दावली की शक्ति स्टेटमेंट को यूआरआईरेफ्स निर्दिष्ट करने के लिए अंतर्निहित साधनों की कमी से प्रतिबंधित है, इसलिए आरडीएफ में इस प्रकार की उत्पत्ति जानकारी व्यक्त करने के लिए, किसी को कुछ मैकेनिज्म | आरडीएफ में रीफिकेशन शब्दावली की शक्ति स्टेटमेंट को यूआरआईरेफ्स निर्दिष्ट करने के लिए अंतर्निहित साधनों की कमी से प्रतिबंधित है, इसलिए आरडीएफ में इस प्रकार की उत्पत्ति जानकारी व्यक्त करने के लिए, किसी को कुछ मैकेनिज्म (आरडीएफ के बाहर) का उपयोग करना होगा अलग-अलग आरडीएफ स्टेटमेंट के लिए यूआरआई निर्दिष्ट करें, फिर उन व्यक्तिगत स्टेटमेंट के बारे में आगे स्टेटमेंट दें, उनकी पहचान करने के लिए उनके यूआरआई का उपयोग करें।<ref name="rdf" /> | ||
=== इन टॉपिक मैप्स === | === इन टॉपिक मैप्स === | ||
एक्सटीएम टॉपिक मैप (एक्सटीएम) में, केवल एक विषय का नाम हो सकता है या किसी एसोसिएशन में भूमिका निभा सकता है। कोई किसी विषय के बारे में प्रभुत्व करने के लिए एसोसिएशन का उपयोग कर सकता है, किन्तु कोई उस दावे के बारे में सीधे रूप से प्रभुत्व नहीं कर सकता है। चूंकि, एक ऐसा विषय बनाना संभव है जो मैप में गैर-विषय निर्माण को दर्शाता है, इस प्रकार एसोसिएशन को नाम दिया जा सकता है और उसे एक विषय के रूप में माना जा सकता है।<ref>[http://www.techquila.com/practical_intro.html Practical Introduction into Topic Maps] {{webarchive|url=https://web.archive.org/web/20090203202441/http://techquila.com/practical_intro.html |date=2009-02-03 }}.</ref> | एक्सटीएम टॉपिक मैप (एक्सटीएम) में, केवल एक विषय का नाम हो सकता है या किसी एसोसिएशन में भूमिका निभा सकता है। कोई किसी विषय के बारे में प्रभुत्व करने के लिए एसोसिएशन का उपयोग कर सकता है, किन्तु कोई उस दावे के बारे में सीधे रूप से प्रभुत्व नहीं कर सकता है। चूंकि, एक ऐसा विषय बनाना संभव है जो मैप में गैर-विषय निर्माण को दर्शाता है, इस प्रकार एसोसिएशन को नाम दिया जा सकता है और उसे एक विषय के रूप में माना जा सकता है।<ref>[http://www.techquila.com/practical_intro.html Practical Introduction into Topic Maps] {{webarchive|url=https://web.archive.org/web/20090203202441/http://techquila.com/practical_intro.html |date=2009-02-03 }}.</ref> |
Revision as of 10:21, 8 December 2023
रीफिकेशन वह प्रक्रिया है जिसके द्वारा कंप्यूटर प्रोग्राम के बारे में एक एब्स्ट्रेक्ट विचार को प्रोग्रामिंग लैंग्वेज में बनाए गए एक स्पष्ट डेटा मॉडल या अन्य ऑब्जेक्ट में बदल दिया जाता है। एक कंप्यूटेबल/एड्रेसेबल ऑब्जेक्ट-एक संसाधन-एक सिस्टम में एक गैर-कंप्यूटेबल/एड्रेसेबल ऑब्जेक्ट के लिए प्रॉक्सी के रूप में बनाया जाता है। रीफिकेशन के माध्यम से, कुछ ऐसा जो पहले निहित, अव्यक्त और संभवतः अव्यक्त था, स्पष्ट रूप से तैयार किया गया है और कॉन्सेप्टुअल (लॉजिकल या कम्प्यूटेशनल) परिवर्तन के लिए उपलब्ध कराया गया है। अनौपचारिक रूप से, रीफिकेशन को अधिकांशतः किसी विशेष प्रणाली के सीमा में किसी वस्तु को फर्स्ट-क्लास सिटीजन बनाने के रूप में संदर्भित किया जाता है। किसी सिस्टम के कुछ भाग को लैंग्वेज डिजाइन समय पर पुनरीक्षित किया जा सकता है, जो प्रोग्रामिंग लैंग्वेजो में रिफ्लेक्शन (कंप्यूटर विज्ञान) से संबंधित है। इसे सिस्टम डिज़ाइन समय पर स्टेपवाइज रेफिनमेन्ट के रूप में प्रयुक्त किया जा सकता है। रीफिकेशन कॉन्सेप्टुअल एनालायसिस और ज्ञान प्रतिनिधित्व की सबसे अधिक उपयोग की जाने वाली तकनीकों में से एक है।
रिफ्लेक्टिव प्रोग्रामिंग लैंग्वेज
प्रोग्रामिंग लैंग्वेजो के संदर्भ में, रीफिकेशन वह प्रक्रिया है जिसके द्वारा एक उपयोगकर्ता प्रोग्राम या प्रोग्रामिंग लैंग्वेज का कोई भी भाग जो अनुवादित प्रोग्राम और रन-टाइम सिस्टम में निहित था, लैंग्वेज में ही व्यक्त किया जाता है। यह प्रक्रिया इसे प्रोग्राम को उपलब्ध कराती है, जो सामान्य डेटा के रूप में इन सभी भागो का निरीक्षण कर सकता है। रिफ्लेक्शन (कंप्यूटर विज्ञान) में, रीफ़िकेशन डेटा संबंधित रीइफ़ाइड भाग से कारणात्मक रूप से जुड़ा होता है, जैसे कि उनमें से एक में रीफिकेशन दूसरे को प्रभावित करता है। इसलिए, रीफिकेशन डेटा सदैव संबंधित पुनरीक्षित भाग का एक विश्वसनीय प्रतिनिधित्व होता है . अधिकांशतः कहा जाता है कि रीफ़िकेशन डेटा को प्रथम श्रेणी की वस्तु बना दिया जाता है. रीफिकेशन, कम से कम आंशिक रूप से, वर्तमान में कई लैंग्वेजो से अनुभव किया गया है: प्रारंभिक लिस्प (प्रोग्रामिंग लैंग्वेज) और वर्तमान प्रोलॉग में, प्रोग्राम को डेटा के रूप में माना गया है, चूंकि कारण संबंध को अधिकांशतः प्रोग्रामर की उत्तरदाई पर छोड़ दिया गया है। स्मॉलटॉक-80 में, स्रोत पाठ से बाइटकोड तक कंपाइलर लैंग्वेज के पहले कार्यान्वयन के बाद से रन-टाइम सिस्टम का भाग रहा है।[1]
- सी (प्रोग्रामिंग लैंग्वेज) मेमोरी एड्रेस के निम्न-स्तरीय विवरण को दर्शाता है। कई प्रोग्रामिंग लैंग्वेज डिज़ाइन कंपाइलर और रन-टाइम सिस्टम में मेमोरी आवंटन के विवरण को समाहित करते हैं। सी प्रोग्रामिंग लैंग्वेज के डिज़ाइन में, मेमोरी एड्रेस को संशोधित किया गया है और यह अन्य लैंग्वेज निर्माणों द्वारा सीधे परिवर्तन के लिए उपलब्ध है। उदाहरण के लिए, मेमोरी-मैप्ड डिवाइस ड्राइवर को कार्यान्वित करते समय निम्नलिखित कोड का उपयोग किया जा सकता है। बफ़र पॉइंटर मेमोरी एड्रेस 0xB8000000 के लिए एक प्रॉक्सी है।
char* buffer = (char*) 0xB8000000; buffer[0] = 10;
- लैम्ब्डा-कैलकुलस पर आधारित कार्यात्मक प्रोग्रामिंग लैंग्वेजं लैम्ब्डा कैलकुलस लैम्ब्डा कैलकुलस और प्रोग्रामिंग लैंग्वेजो के रूप में एक प्रक्रिया एब्स्ट्रेक्ट और प्रक्रिया अनुप्रयोग की अवधारणा को पुष्ट करती हैं।
- स्कीम (प्रोग्रामिंग लैंग्वेज) प्रोग्रामिंग लैंग्वेज निरंतरता (लगभग, कॉल स्टैक) को दर्शाती है।
- |सी# में (प्रोग्रामिंग लैंग्वेज), लैंग्वेज की प्रथम श्रेणी की विशेषता के रूप में जेनेरिक के रूप में पैरामीट्रिक बहुरूपता को कार्यान्वित करने के लिए रीफिकेशन का उपयोग किया जाता है।
- जावा (प्रोग्रामिंग लैंग्वेज) प्रोग्रामिंग लैंग्वेज में, पुन: प्रयोज्य प्रकार उपस्तिथ हैं जो रन टाइम पर पूरी तरह से उपलब्ध हैं (अर्थात संकलन के समय उनकी जानकारी मिटाई नहीं जाती है)।[2]
- आरईबीओएल कोड को डेटा के रूप में और इसके विपरीत को दर्शाता है।
- कई लैंग्वेज, जैसे लिस्प (प्रोग्रामिंग लैंग्वेज), जावास्क्रिप्ट, और कर्ल (प्रोग्रामिंग लैंग्वेज), एक
eval
याevaluate
प्रक्रिया प्रदान करती हैं, वह जो लैंग्वेज इंटरप्रेटर को प्रभावी रूप से पुष्ट करती है। - प्रोलॉग के लिए लॉगटॉक फ्रेमवर्क लॉजिक प्रोग्रामिंग के संदर्भ में रीफिकेशन का पता लगाने का एक साधन प्रदान करता है।
- स्मॉलटॉक और अभिनेता मॉडल ब्लॉक और संदेश भेजने की अनुमति देते हैं,[3] जो लिस्प में लैम्ब्डा अभिव्यक्ति के समतुल्य हैं, और
thisContext
स्मॉलटॉक में, जो वर्तमान निष्पादन ब्लॉक का एक रीफिकेशन है। - होमोइकोनिक के वाक्य-विन्यास को एक एब्स्ट्रेक्ट सिंटेक्स ट्री के रूप में दर्शाती हैं, जो सामान्यतः
eval
के साथ मिलकर होता है।
डेटा रीफिकेशन बनाम डेटा रेफिनमेन्ट
डेटा रीफिकेशन (स्टेपवाइज रेफिनमेन्ट ) में औपचारिक विनिर्देश में उपयोग किए गए एब्स्ट्रेक्ट डेटा टाइप्स का अधिक ठोस प्रतिनिधित्व खोजना सम्मिलित है।
डेटा रीफ़िकेशन वियना डेवलपमेंट मेथड (वीडीएम) की शब्दावली है जिसे अधिकांश अन्य लोग डेटा रेफिनमेन्ट कहते हैं। उदाहरण इच्छित कार्यान्वयन लैंग्वेज में किसी समकक्ष के बिना डेटा प्रतिनिधित्व को प्रतिस्थापित करके कार्यान्वयन की दिशा में एक पथ उठाना है, जैसे कि सेट, जिसमें एक समकक्ष होता है (जैसे कि निश्चित डोमेन वाले मैप जिन्हें सरणियों द्वारा कार्यान्वित किया जा सकता है), या कम से कम ऐसा जो समकक्ष के समीप, जैसे अनुक्रम हो। वीडीएम समुदाय परिशोधन के स्थान पर रीफिकेशन शब्द को प्राथमिकता देता है, क्योंकि इस प्रक्रिया का संबंध किसी विचार को परिष्कृत करने से अधिक उसे मूर्त रूप देने से है।[4]
समान उपयोगों के लिए, रीफिकेशन (लैंग्वेजविज्ञान) देखें।
कॉन्सेप्टुअल मॉडलिंग में
कॉन्सेप्टुअल मॉडल (कंप्यूटर विज्ञान) में रीफिकेशन का व्यापक रूप से उपयोग किया जाता है।[5] किसी संबंध को साकार करने का अर्थ है उसे एक इकाई के रूप में देखना है। किसी संबंध की पुष्टि करने का उद्देश्य उसे स्पष्ट करना है, जब उसमें अतिरिक्त जानकारी जोड़ने की आवश्यकता होती है। संबंध के प्रकार IsMemberOf(member:Person, Committee) पर विचार करें.
IsMemberOf
का एक उदाहरण एक संबंध है जो इस तथ्य का प्रतिनिधित्व करता है कि व्यक्ति एक समिति का सदस्य है। नीचे दिया गया चित्र जनसंख्या का एक उदाहरण दिखाता हैIsMemberOf
relationship in tabular form. Person P1 is a member of committees C1 and C2. Person P2 is a member of committee C1 only का सदस्य है.
चूंकि, उसी तथ्य को एक इकाई के रूप में भी देखा जा सकता है। किसी संबंध को एक इकाई के रूप में देखते हुए, कोई कह सकता है कि इकाई संबंध को प्रतिबिंबित करती है। इसे संबंध का रीफिकेशन कहा जाता है। किसी भी अन्य इकाई की तरह, यह एक इकाई प्रकार का उदाहरण होना चाहिए। वर्तमान उदाहरण में, इकाई प्रकार का नाम Membership
दिया गया है. के प्रत्येक उदाहरण के लिएIsMemberOf
, और इसके विपरीत इसका और केवल एक ही उदाहरण Membership
है। अब, मूल संबंध में और अधिक जानकारी जोड़ना संभव हो गया है। उदाहरण के रूप से हम इस तथ्य को व्यक्त कर सकते हैं कि व्यक्ति p1 को व्यक्ति p2 द्वारा समिति c1 का सदस्य नामित किया गया था। रिफाइंड संबंधMembership
नए संबंध IsNominatedBy(Membership, Person)
के स्रोत के रूप में उपयोग किया जा सकता है.
संबंधित उपयोगों के लिए रीफिकेशन (ज्ञान प्रतिनिधित्व) देखें।
यूनिफ़ाइड मॉडलिंग लैंग्वेज (यूएमएल) में
यूनिफ़ाइड मॉडलिंग लैंग्वेज संशोधित संबंध प्रकारों को परिभाषित करने के लिए एक एसोसिएशन क्लास निर्माण प्रदान करती है। एसोसिएशन क्लास एक एकल मॉडल तत्व है जो एक प्रकार का एसोसिएशन और एक प्रकार का क्लास दोनों है।[6] एसोसिएशन और इकाई प्रकार जो पुष्टि करता है, दोनों एक ही मॉडल तत्व हैं। ध्यान दें कि विशेषताओं को पुन: प्रमाणित नहीं किया जा सकता है।
सिमेंटिक वेब पर
आरडीएफ और ओडब्लूएल
रिसोर्स डिस्क्रिप्शन फ्रेमवर्क (आरडीएफ) और वेब ओन्टोलॉजी लैंग्वेज (ओडब्ल्यूएल) जैसी सेमांटिक वेब लैंग्वेजो में, एक स्टेटमेंट बाइनरी रिलेशन है। इसका उपयोग दो व्यक्तियों या एक व्यक्ति और मूल्य को जोड़ने के लिए किया जाता है। अनुप्रयोगों को कभी-कभी अन्य आरडीएफ स्टेटमेंट का वर्णन करने की आवश्यकता होती है, उदाहरण के लिए, स्टेटमेंट कब दिए गए थे, या उन्हें किसने बनाया था जैसी जानकारी रिकॉर्ड करने के लिए, जिसे कभी-कभी उद्गम जानकारी कहा जाता है। उदाहरण के रूप से, हम किसी संबंध के गुणों का प्रतिनिधित्व करना चाह सकते हैं, जैसे कि इसके बारे में हमारी निश्चितता, किसी संबंध की गंभीरता या शक्ति, किसी संबंध की प्रासंगिकता, इत्यादि।
कॉन्सेप्टुअल मॉडलिंग अनुभाग का उदाहरण URIref person:p1
एक विशेष व्यक्ति का वर्णन करता है , जो इसका सदस्य है औरcommittee:c1
. उस विवरण से आरडीएफ ट्रिपल है
person:p1 committee:isMemberOf committee:c1 .
दो और तथ्यों को संग्रहीत करने पर विचार करें: (i) यह रिकॉर्ड करने के लिए कि इस विशेष व्यक्ति को इस समिति में किसने नामांकित किया (सदस्यता के बारे में एक स्टेटमेंट), और (ii) यह रिकॉर्ड करने के लिए कि डेटाबेस में तथ्य किसने जोड़ा (स्टेटमेंट के बारे में एक स्टेटमेंट)।
प्रथम स्तिथि यूएमएल में उपरोक्त की तरह क्लासिकल रीफिकेशन की स्तिथि है: सदस्यता को पुनः स्थापित करें और इसकी विशेषताओं और भूमिकाओं आदि को संग्रहीत करें:
committee:Membership rdf:type owl:Class .
committee:membership12345 rdf:type committee:Membership .
committee:membership12345 committee:ofPerson person:p1 .
committee:membership12345 committee:inCommittee committee:c1 .
person:p2 committee:nominated committee:membership12345 .
इसके अतिरिक्त, आरडीएफ आरडीएफ कथनों का वर्णन करने के लिए अंतर्निहित शब्दावली प्रदान करता है। इस शब्दावली का उपयोग करते हुए किसी कथन का विवरण कथन का पुनरावलोकन कहलाता है। आरडीएफ रीफिकेशन शब्दावली rdf:Statement
, और गुण rdf:subject
, rdf:predicate
, और rdf:object में प्रकार सम्मिलित हैं
[7]
रीफिकेशन शब्दावली का उपयोग करते हुए, व्यक्ति की सदस्यता के बारे में कथन का रीफिकेशन कथन को URIref निर्दिष्ट करके दिया जाएगा जैसे कि committee:membership12345
जिससे वर्णनात्मक कथनों को इस प्रकार लिखा जा सके:
committee:membership12345Stat rdf:type rdf:Statement .
committee:membership12345Stat rdf:subject person:p1 .
committee:membership12345Stat rdf:predicate committee:isMemberOf .
committee:membership12345Stat rdf:object committee:c1 .
ये कथन कहते हैं कि जिस संसाधन की पहचान की गई URIref committee:membership12345Stat
आरडीएफ कथन है, कि कथन का विषय पहचाने गए संसाधन को संदर्भित करता है कीperson:p1
, कथन का विधेय पहचाने गए संसाधन को संदर्भित करता है committee:isMemberOf
, और कथन का उद्देश्य संसाधन को संदर्भित करता है committee:c1
. यह मानते हुए कि मूल कथन वास्तव में committee:membership12345 पहचाना गया है
मूल कथन की पुनर्रचना के साथ तुलना करने से यह स्पष्ट होना चाहिए कि पुनर्रचना वास्तव में इसका वर्णन करती है। आरडीएफ रीफिकेशन शब्दावली के पारंपरिक उपयोग में सदैव इस पैटर्न में चार कथनों का उपयोग करके कथन का वर्णन करना सम्मिलित होता है। इसलिए, उन्हें कभी-कभी रीफिकेशन क्वाड भी कहा जाता है।[7]
इस परिपाटी के अनुसार रीफिकेशन का उपयोग करते हुए, हम इस तथ्य को रिकॉर्ड कर सकते हैं किperson:p3
में कथन को डेटाबेस में जोड़ा है
person:p3 committee:addedToDatabase committee:membership12345Stat .
यह ध्यान रखना महत्वपूर्ण है कि रीफिकेशन के पारंपरिक उपयोग में, रीफिकेशन ट्रिपलों के विषय को विशेष आरडीएफ डॉक्यूमेंट में ट्रिपल के विशेष उदाहरण की पहचान करने के लिए माना जाता है, न कि कुछ इच्छनुसार रूप से ट्रिपलों में समान विषय, विधेय और वस्तु होती है। इस विशेष परिपाटी का उपयोग इसलिए किया जाता है क्योंकि रीफिकेशन का उद्देश्य रचना की डेट और स्रोत की जानकारी जैसे गुणों को व्यक्त करना है, जैसा कि पहले से दिए गए उदाहरणों में है, और इन गुणों को ट्रिपलों के विशिष्ट उदाहरणों पर प्रयुक्त करने की आवश्यकता है।
ध्यान दें कि वर्णित ट्रिपल (subject predicate object)
स्वयं इस तरह के रीफिकेशन क्वाड द्वारा निहित नहीं है (और यह आवश्यक नहीं है कि यह वास्तव में डेटाबेस में उपस्तिथ हो)। यह इस मैकेनिज्म का उपयोग यह व्यक्त करने के लिए भी करता है कि कौन से ट्रिपल पकड़ में नहीं आते हैं।
आरडीएफ में रीफिकेशन शब्दावली की शक्ति स्टेटमेंट को यूआरआईरेफ्स निर्दिष्ट करने के लिए अंतर्निहित साधनों की कमी से प्रतिबंधित है, इसलिए आरडीएफ में इस प्रकार की उत्पत्ति जानकारी व्यक्त करने के लिए, किसी को कुछ मैकेनिज्म (आरडीएफ के बाहर) का उपयोग करना होगा अलग-अलग आरडीएफ स्टेटमेंट के लिए यूआरआई निर्दिष्ट करें, फिर उन व्यक्तिगत स्टेटमेंट के बारे में आगे स्टेटमेंट दें, उनकी पहचान करने के लिए उनके यूआरआई का उपयोग करें।[7]
इन टॉपिक मैप्स
एक्सटीएम टॉपिक मैप (एक्सटीएम) में, केवल एक विषय का नाम हो सकता है या किसी एसोसिएशन में भूमिका निभा सकता है। कोई किसी विषय के बारे में प्रभुत्व करने के लिए एसोसिएशन का उपयोग कर सकता है, किन्तु कोई उस दावे के बारे में सीधे रूप से प्रभुत्व नहीं कर सकता है। चूंकि, एक ऐसा विषय बनाना संभव है जो मैप में गैर-विषय निर्माण को दर्शाता है, इस प्रकार एसोसिएशन को नाम दिया जा सकता है और उसे एक विषय के रूप में माना जा सकता है।[8]
एन-एरी संबंध
आरडीएफ और ओडब्लूएल जैसी सिमेंटिक वेब लैंग्वेजो में, एक संपत्ति एक द्विआधारी संबंध है जिसका उपयोग दो व्यक्तियों या एक व्यक्ति और एक मूल्य को जोड़ने के लिए किया जाता है। चूंकि, कुछ स्तिथियों में, कुछ अवधारणाओं को प्रस्तुत करने का प्राकृतिक और सुविधाजनक विधि किसी व्यक्ति को केवल एक व्यक्ति या मूल्य से अधिक से जोड़ने के लिए संबंधों का उपयोग करना है। इन संबंधों को एन-एरी संबंध कहा जाता है। उदाहरण कई व्यक्तियों के बीच संबंधों का प्रतिनिधित्व कर रहे हैं, जैसे कि एक समिति, एक व्यक्ति जो समिति का सदस्य है और अन्य व्यक्ति जिसने समिति का सदस्य बनने के लिए पहले व्यक्ति को नामांकित किया है, या एक खरीदार, एक विक्रेता, और एक वस्तु जो किसी पुस्तक की खरीद का वर्णन करते समय खरीदी गई थी।
रीफिकेशन के लिए अधिक सामान्य दृष्टिकोण n-एरी संबंध का प्रतिनिधित्व करने के लिए स्पष्ट नए वर्ग और एन नए गुणों का निर्माण करना है, जिससे n व्यक्ति को इस वर्ग के उदाहरण से जोड़ने वाले संबंध का एक उदाहरण बनाया जा सकता है। इस दृष्टिकोण का उपयोग व्यक्तिगत संबंध उदाहरण के लिए उद्गम जानकारी और अन्य गुणों का प्रतिनिधित्व करने के लिए भी किया जा सकता है।[9]
:p1
a :Person ;
:has_membership _:membership_12345 .
_:membership_12345
a :Membership ;
:committee :c1;
:nominated_by :p2 .
बनाम. उद्धरण
यह भी ध्यान रखना महत्वपूर्ण है कि यहां वर्णित रीफिकेशन अन्य लैंग्वेजो में पाए जाने वाले उद्धरण के समान नहीं है। इसके अतिरिक्त, रीफिकेशन ट्रिपल के विशेष उदाहरण और ट्रिपल द्वारा संदर्भित संसाधनों के बीच संबंध का वर्णन करता है। रीफिकेशन को सहज रूप से पढ़ा जा सकता है जैसे कि यह आरडीएफ ट्रिपल इन वस्तुओ के बारे में संवाद करता है, न कि (जैसा कि उद्धरण में है) इस आरडीएफ ट्रिपल का यह रूप है। उदाहरण के लिए, इस खंड में प्रयुक्त रीफिकेशन उदाहरण में, ट्रिपल है:
committee:membership12345 rdf:subject person:p1 .
मूल कथन के rdf:subject
का वर्णन करते हुए कहा गया है कि कथन का विषय URIref person:p1
द्वारा पहचाना गया संसाधन (व्यक्ति) है। इसमें यह नहीं बताया गया है कि कथन का विषय यूआरआईरेफ ही है (अर्थात, कुछ वर्णों से प्रारंभ होने वाली एक स्ट्रिंग), जैसा कि उद्धरण होगा।
यह भी देखें
- डेनोटेस्नल सेमेन्टिक्स
- प्रोग्रामिंग लैंग्वेजो का फॉर्मल सेमेन्टिक्स
- मेटा-सर्कुलर एवलुएटर
- मेटामॉडलिंग
- मेटाऑब्जेक्ट
- मेटाप्रोग्रामिंग
- नोर्मलिज़शन बाई इवैल्यूएशन
- ऑपरेशनल सेमेन्टिक्स
- रिफ्लेक्शन (कंप्यूटर विज्ञान)
- रिसोर्स डिस्क्रिप्शन फ्रेमवर्क
- सेल्फ-इंटरप्रेटर
- टॉपिक मैप
संदर्भ
- ↑ J. Malenfant, M. Jacques and F.-N. Demers, A Tutorial on Behavioral Reflection and its Implementation Archived 2010-05-28 at the Wayback Machine
- ↑ The Java Language Specification, section 4.7, Java SE 7 Edition
- ↑ "स्मॉलटॉक ब्लॉक और क्लोजर". C2.com. 2009-10-15. Retrieved 2010-10-09.
- ↑ Formal Methods Europe, Frequently Asked Questions, part 13 Archived 2005-03-12 at the Wayback Machine.
- ↑ Antoni Olivé, Conceptual Modeling of Information Systems, Springer Verlag, 2007.
- ↑ Unified Modeling Language, UML superstructure, Object Management Group, 2007-11-02.
- ↑ 7.0 7.1 7.2 "आरडीएफ प्राइमर". W3.org. Retrieved 2010-10-09.
- ↑ Practical Introduction into Topic Maps Archived 2009-02-03 at the Wayback Machine.
- ↑ "W3C Defining N-ary relations on Semantic Web". W3.org. Retrieved 2010-10-09.