डेटालॉग

डेटालॉग एक घोषणात्मक प्रोग्रामिंग   तर्क प्रोग्रामिंग  लैंग्वेज है। हालांकि यह सिंटैक्टिक रूप से प्रोलॉग का सबसेट है, लेकिन सूचीपत्र आम तौर पर टॉप-डाउन मूल्यांकन मॉडल के बजाय नीचे-ऊपर का उपयोग करता है। यह अंतर प्रोलॉग से काफी भिन्न व्यवहार और गुण उत्पन्न करता है। यह अक्सर  कटौतीत्मक डेटाबेस  के लिए  पूछताछ भाषा  के रूप में उपयोग किया जाता है। डेटालॉग को डेटा एकीकरण,  संगणक संजाल,  कार्यक्रम विश्लेषण , और बहुत कुछ में समस्याओं के लिए लागू किया गया है।

उदाहरण
एक सूची कार्यक्रम में तथ्य सम्मलित होते हैं, जो ऐसे कथन होते हैं जिन्हें सत्य माना जाता है, और नियम, जो कहते हैं कि ज्ञात तथ्यों से नए तथ्यों को कैसे निकाला जाए। उदाहरण के लिए, यहां दो तथ्य दिए गए हैं, जिसका अर्थ है कि जेर्सेस ब्रुक का जनक है और ब्रुक डैमोकल्स का जनक है: नाम लोअरकेस में लिखे गए हैं क्योंकि अपरकेस अक्षर से शुरू होने वाले तार वेरिएबल्स के लिए खड़े होते हैं। यहाँ दो नियम हैं: e> प्रतीक को इस प्रकार पढ़ा जाता है मानो, और अल्पविराम को पढ़ा जाता है और , इसलिए इन नियमों का अर्थ है:
 * X, Y का पूर्वज है यदि X, Y का माता-पिता है।
 * X, Y का पूर्वज है यदि X किसी Z का माता-पिता है, और Z, Y का पूर्वज है।

एक कार्यक्रम का अर्थ उन सभी तथ्यों के समूह के रूप में परिभाषित किया जाता है, जिन्हें प्रारंभिक तथ्यों और नियमों का उपयोग करके निकाला जा सकता है। इस कार्यक्रम का अर्थ निम्नलिखित तथ्यों द्वारा दिया गया है: कुछ डेटालॉग कार्यान्वयन सभी संभावित तथ्यों को नहीं निकालते हैं, बल्कि प्रश्नों का उत्तर देते हैं: यह क्वेरी पूछती है: वे सभी X कौन हैं जो xerces के पूर्वज हैं? इस उदाहरण के लिए, यह ब्रुक और डैमोकल्स लौटाएगा।

संबंध का डेटाबेस से तुलना
डेटालॉग का गैर-पुनरावर्ती सबसेट संबंधपरक डेटाबेस, जैसे SQL के लिए क्वेरी भाषाओं से निकटता से संबंधित है। Datalog, संबंधपरक बीजगणित और SQL अवधारणाओं के बीच निम्न तालिका मानचित्र:

अधिक औपचारिक रूप से, गैर-पुनरावर्ती डेटालॉग संयोजक प्रश्नों के संघों, या समकक्ष, निषेध-मुक्त संबंधपरक बीजगणित के सटीक रूप से मेल खाता है।

सिंटेक्स
एक सूची कार्यक्रम में नियमों की एक सूची होती है (हॉर्न खंड)। यदि निरंतर और चर क्रमशः स्थिरांक और चर के दो गणनीय सेट सेट हैं और संबंध विधेय चर का एक गणनीय सेट है, तो निम्नलिखित बीएनएफ व्याकरण एक डेटालॉग प्रोग्राम की संरचना को व्यक्त करता है:

