2010-02-05 9 views

उत्तर

2

मुझे विश्वास नहीं है कि इसके लिए कुछ भी मौजूद है, कुछ महीनों पहले नहीं, जब इसके साथ गड़बड़ हो रही थी। मैंने जो देखा, उससे 2 मुख्य रोडब्लॉक हैं:

  1. एक्सएमएल पदानुक्रमित है, आप इस प्रारूप में आसानी से ग्राफ डेटा का प्रतिनिधित्व नहीं कर सकते हैं।
  2. नोड्स के लिए स्पष्ट आईडी की कमी। भले ही अंतर्निहित आईडी मौजूद हों, यह आयात/निर्यात के लिए ओरेकल में ROWID का उपयोग करने जैसा होगा ... वही होने की गारंटी नहीं है।

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

+2

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

+2

(5 मिनट के संपादन नियम द्वारा पकड़ा गया।) स्पष्ट या निहित नोड आईडी के लिए, यह एक कार्यान्वयन मुद्दा है। अधिकांश ग्राफ मार्कअप भाषाओं में पहले से ही शीर्ष स्तर के तत्वों पर आईडी होती है, और किसी भी मार्कअप में xml: id जोड़ना संभव है। Neo4j से किसी भी मार्कअप में निर्यात करना कोई समस्या नहीं होनी चाहिए, यह केवल एक क्रमबद्धता है, जैसा ऊपर पीटर न्यूबॉयर द्वारा दर्शाया गया है। –

21

मैं मानता हूं, यदि आपको XML की वर्बोजिटी में कोई समस्या नहीं है, तो ग्राफ़एमएल जाने का तरीका है। यह करने के लिए एक आसान तरीका है, जहां GraphML डिफ़ॉल्ट आयात/निर्यात प्रारूप है

की तरह कुछ
 
peters: ./gremlin.sh 

gremlin> $_g := neo4j:open('/tmp/neo4j') 
==>neograph[/tmp/neo4j, vertices:2, edges:1] 
gremlin> g:save('graphml-export.xml') 

के रूप में वर्णित here

करता है कि आपकी समस्या का समाधान Gremlin से Neo4j ग्राफ को खोलने के लिए है?

+0

आपका लिंक मुझे एक खाली github विकी पेज से जोड़ रहा है। शायद आप इस पेज का मतलब था? http://github.com/tinkerpop/gremlin/wiki/Neo4j-Graph-Database – mmay

+3

Gremlin से/लोड करने/सहेजने की वर्तमान जानकारी अब यहां स्थित है: https: // github।com/tinkerpop/दुष्टात्मा/wiki/दुष्टात्मा-तरीके – nawroth

+0

क्यों नहीं फिर URL ठीक करने के लिए मूल जबाब संपादित? –

20
Blueprints साथ

, बस कार्य करें:

Graph graph = new Neo4jGraph("/tmp/mygraph"); 
GraphMLWriter.outputGraph(graph, new FileOutputStream("mygraph.xml")); 

या, Gremlin साथ (जो पीठ में एक ही बात करता है):

g = new Neo4jGraph('/tmp/mygraph'); 
g.saveGraphML('mygraph.xml'); 

अंत में, Neo4jGraph के लिए निर्माता के लिए, आप कर सकते हैं भी एक ग्राफडेटाबेस सेवा उदाहरण में पास करें।

0

NoSqlUnit पर एक नज़र डालें, इसमें GraphML से neo4j और फिर से परिवर्तित करने के लिए टूल हैं।

विशेष रूप से, com.lordofthejars.nosqlunit.graph.parser.GraphMLWriter और com.lordofthejars.nosqlunit.graph.parser.GraphMLReader है जो एक neo4j डेटाबेस से/XML फ़ाइलों को पढ़/लिखते हैं।

+1

@jpp खैर के बाद उत्तर संपादित नहीं कर सकते, मैं विशिष्ट जावा फ़ाइलों के लिए स्रोत का उल्लेख कर सकते हैं, लेकिन वे कोड की लाइनों के 100 के साथ कक्षाएं हैं, इसलिए मुझे लगता है कि कोड यहाँ reduplicating नहीं किया जाएगा। – Stewart