डेटालॉग

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

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

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

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

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

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

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

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

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

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

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

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

मॉडल सैद्धांतिक
एक नियम को ग्राउंड कहा जाता है यदि इसके सभी परमाणु (सिर और शरीर) ग्राउंड होते हैं। एक बुनियादी नियम आर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|ग्राउंड एटम की व्युत्पत्ति दर्शाने वाला प्रूफ ट्री  कार्यक्रम से

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

Datalog Prolog, disjunctive Datalog, उत्तर सेट प्रोग्रामिंग, DatalogZ|Datalog का एक सिंटैक्टिक उपसमुच्चय हैℤ, और बाधा तर्क प्रोग्रामिंग। जब एक उत्तर सेट प्रोग्राम के रूप में मूल्यांकन किया जाता है, तो एक डेटालॉग प्रोग्राम एक एकल उत्तर सेट उत्पन्न करता है, जो वास्तव में इसका न्यूनतम मॉडल है। Datalog के कई कार्यान्वयन अतिरिक्त सुविधाओं के साथ Datalog का विस्तार करते हैं; देखना अधिक जानकारी के लिए।

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


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

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

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


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

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

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

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


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

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

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

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

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

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

यह भी देखें

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