परमाणु भी कहा जाता है. के बाईं ओर परमाणु  प्रतीक कहा जाता है  नियम; दाईं ओर परमाणु हैं. प्रत्येक डेटालॉग प्रोग्राम को इस शर्त को पूरा करना चाहिए कि नियम के शीर्ष में दिखाई देने वाला प्रत्येक चर शरीर में भी प्रकट होता है (इस स्थिति को कभी-कभी कहा जाता है ). वेरिएबल नामों के लिए दो सामान्य परंपराएं हैं: वेरिएबल्स को बड़ा करना, या उन्हें एक प्रश्न चिह्न के साथ उपसर्ग करना. ध्यान दें कि इस परिभाषा के तहत, डेटालॉग करता है निषेध और न ही समुच्चय सम्मलित करें; देखना  उन निर्माणों के बारे में अधिक जानकारी के लिए।

खाली शरीर वाले नियम कहलाते हैं. उदाहरण के लिए, निम्नलिखित नियम एक तथ्य है: तथ्यों के समुच्चय को कहा जाता है या  डेटालॉग कार्यक्रम के। डाटालॉग प्रोग्राम का मूल्यांकन करके गणना किए गए टुपल्स के सेट को कहा जाता है  या.

सिंथेटिक चीनी
लॉजिक प्रोग्रामिंग के कई कार्यान्वयन उपरोक्त व्याकरण का विस्तार करते हैं ताकि बिना तथ्यों को लिखने की अनुमति मिल सके, जैसे इतना:

कुछ 0-एरी संबंधों को कोष्ठक के बिना लिखने की अनुमति भी देते हैं, जैसे:

ये केवल संक्षिप्त रूप हैं (सिंटैक्टिक चीनी); कार्यक्रम के शब्दार्थ पर उनका कोई प्रभाव नहीं है।

शब्दार्थ
डेटालॉग प्रोग्राम के शब्दार्थ के लिए तीन व्यापक रूप से उपयोग किए जाने वाले दृष्टिकोण हैं: मॉडल सिद्धांत | मॉडल-सैद्धांतिक, निश्चित बिंदु (गणित) | निश्चित-बिंदु, और प्रूफ-सैद्धांतिक शब्दार्थ | प्रूफ-सैद्धांतिक। इन तीन दृष्टिकोणों को समकक्ष सिद्ध किया जा सकता है। परमाणु कहा जाता है यदि इसका कोई उपपद चर नहीं है। सहज रूप से, प्रत्येक शब्दार्थ एक कार्यक्रम के अर्थ को परिभाषित करता है, जो कि सभी जमीनी परमाणुओं का समूह होता है, जिसे तथ्यों से शुरू करके, कार्यक्रम के नियमों से घटाया जा सकता है।

मॉडल सैद्धांतिक
एक नियम को ग्राउंड कहा जाता है यदि इसके सभी परमाणु (सिर और शरीर) ग्राउंड होते हैं। एक बुनियादी नियम आर1 दूसरे नियम R का एक जमीनी उदाहरण है2 अगर आर1 आर में सभी चर के लिए स्थिरांक के प्रतिस्थापन (तर्क) का परिणाम है2. डाटालॉग प्रोग्राम का हरब्रांड बेस सभी जमीनी परमाणुओं का सेट है जो प्रोग्राम में दिखाई देने वाले स्थिरांक के साथ बनाया जा सकता है। {{dfni|Herbrand model}el}} एक डेटालॉग प्रोग्राम का सबसे छोटा उपसमुच्चय है, जैसे कि कार्यक्रम में प्रत्येक नियम के प्रत्येक आधार उदाहरण के लिए, यदि नियम के शरीर में परमाणु सेट में हैं, तो सिर भी है। मॉडल-सैद्धांतिक शब्दार्थ कार्यक्रम के अर्थ के रूप में न्यूनतम हेरब्रांड मॉडल को परिभाषित करता है।

फिक्स्ड-पॉइंट
होने देना $I$ कार्यक्रम पी के हरब्रांड आधार का सत्ता स्थापित  हो। पी के लिए तत्काल परिणाम ऑपरेटर एक मानचित्र है $T$ से $I$ को $I$ जो एक ही चरण में कार्यक्रम के नियमों से प्राप्त किए जा सकने वाले सभी नए जमीनी परमाणुओं को जोड़ता है। कम से कम निश्चित बिंदु शब्दार्थ कम से कम निश्चित बिंदु को परिभाषित करता है $T$ कार्यक्रम का अर्थ होना; यह न्यूनतम हरब्रांड मॉडल के साथ मेल खाता है।

