2012-08-31 16 views
10

मैं ruby on rails पर neo4j के साथ dBpedia का उपयोग करने का प्रयास कर रहा हूं।रूबी-ऑन-रेल एप्लिकेशन के डीबीपीडिया ऑनटॉप के साथ neo4j कैसे सेट करें?

मान लीजिए कि मैंने neo4j स्थापित किया है और dBpedia datasets में से एक डाउनलोड किया है।

मैं neo4j में डेटासेट कैसे आयात करूं?

+2

नए neo4j.rb दस्तावेज़ों के लिए एक और लिंक: https://github.com/andreasronge/neo4j/wiki –

उत्तर

8

डीओपीडिया को नियो 4j में लोड करने का सबसे आसान तरीका dbpedia4neo लाइब्रेरी का उपयोग करना है। यह एक जावा लाइब्रेरी है, लेकिन आपको किसी जावा को जानने की आवश्यकता नहीं है क्योंकि आपको केवल निष्पादन योग्य चलाने की आवश्यकता है।

यदि आप चाहें तो आप इसे JRuby में फिर से लिख सकते हैं, लेकिन नियमित रूबी काम नहीं करेगा क्योंकि यह Blueprints पर निर्भर करता है, जावा लाइब्रेरी के साथ कोई रूबी बराबर नहीं है।

यहां दो प्रमुख फ़ाइलें हैं, जो लोडिंग प्रक्रिया प्रदान करती हैं।

  1. https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/DBpediaLoader.java
  2. https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/TripleHandler.java

यहाँ एक description of what's involved है।

ब्लूप्रिंट आरडीएफ डेटा को ग्राफ प्रतिनिधित्व में अनुवाद कर रहा है। यह समझने के लिए क्या हुड के नीचे चल रहा है, Blueprints Sail Ouplementation देखें:

आप dbpedia डंप फ़ाइलों को डाउनलोड करने के बाद आप dbpedia4neo जावा पुस्तकालय का निर्माण और जावा कोड को संशोधित करने के बिना इसे चलाने के लिए सक्षम होना चाहिए।

पहले, GitHub भंडार के oleiade के कांटा क्लोन और dbpedia4neo निर्देशिका बदलें:

$ git clone https://github.com/oleiade/dbpedia4neo.git 
$ cd dbpedia4neo 

(Oleiade के कांटा एक छोटी सी ब्लूप्रिंट अद्यतन sail.initialize();https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJ देखें करता है कि शामिल हैं)।

इसे बनाने से पहले, आपको वर्तमान ब्लूप्रिंट संस्करणों और वर्तमान ब्लूप्रिंट्स रिपोजिटरी (सोनाटाइप) का उपयोग करने के लिए pom.xml को अपडेट करने की आवश्यकता होगी।

इस खुले pom.xml ऐसा करने के लिए और dependencies अनुभाग के शीर्ष पर, 0.6 से 0.9 को TinkerPop ब्लूप्रिंट संस्करणों के सभी बदल जाते हैं।

आप फ़ाइल में होने के दौरान फ़ाइल के अंत में repositories अनुभाग के लिए Sonatype डेटा संग्रह स्थान जुड़:

<repository> 
    <id>sonatype-nexus-snapshots</id> 
    <name>Sonatype Nexus Snapshots</name> 
    <url>https://oss.sonatype.org/content/repositories/releases</url> 
</repository> 

सहेजें फ़ाइल और फिर इसे बनाने Maven का उपयोग कर:

$ mvn clean install 

यह आपके लिए सभी निर्भरताओं को डाउनलोड और इंस्टॉल करेगा और target निर्देशिका में एक जार फ़ाइल बनाएगा।

निष्पादन को चलाने के लिए, का उपयोग करें Maven dbpedia लोड करने के लिए:

$ mvn exec:java \ 
    -Dexec.mainClass=org.acaro.dbpedia4neo.inserter.DBpediaLoader \ 
    -Dexec.args="/path/to/dbpedia-dump.nt" 

dbpedia डंप बड़ी है तो यह लोड करने के लिए कुछ समय लग जाएगा।

अब जब कि डेटा लोड किया जाता है, तो आप दो तरीकों में से एक में ग्राफ पहुँच सकते हैं:

  1. उपयोग JRuby और सीधे ब्लूप्रिंट-Neo4j एपीआई।
  2. नियमित रूबी और Rexster आरईएसटी सर्वर का उपयोग करें, जो नियो 4 जे सर्वर के समान है सिवाय इसके कि यह एकाधिक ग्राफ डेटाबेस का समर्थन करता है।

रेक्सस्टर क्लाइंट बनाने के तरीके के उदाहरण के लिए, बल्ब देखें, मैंने लिखा एक पायथन फ्रेमवर्क जो नियो 4 जे सर्वर और रेक्सस्टर दोनों का समर्थन करता है।

इस dbpedia RDF रूबी में फ़ाइल डंप, एक CSV फ़ाइल में नोड्स और रिश्तों को लिखने की प्रक्रिया के लिए होगा सभी के लिए एक और दृष्टिकोण है, और इसे लोड करने के लिए Neo4j batch importer का उपयोग करें। लेकिन इसके लिए आपको मैन्युअल रूप से आरडीएफ डेटा को नियो 4j संबंधों में अनुवाद करने की आवश्यकता होगी।

3

जिस तरह से मैं इसे देखता हूं, आपके पास दो विकल्प हैं।

  1. आप या तो बिल्कुल this one की तरह एक दृष्टिकोण को लागू करने का प्रयास कर सकता है, या कांटा the repo इस दृष्टिकोण (या किसी अन्य यह की तरह) के पीछे और विस्तार/अपने उद्देश्यों फिट करने के लिए इसे ठीक।

  2. स्क्रैच से इसे स्वयं करें। यहां सामान्य दृष्टिकोण है:

अपने dbpedia डेटासेट को neo4j के सम्मिलन विधियों के लिए उपयुक्त स्वरूप में पार्स करें। ऐसे पुस्तकालय हैं जो openRDF जैसे मौजूद हैं जो डेटा को संसाधित करने के लिए मौजूद हैं। जब तक आप अनुसंधान के लिए समय नहीं ले लेते हैं जो आपकी आवश्यकताओं के अनुरूप सर्वोत्तम होगा, तो मौजूदा लिंक जो मैंने उपरोक्त लिंक किया है, वह पहले से ही इस पुस्तकालय को लागू करता है।

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

मेरा 2 सेंट यह है कि आप पहले से कुछ बाहर उपयोग करते हैं जब तक कि यह कार्यक्षमता आपके विकास के मूल नहीं है। चूंकि यह ऐसा कुछ है जो निर्माण करने में दर्द होगा, और कुशलता से चलने वाली कुछ चीज बनाने के लिए और भी दर्द होगा।

+0

क्या आपके पास एक और विशिष्ट प्रश्न है? – anxiety