2012-06-19 9 views
5

का उपयोग करके स्टोर और क्वेरी करने के लिए मैं जेना-टीडीबी और एसपीएआरक्यूएल दोनों में नया हूं, इसलिए यह एक मूर्ख सवाल हो सकता है। मैं विंडोज एक्सपी पर टीडीबी-0.9.0 का उपयोग कर रहा हूं।जेना टीडीबी एपीआई

मैं अपने trail_1.rdf फ़ाइल के लिए टीडीबी मॉडल बना रहा हूं। मेरी समझ यहां (अगर मैं गलत हूं तो मुझे सही करें) यह है कि निम्नलिखित कोड टीडीबी मॉडल में दिए गए rdf फ़ाइल को पढ़ेगा और यह भी निर्दिष्ट/निर्देशिका में लोड नहीं होगा (सुनिश्चित नहीं है कि बेहतर शब्द क्या है) D:\Project\Store_DB\data1\tdb:

// open TDB dataset 
String directory = "D:\\Project\\Store_DB\\data1\\tdb"; 
Dataset dataset = TDBFactory.createDataset(directory); 

Model tdb = dataset.getDefaultModel(); 

// read the input file 
String source = "D:\\Project\\Store_DB\\tmp\\trail_1.rdf"; 
FileManager.get().readModel(tdb, source); 

tdb.close(); 
dataset.close(); 

क्या यह समझ सही है?


मेरी समझ के अनुसार के बाद से अब मॉडल D:\Project\Store_DB\data1\tdb निर्देशिका में संग्रहीत किया जाता है, मैं समय की कुछ बाद में किसी समय उस पर क्वेरी चलाने के लिए सक्षम होना चाहिए।

तो D:\Project\Store_DB\data1\tdb पर टीडीबी स्टोर क्वेरी करने के लिए मैं निम्नलिखित की कोशिश की है, लेकिन यह कुछ भी नहीं प्रिंट:

String directory = "D:\\Project\\Store_DB\\data1\\tdb" ; 
    Dataset dataset = TDBFactory.createDataset(directory) ; 

    String sparqlQueryString = "SELECT (count(*) AS ?count) { ?s ?p ?o }" ; 

    Query query = QueryFactory.create(sparqlQueryString) ; 
    QueryExecution qexec = QueryExecutionFactory.create(query, dataset) ; 
    ResultSet results = qexec.execSelect() ; 
    ResultSetFormatter.out(results) ; 

:

String directory = "D:\\Project\\Store_DB\\data1\\tdb" ; 
Dataset dataset = TDBFactory.createDataset(directory) ; 

Iterator<String> graphNames = dataset.listNames(); 
while (graphNames.hasNext()) { 
    String graphName = graphNames.next(); 
    System.out.println(graphName); 
} 

मैं भी इस है, जो भी कुछ भी प्रिंट न पहुंच पाए मैं गलत क्या कर रहा हूँ? क्या मेरी समझ में कुछ गड़बड़ है कि मैंने ऊपर उल्लेख किया है?

उत्तर

3

आपके प्रश्न के भाग (i) के लिए, हाँ, आपकी समझ सही है।

भाग के लिए (ii), कारण listNames कोई परिणाम नहीं देता है क्योंकि आपने अपना डेटा किसी नामित ग्राफ में नहीं रखा है। विशेष रूप से,

Model tdb = dataset.getDefaultModel(); 

मतलब है कि आप टीडीबी के डिफ़ॉल्ट ग्राफ में डेटा भंडारण कर रहे हैं, जिसका अर्थ है कोई नाम के साथ ग्राफ।

Model tdb = dataset.getNamedGraph("graph42"); 

या कुछ इसी तरह की: आप listNames चाहते हैं कुछ वापस जाने के लिए, कि लाइन के लिए बदल जाते हैं। निश्चित रूप से, जब आप डेटा पूछते हैं तो आपको उस ग्राफ को नाम से संदर्भित करने की आवश्यकता होगी।

यदि आपका लक्ष्य यह जांचने के लिए है कि आपने स्टोर में सफलतापूर्वक डेटा लोड किया है या नहीं, तो कमांड लाइन टूल्स bin/tdbdump (लिनक्स) या bat\tdbdump.bat (विंडोज) का प्रयास करें।

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

2

आपके भाग 1 कोड में समस्या है, मुझे लगता है कि आप डेटा नहीं कर रहे हैं।

अपनी ओर 1 कोड के इस संस्करण से प्रयास करें:

String directory = "D:\\Project\\Store_DB\\data1\\tdb"; 
    Dataset dataset = TDBFactory.createDataset(directory); 

    Model tdb = dataset.getDefaultModel(); 

    // read the input file 
    String source = "D:\\Project\\Store_DB\\tmp\\trail_1.rdf"; 
    FileManager.get().readModel(tdb, source); 

    dataset.commit();//INCLUDE THIS STAMEMENT 

    tdb.close(); 
    dataset.close(); 

और फिर अपनी ओर 3 कोड :) के साथ प्रयास करें ....