fixpoint सिमेंटिक्स न्यूनतम मॉडल की गणना के लिए एक एल्गोरिथ्म का सुझाव देता है: कार्यक्रम में जमीनी तथ्यों के सेट के साथ शुरू करें, फिर एक निश्चित बिंदु तक पहुंचने तक नियमों के परिणामों को बार-बार जोड़ें। इस एल्गोरिद्म को #भोला मूल्यांकन|भोला मूल्यांकन कहा जाता है।

प्रमाण-सैद्धांतिक
[[Image:Proof tree for Datalog transitive closure computation.svg|thumb|ग्राउंड एटम की व्युत्पत्ति दर्शाने वाला प्रूफ ट्री  कार्यक्रम से

]]प्रूफ-सैद्धांतिक शब्दार्थ एक डेटालॉग प्रोग्राम के अर्थ को संबंधित प्रूफ ट्री के साथ तथ्यों के सेट के रूप में परिभाषित करता है। सहज रूप से, एक प्रूफ ट्री दिखाता है कि किसी प्रोग्राम के तथ्यों और नियमों से तथ्य कैसे प्राप्त किया जाए।

किसी को यह जानने में दिलचस्पी हो सकती है कि क्या एक विशेष जमीनी परमाणु एक सूची कार्यक्रम के न्यूनतम हरब्रांड मॉडल में दिखाई देता है या नहीं, शायद बाकी मॉडल के बारे में ज्यादा परवाह किए बिना। ऊपर वर्णित प्रूफ ट्री का टॉप-डाउन रीडिंग ऐसे प्रश्नों के परिणामों की गणना के लिए एक एल्गोरिथ्म का सुझाव देता है। यह पठन एसएलडी संकल्प एल्गोरिदम को सूचित करता है, जो प्रोलॉग के मूल्यांकन के लिए आधार बनाता है।

मूल्यांकन
अलग-अलग प्रदर्शन विशेषताओं के साथ, एक सूची कार्यक्रम का मूल्यांकन करने के कई अलग-अलग तरीके हैं।

बॉटम-अप मूल्यांकन रणनीतियाँ
बॉटम-अप मूल्यांकन रणनीतियाँ कार्यक्रम में तथ्यों के साथ शुरू होती हैं और नियमों को बार-बार लागू करती हैं जब तक कि कोई लक्ष्य या प्रश्न स्थापित नहीं हो जाता है, या जब तक कार्यक्रम का पूर्ण न्यूनतम मॉडल तैयार नहीं हो जाता।

भोला मूल्यांकन
भोले-भाले मूल्यांकन में फिक्सपॉइंट शब्दार्थ को डेटालॉग प्रोग्राम के लिए प्रतिबिम्बित करता है। भोली मूल्यांकन ज्ञात तथ्यों के एक सेट का उपयोग करता है, जिसे कार्यक्रम में तथ्यों के लिए आरंभ किया जाता है। यह कार्यक्रम में प्रत्येक नियम के सभी जमीनी उदाहरणों की बार-बार गणना करके आगे बढ़ता है। यदि जमीनी उदाहरण के शरीर में प्रत्येक परमाणु ज्ञात तथ्यों के समूह में है, तो शीर्ष परमाणु को ज्ञात तथ्यों के समूह में जोड़ा जाता है। यह प्रक्रिया एक निश्चित बिंदु तक पहुंचने तक दोहराई जाती है, और कोई और तथ्य नहीं निकाला जा सकता है। सहज मूल्यांकन कार्यक्रम के संपूर्ण न्यूनतम मॉडल का निर्माण करता है।

अर्ध-भोला मूल्यांकन
अर्ध-भोले मूल्यांकन एक नीचे से ऊपर की मूल्यांकन रणनीति है जो सहज मूल्यांकन की तुलना में विषम रूप से तेज हो सकती है।

