2015-03-22 12 views
8

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

डेटाबेस को छोड़कर जो डेटाबेस शायद अधिक स्पेस-टाइम प्रभावी स्टोरेज तकनीक का प्रस्ताव दे सकता है, और इसके अलावा मिनीकेरेन जैसे छोटे तर्क कोर सरल और एम्बेड करने योग्य हैं, ग्राफ डेटाबेस और तर्क प्रोग्रामिंग भाषाओं के बीच वास्तविक अंतर क्या है, यदि वे दोनों हैं बस एक ग्राफ डेटाबेस + क्वेरी एपीआई?

+3

प्रोलॉग एक * प्रोग्रामिंग भाषा * है, जबकि एक ग्राफ डेटाबेस केवल डेटा बेस है। प्रोलॉग के साथ आप जो कुछ भी कर सकते हैं वह केवल डेटाबेस के साथ पूरा करना असंभव है। उदाहरण के लिए, एक वेबसर्वर बनाना जो एसडब्ल्यूआई-प्रोल [वेब साइट] (http://www.swi-prolog.org) को शक्ति देता है, प्रोलॉग के साथ संभव है, लेकिन केवल एक डेटाबेस इंजन के साथ असंभव है। – mat

+1

संग्रहित प्रक्रियाओं और ग्राफ़ डेटाबेस में ट्रिगर्स जोड़ें, एएसटी (यह मूल रूप से एक ग्राफ है) में पार्स किए गए कुछ स्रोत कोड लोड करें, और आप इसे एबीटी –

उत्तर

9

नहीं, उन चीजों और neo4j द्वारा अवशोषित तर्क प्रोग्रामिंग काफी अलग हैं।

एक स्तर पर, आप सही हैं कि वे अवधारणात्मक रूप से ग्राफ स्टोरेज और ग्राफ़ क्वेरी दोनों की राशि हैं। लेकिन तर्क प्रोग्रामिंग के लिए, यह केवल अवधारणात्मक ग्राफ क्वेरी है, इस बात की कोई गारंटी नहीं है कि यह वास्तव में उस तरह से संग्रहीत है (जहां neo4j के साथ, यह है)।

दूसरा, तर्क प्रोग्रामिंग के साथ आप आमतौर पर horn clauses स्थापित करने की कोशिश कर रहे हैं जो आपको बहुत सारे डेटा के माध्यम से कारण बताता है। आप एक सींग खंड को एक साधारण नियम के रूप में सोच सकते हैं, जैसे कि "यदि कोई पुरुष पुरुष है, और जैविक बच्चे का प्रत्यक्ष पूर्वज है, तो इसका तात्पर्य है कि व्यक्ति एक पिता है"। neo4j साथ बीजलेख में, आप एक ग्राफ़ पैटर्न में आप मिलान करना चाहते हैं का वर्णन होगा, कि डेटा में परिणाम, उदा .:

MATCH (p:Person)-[:father*]->(maleAncestor:Person) 
RETURN maleAncestor 

यह father रिश्तों द्वारा ग्राफ पार करने के लिए कहता है, और पुरुष पूर्वजों लौट आते हैं। एक तर्क प्रोग्रामिंग भाषा में, आप इसे इस तरह से नहीं करेंगे। आप निर्दिष्ट कर सकते हैं कि ab के पिता होने का अर्थ है कि a पुरुष है, और ab का पूर्वज है। यह पूरी तरह से और transitively राज्य होगा कि सभी मान्य ए/बी जोड़ी के लिए। फिर आप एक सवाल पूछेंगे, "पुरुष पूर्वजों कौन हैं"? प्रोग्रामिंग पर्यावरण तब जवाब देगा कि आपके नियमों का शोषण करके। उस डेटा के माध्यम से एक ट्रैवर्सल बनाने का असर होगा जो ऊपर उल्लिखित साइफर के समान है, लेकिन जिस तरह से आप अपने डेटा को समझने और उस ट्रैवर्सल को बनाने के बारे में सोचते हैं, वह बिल्कुल अलग है।

तर्क प्रोग्रामिंग भाषा आमतौर पर predicate resolution के माध्यम से काम करती है। एक ग्राफ क्वेरी भाषा जैसे साइफर पैटर्न मिलान के संयोजन और स्पष्ट पथ पदनाम के संयोजन से काम करता है। वे बहुत अलग हैं।

+0

महान उत्तर निष्पादित या परिवर्तित कर देंगे ... 2 चीजें मेरे साथ हुईं: (1) डिमोरगन नियम निहितार्थ के संयोजन को बदलते हैं, इसलिए सींग खंडों का कोई भी सेट कुछ निर्देशित ग्राफ के लिए आइसोमोर्फिक होना चाहिए जहां सभी तीर निहितार्थ होते हैं (यह एक नव डीबी में फिट हो सकता है)। (2) एक नव डेटाबेस के मेटा ग्राफ की व्याख्या करने से नोड लेबल, रिश्ते के प्रकार और गुणों के बीच संबंध पैदा होता है जिसे औपचारिक तर्क में आसानी से प्रदर्शित किया जा सकता है और एक तर्ककर्ता द्वारा संसाधित किया जा सकता है। जिस बिंदु को मैं बना रहा हूं वह यह है कि, विशिष्ट, ग्राफ क्वेरीज और तर्क प्रोग्रामिंग संगत और संभावित पूरक – smartcaveman

+0

सहमत हैं, वे इस बात से संगत हैं, और इस अर्थ में पूरक हैं कि एक बाध्यकारी स्कीमा neo4j ग्राफ पर एक तर्कक को लागू करना अपेक्षाकृत सरल होगा।लेकिन अधिकांश लोग, एक दृष्टिकोण या दूसरे को चुनने पर, निश्चित रूप से कोड/डेटा के बारे में सोचने का एक विशेष मॉडल चुनते हैं। वे * स्पर्श कर सकते हैं, लेकिन वे आमतौर पर नहीं करते हैं। Prolog's N-ary भविष्यवाणी के लिए – FrobberOfBits

+0

हाइपरग्राफ पर दिखता है - वे अधिक देशी प्रतिनिधित्व दिखते हैं –

संबंधित मुद्दे