ग्राफ डेटाबेस और ट्रिपल स्टोर्स के बीच मुख्य अंतर यह है कि वे ग्राफ को कैसे मॉडल करते हैं। एक ट्रिपल स्टोर (या क्वाड स्टोर) में, डेटा बहुत परमाणु होता है। मेरा मतलब यह है कि ग्राफ में "नोड्स" प्राचीन डेटा प्रकार जैसे स्ट्रिंग, पूर्णांक, दिनांक इत्यादि होते हैं। रिलेशनशिप लिंक प्राइमेटिव्स को एक साथ जोड़ते हैं, और इसलिए ट्रिपल स्टोर में "प्रवचन की इकाई" एक तिहाई है, न कि एक नोड या रिश्ते, आमतौर पर।
इसके विपरीत, अन्य ग्राफ डेटाबेस को अक्सर "संपत्ति स्टोर" कहा जाता है क्योंकि नोड्स डेटा कंटेनर होते हैं जो किसी डोमेन में ऑब्जेक्ट्स से मेल खाते हैं। एक वस्तु के लिए एक नोड खड़ा है, और गुण है; वे ग्राफ़ मॉडलर्स द्वारा निर्दिष्ट समृद्ध डेटा प्रकारों के रूप में कार्य करते हैं, केवल आदिम डेटा प्रकारों से अधिक। इन ग्राफ डेटाबेस में, नोड्स और रिश्ते "प्रवचन की इकाई" हैं।
मान लें कि मेरे पास "बॉब" नामक व्यक्ति है जो "सुसान" जानता है।RDF में, यह कुछ इस तरह होगा:
(a:Person {name: "Bob"})-[:KNOWS]->(b:Person {name: "Susan"})
सूचना है कि RDF में, यह 3 रिश्तों है, लेकिन उन रिश्तों का केवल एक:
<http://example.org/person/1> :hasName "Bob".
<http://example.org/person/1> foaf:knows <http://example.org/person/2>.
<http://example.org/person/2> :hasName "Susan".
neo4j की तरह एक ग्राफ डेटाबेस में, यह इस होगा वास्तव में दो इकाइयों के बीच अर्थशास्त्र व्यक्त करता है। अन्य दो रिश्ते सिर्फ एक उच्च स्तरीय इकाई (व्यक्ति) के गुणों को ट्रैक कर रहे हैं। Neo4j में, यह दो नोड्स के बीच संबंध है, प्रत्येक नोड में संपत्ति है। आरडीएफ में आप यूआरआई द्वारा चीजों की पहचान करेंगे, neo4j में यह एक डेटाबेस ऑब्जेक्ट है जो स्वचालित रूप से डेटाबेस आईडी प्राप्त करता है। एक और परमाणु/आदिम स्टोर (ट्रिपल स्टोर्स) और एक अमीर संपत्ति ग्राफ के बीच के अंतर के बारे में मेरा यही मतलब है।
आरडीएफ और ट्रिपल स्टोर ज्यादातर आर्किटेक्चरल चुनौतियों के लिए बनाए जाते हैं जो आप अर्थात् वेब के साथ भागेंगे। उदाहरण के लिए, आर्किटेक्चरल धारणा पर एक्सएमएल नेमस्पेसिंग का निर्माण किया गया है कि आप कई अलग-अलग शब्दावली और नामस्थानों के उपयोग से मिश्रण और मिलान करेंगे। (यह सही है कि एक बहुत ही "अर्थपूर्ण वेब" धारणा है)। तो SPARQL और RDF में आप आमतौर पर कम से कमxsd
, rdf
, और rdfs
नामस्थानों के साथ-साथ owl
, skos
, और कई अन्य लोगों का उपयोग देखेंगे। एसपीएआरक्यूएल और आरडीएफ/आरडीएफएस में कई हुक और फीचर्स भी हैं जो ऑटोलॉजी अनुमान जैसी चीजों को आसान बनाने के लिए स्पष्ट रूप से हैं। आप यूआरआई के साथ चीजों की पहचान "अपने पहचानकर्ताओं को नाम देने" के तरीके के रूप में पहचानने के लिए करेंगे, लेकिन यह भी कि कुछ लोग यूआरआई को डी-रेफरेंस करना चाहते हैं ... फिर भी यह धारणा कई पार्टियों के बीच व्यापक डेटा साझाकरण व्यवस्था है। इसके विपरीत द्वारा
संपत्ति भंडार एक मॉडल/नाम स्थान के भीतर डेटा का लचीला मॉडलिंग की तरह, विभिन्न उपयोग मामलों की ओर keyed रहे हैं, वस्तुओं और उद्यम अनुप्रयोगों, तेजी से evolvability, और इतने पर के हठ के लिए रेखांकन के बीच मैपिंग। आप अपनी योजना (या एक आंतरिक डेटाबेस आईडी) के साथ चीजों की पहचान करेंगे। एक ऑटो-वृद्धिशील पूर्णांक वेब पर किसी भी यादृच्छिक उपभोक्ता के लिए आईडी का सर्वश्रेष्ठ रूप नहीं हो सकता है, (और उन्हें निश्चित रूप से यूआरएल की तरह संदर्भित नहीं किया जा सकता है) लेकिन हो सकता है कि वे कंपनी के आंतरिक अनुप्रयोग के लिए आपका पहला विचार न हों।
तो कौन सा बेहतर है? अधिक परमाणु ट्रिपल स्टोर प्रारूप, या समृद्ध संपत्ति ग्राफ? क्या आपको एक क्वेरी या डेटा मॉडल में कई अलग-अलग शब्दावली मिश्रण और मिलान करने की ज़रूरत है? क्या आपको ओडब्लूएल ऑटोलॉजी बनाने या अनुमान लगाने की ज़रूरत है? क्या आपको डेटाबेस में जावा ऑब्जेक्ट्स के गुच्छा को डेटाबेस में क्रमबद्ध करने की आवश्यकता है? क्या आपको लंबे पथों के तेज़ ट्रैवर्सल करने की ज़रूरत है? उन प्रकार के प्रश्न आपके चयन का मार्गदर्शन करेंगे।
ग्राफ़ ग्राफ हैं, दोनों ग्राफ हैं, और इसलिए मुझे नहीं लगता कि वे क्या प्रतिनिधित्व कर सकते हैं या आप "ग्राफ शर्तों" में किसी समस्या के बारे में सोचने के तरीके में कितना अंतर रखते हैं। अंतर हुड के नीचे आर्किटेक्चर के लिए उबालते हैं, और आपको लगता है कि किस तरह के उपयोग के मामलों की आपको आवश्यकता होगी। मैं आपको नहीं बताऊंगा कि एक दूसरे की तुलना में बेहतर है, लेकिन बुद्धिमानी से चुनें।
"ट्रिपल स्टोर कुछ भी नहीं बल्कि ट्रिपल स्टोर करते हैं" कई (अधिकांश?) ट्रिपल स्टोर्स (यानी, आरडीएफ के लिए) वास्तव में * क्वाड * स्टोर्स हैं, क्योंकि उनके पास * नामित ग्राफ * की एक अवधारणा (SPARQL डेटासेट्स से) है। चूंकि प्रत्येक ट्रिपल ग्राफ के भीतर मौजूद होता है, इसलिए मौलिक वस्तु वास्तव में ** (ग्राफ, विषय, भविष्यवाणी, वस्तु) ** है। –
"ट्रिपल/संग्रह 1: स्टोर ट्रिपल (2 नोड्स, 1 रिलेशनशिप)" हालांकि ऑर्डर महत्वपूर्ण है। यह एक अप्रत्यक्ष किनारा नहीं है, इसलिए यह वास्तव में ** (स्रोत, रिश्ते, लक्ष्य) ** है, या, आमतौर पर, ** (विषय, predicate (या संपत्ति), वस्तु) **। –
"पृथ्वी पर क्यों आप इसे केवल ट्रिपल के रूप में स्टोर करना चाहते हैं, [एसआईसी] कनेक्शन के बारे में सारी जानकारी खोना?" मुझे यकीन नहीं है कि आपका मतलब क्या है।संपत्ति को यूआरआई/आईआरआई द्वारा पहचाना जाता है, जो यूआईडी के रूप में सार्वभौमिक है, सिवाय इसके कि यह कुछ ऐसा याद रखना आसान हो सकता है, जो भरोसेमंद हो सकता है (ताकि आप इसके बारे में अधिक जानकारी प्राप्त कर सकें), और विषय और वस्तु आमतौर पर यूआरआई या डेटा अक्षर हैं। कनेक्शन के बारे में क्या जानकारी खो गई है? –