प्रदर्शन विचार
भोली और अर्ध-भोली मूल्यांकन दोनों एक निश्चित बिंदु तक पहुंचने तक ज्ञात तथ्यों के एक सेट पर बार-बार लागू करके पुनरावर्ती डेटालॉग नियमों का मूल्यांकन करते हैं। प्रत्येक पुनरावृत्ति में, नियम केवल एक चरण के लिए चलाए जाते हैं, अर्थात गैर-पुनरावर्ती रूप से। जैसा कि उल्लेख किया गया है तुलना संबंधपरक डेटाबेस के लिए, प्रत्येक गैर-पुनरावर्ती डेटालॉग नियम एक संयुग्मन क्वेरी के लिए सटीक रूप से मेल खाता है। इसलिए, संयुग्मी प्रश्नों को गति देने के लिए उपयोग की जाने वाली डेटाबेस सिद्धांत  की कई तकनीकें डेटालॉग के बॉटम-अप मूल्यांकन पर लागू होती हैं, जैसे कि


 * डेटाबेस सूचकांक चयन और डेटा संरचनाएं (हैश टेबल, बी-वृक्ष, आदि)
 * क्वेरी अनुकूलन, विशेष रूप से आदेश में सम्मलित हों
 * एल्गोरिदम से जुड़ें

इस तरह की कई तकनीकों को आधुनिक बॉटम-अप डेटालॉग इंजनों में कार्यान्वित किया जाता है जैसे सूफले (प्रोग्रामिंग लैंग्वेज) | सूफले। कुछ डेटालॉग इंजन सीधे SQL डेटाबेस को एकीकृत करते हैं।

डेटालॉग का बॉटम-अप मूल्यांकन भी समानांतर कंप्यूटिंग के लिए उत्तरदायी है। समानांतर डेटालॉग इंजन आम तौर पर दो प्रतिमानों में विभाजित होते हैं:


 * साझा-मेमोरी, मल्टी-कोर सेटिंग में, डेटालॉग इंजन एक नोड पर निष्पादित होते हैं। लॉक (कंप्यूटर विज्ञान) या लॉक-मुक्त डेटा संरचनाओं का उपयोग करके थ्रेड्स के बीच समन्वय प्राप्त किया जा सकता है। उदाहरणों में OpenMP का उपयोग करने वाले डेटालॉग इंजन सम्मलित हैं।
 * साझा-कुछ नहीं वास्तुकला |शेयर्ड-नथिंग सेटिंग में, डाटालॉग इंजन नोड्स के कंप्यूटर क्लस्टर पर निष्पादित होते हैं। ऐसे इंजन आम तौर पर हैश फंकशन के आधार पर अलग-अलग उपसमुच्चय में संबंधों को विभाजित करके संचालित करते हैं, प्रत्येक नोड पर संगणना (जुड़ना) करते हैं, और फिर नेटवर्क पर नव-निर्मित ट्यूपल्स का आदान-प्रदान करते हैं। उदाहरणों में संदेश पासिंग इंटरफ़ेस पर आधारित डेटालॉग इंजन सम्मलित हैं, अपाचे हडूप, और अपाचे स्पार्क।

टॉप-डाउन मूल्यांकन रणनीतियाँ
एसएलडी रिजॉल्यूशन डाटालॉग प्रोग्राम के लिए मजबूत और पूर्ण है।

जादू सेट
टॉप-डाउन मूल्यांकन रणनीतियाँ एक प्रश्न या लक्ष्य से शुरू होती हैं। बॉटम-अप मूल्यांकन रणनीतियाँ पूरे न्यूनतम मॉडल की गणना करके और उसके विरुद्ध क्वेरी का मिलान करके प्रश्नों का उत्तर दे सकती हैं, लेकिन यह अक्षम हो सकता है यदि उत्तर केवल पूरे मॉडल के एक छोटे उपसमुच्चय पर निर्भर करता है। जादू सेट एल्गोरिदम एक डेटालॉग प्रोग्राम और एक क्वेरी लेता है, और एक अधिक कुशल प्रोग्राम तैयार करता है जो नीचे-ऊपर मूल्यांकन का उपयोग करते हुए क्वेरी के समान उत्तर की गणना करता है। मैजिक सेट एल्गोरिथम के एक प्रकार को ऐसे प्रोग्राम बनाने के लिए दिखाया गया है, जो #अर्ध-भोले मूल्यांकन|अर्द्ध-भोले मूल्यांकन का उपयोग करके मूल्यांकन किए जाने पर, टॉप-डाउन मूल्यांकन के रूप में कुशल हैं।

जटिलता
डेटालॉग मूल्यांकन का निर्णय समस्या सूत्रीकरण इस प्रकार है: एक डेटालॉग प्रोग्राम दिया गया $P$ तथ्यों के एक सेट में विभाजित (ईडीबी) $E$ और नियमों का एक सेट $R$, और एक व्याख्या $A$, है $A$ के न्यूनतम मॉडल में $P$? इस सूत्रीकरण में, सूची कार्यक्रमों के मूल्यांकन की कम्प्यूटेशनल जटिलता के तीन रूप हैं:
 * {{dfni|data complexity}ty}} निर्णय समस्या की जटिलता है जब $A$ और $E$ इनपुट हैं और $R$ निश्चित है।
 * वह निर्णय समस्या की जटिलता है जब $A$ और $R$ इनपुट हैं और $E$ निश्चित है।
 * वह निर्णय समस्या की जटिलता है जब $A$, $E$, और $R$ इनपुट हैं।

डेटा जटिलता के संबंध में, डेटालॉग के लिए निर्णय समस्या P-पूर्ण है। कार्यक्रम की जटिलता के संबंध में, निर्णय समस्या EXPTIME-पूर्ण है। विशेष रूप से, सूची कार्यक्रमों का मूल्यांकन हमेशा समाप्त हो जाता है; डेटालॉग ट्यूरिंग पूर्णता नहीं है | ट्यूरिंग-पूर्ण।

डेटालॉग के कुछ एक्सटेंशन इन जटिलता सीमाओं को संरक्षित नहीं करते हैं। कुछ डेटालॉग इंजनों में लागू किए गए एक्सटेंशन #डेटालॉग इंजन, जैसे कि बीजगणितीय डेटा प्रकार, परिणामी भाषा को ट्यूरिंग-पूर्ण भी बना सकते हैं।

एक्सटेंशन
डेटालॉग में कई एक्सटेंशन किए गए हैं, उदाहरण के लिए, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग  की अनुमति देने के लिए, नकारात्मकता, कुल कार्यों, असमानताओं का समर्थन करने के लिए, या खंड (तर्क) के प्रमुखों के रूप में संयोजनों को अनुमति देने के लिए। इन विस्तारों का भाषा के शब्दार्थ और संबंधित दुभाषिया के कार्यान्वयन पर महत्वपूर्ण प्रभाव पड़ता है।

डेटालॉग Prolog, वियोगी डेटालॉग, उत्तर सेट प्रोग्रामिंग, डेटालॉग Z|डेटालॉग का एक सिंटैक्टिक उपसमुच्चय हैℤ, और बाधा तर्क प्रोग्रामिंग। जब एक उत्तर सेट प्रोग्राम के रूप में मूल्यांकन किया जाता है, तो एक डेटालॉग प्रोग्राम एक एकल उत्तर सेट उत्पन्न करता है, जो वास्तव में इसका न्यूनतम मॉडल है।

डेटालॉग के कई कार्यान्वयन अतिरिक्त सुविधाओं के साथ डेटालॉग का विस्तार करते हैं; देखना अधिक जानकारी के लिए।

एकत्रीकरण
एग्रीगेट फ़ंक्शन का समर्थन करने के लिए डेटालॉग को बढ़ाया जा सकता है। एकत्रीकरण को लागू करने वाले उल्लेखनीय डेलालॉग इंजनों में सम्मलित हैं:


 * लॉजिकब्लॉक्स
 * सूफले (प्रोग्रामिंग भाषा) | सूफले

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

स्तरीकरण (गणित) गणितीय तर्क में नकार को इसके मॉडल-सैद्धांतिक और निश्चित बिंदु शब्दार्थ को बनाए रखते हुए डेटालॉग में जोड़ा जा सकता है। स्तरीकृत निषेध को लागू करने वाले उल्लेखनीय डेलालॉग इंजनों में सम्मलित हैं:


 * लॉजिकब्लॉक्स
 * सूफले (प्रोग्रामिंग भाषा) | सूफले

प्रोलॉग से समानता
प्रोलॉग के विपरीत, एक सूची कार्यक्रम के बयान किसी भी क्रम में बताए जा सकते हैं। डेटालॉग में प्रोलॉग का कट (तर्क प्रोग्रामिंग) ऑपरेटर नहीं है। यह डेटालॉग को पूरी तरह से घोषणात्मक भाषा बनाता है।

प्रोलॉग के विपरीत, डेटालॉग
 * जटिल शब्दों को विधेय (तर्क) के तर्कों के रूप में अस्वीकार करता है, उदाहरण के लिए,  स्वीकार्य है लेकिन नहीं  ,
 * निषेध अस्वीकार करता है,
 * के लिए आवश्यक है कि खंड (तर्क) के शीर्ष में दिखाई देने वाला प्रत्येक चर खंड के शरीर में एक शाब्दिक (गणितीय तर्क) में भी दिखाई दे।

यह लेख मुख्य रूप से बिना निषेध के डेटालॉग से संबंधित है (यह भी देखें ). हालाँकि, स्तरीकृत निषेध, डेटालॉग के लिए एक सामान्य जोड़ है; निम्न सूची स्तरीकृत निषेध के साथ प्रोलॉग के साथ डेटालॉग के विपरीत है। स्तरीकृत निषेध के साथ डेटालॉग


 * विधेय (तर्क) के तर्कों के रूप में जटिल शब्दों को भी अस्वीकार करता है,
 * के लिए आवश्यक है कि खंड (तर्क) के शीर्ष में दिखाई देने वाला प्रत्येक चर भी खंड के शरीर में एक सकारात्मक (अर्थात, अस्वीकृत नहीं) परमाणु में दिखाई दे,
 * की आवश्यकता है कि खंड के शरीर में नकारात्मक शाब्दिक में दिखाई देने वाला प्रत्येक चर खंड के शरीर में कुछ सकारात्मक अक्षर में भी दिखाई दे।

अभिव्यक्ति
के लिए डेटालॉग पूछता है, एक डेटालॉग प्रोग्राम दिया गया है, चाहे वह हो, यानी, एक इनपुट डेटाबेस पर प्रोग्राम का मूल्यांकन करते समय अधिकतम रिकर्सन गहराई तक पहुंचा जा सकता है, जिसे कुछ स्थिरता से बांधा जा सकता है। दूसरे शब्दों में, यह प्रश्न पूछता है कि क्या डेटालॉग प्रोग्राम को एक गैर-आवर्ती डेटालॉग प्रोग्राम के रूप में फिर से लिखा जा सकता है। मनमाना डेटालॉग प्रोग्राम पर बाउंडनेस की समस्या का समाधान करना अनिर्णीत समस्या है, लेकिन इसे डेटालॉग के कुछ अंशों तक सीमित करके निर्णायक बनाया जा सकता है।

डेटा लॉग इंजन
सिस्टम जो डेटालॉग से प्रेरित भाषाओं को लागू करता है, चाहे वह संकलक,  दुभाषिया (कंप्यूटिंग) ,  पुस्तकालय (कम्प्यूटिंग) , या एंबेडेड DSL, के रूप में जाना जाता है. डेटालॉग इंजन अक्सर डेटालॉग के एक्सटेंशन को लागू करते हैं, इसे अतिरिक्त डेटा प्रकार, विदेशी फ़ंक्शन इंटरफ़ेस या उपयोगकर्ता-परिभाषित जाली (ऑर्डर) के लिए समर्थन के साथ विस्तारित करते हैं। इस तरह के एक्सटेंशन डायवर्जेंस (कंप्यूटर साइंस) | नॉन-टर्मिनेटिंग या अन्यथा खराब परिभाषित प्रोग्राम लिखने की अनुमति दे सकते हैं।

उपयोग और प्रभाव
डेटालॉग अपनी अभिव्यक्ति में काफी सीमित है। यह ट्यूरिंग पूर्णता नहीं है | ट्यूरिंग-पूर्ण, और इसमें बुनियादी डेटा प्रकार जैसे इंटेगर (कंप्यूटर विज्ञान) या स्ट्रिंग (कंप्यूटर विज्ञान) सम्मलित नहीं है। यह पारसीमोनी एक सैद्धांतिक दृष्टिकोण से अपील कर रहा है, लेकिन इसका मतलब है कि डेटालॉग per se शायद ही कभी एक प्रोग्रामिंग भाषा के रूप में उपयोग किया जाता है। अधिकांश #डेटालॉग इंजन, डेटालॉग के पर्याप्त विस्तार को लागू करते हैं। हालाँकि, इस तरह के कार्यान्वयन पर डेटालॉग का एक मजबूत प्रभाव है, और कई लेखक उन्हें इस लेख में प्रस्तुत किए गए डेटालॉग से अलग करने की जहमत नहीं उठाते हैं। तदनुसार, इस खंड में चर्चा किए गए अनुप्रयोगों में सूची-आधारित भाषाओं के यथार्थवादी कार्यान्वयन के अनुप्रयोग सम्मलित हैं।

डेटालॉग को डेटा एकीकरण, सूचना निष्कर्षण, कंप्यूटर नेटवर्क, सुरक्षा, क्लाउड कम्प्यूटिंग  और  यंत्र अधिगम  में समस्याओं के लिए लागू किया गया है।  Google ने बड़े डेटा संसाधन के लिए डेटालॉग का एक एक्सटेंशन विकसित किया है।

डेटालॉग ने स्थैतिक प्रोग्राम विश्लेषण में अनुप्रयोग देखा है। Soufflé (प्रोग्रामिंग भाषा) | Soufflé बोली का उपयोग जावा (प्रोग्रामिंग भाषा) के लिए पॉइंटर विश्लेषण और नियंत्रण प्रवाह विश्लेषण | योजना (प्रोग्रामिंग भाषा) के लिए नियंत्रण-प्रवाह विश्लेषण लिखने के लिए किया गया है। कुछ स्थिर विश्लेषणों को लिखना आसान बनाने के लिए डेटालॉग को संतुष्टि मॉडुलो सिद्धांतों के साथ एकीकृत किया गया है। फ़्लिक्स (प्रोग्रामिंग भाषा) बोली स्थिर प्रोग्राम विश्लेषण लिखने के लिए भी अनुकूल है।

कुछ व्यापक रूप से उपयोग किए जाने वाले डेटाबेस सिस्टम में डेटालॉग के लिए विकसित विचार और एल्गोरिदम सम्मलित हैं। उदाहरण के लिए, SQL:1999 मानक में SQL में श्रेणीबद्ध और पुनरावर्ती प्रश्न सम्मलित हैं, और IBM के IBM DB2 में मैजिक सेट्स एल्गोरिथम (प्रारंभिक में डेटालॉग प्रश्नों के तेजी से मूल्यांकन के लिए विकसित) लागू किया गया है।

इतिहास
डेटालॉग की उत्पत्ति तर्क प्रोग्रामिंग की प्रारंभिक में हुई थी, लेकिन यह 1977 के आसपास एक अलग क्षेत्र के रूप में प्रमुख हो गया जब हर्वे गैलेयर और जैक मिंकर ने तर्क और डेटाबेस पर एक कार्यशाला का आयोजन किया। डेविड मैयर को 'डेटालॉग' शब्द गढ़ने का श्रेय दिया जाता है।

यह भी देखें

 * उत्तर सेट प्रोग्रामिंग
 * संयोजक प्रश्न
 * डेटालॉगज़ | डेटालॉगℤ* वियोगी सूची
 * फ्लिक्स (प्रोग्रामिंग भाषा)
 * शब्दार्थ वेब नियम भाषा
 * टपल-जनरेटिंग डिपेंडेंसी (TGD), डेटालॉग के समान सिंटैक्स के साथ संबंधपरक डेटाबेस पर अखंडता की कमी के लिए एक भाषा