Project

General

Profile

« Previous | Next » 

Revision 070fd8df

Added by Andreas Kohlbecker over 8 years ago

local TDB access problems solved

View differences:

src/main/java/org/bgbm/biovel/drf/query/SparqlClient.java
66 66

  
67 67
    private File rdfFile = null;
68 68

  
69
    private final Model model = null;
70

  
71 69
    private Dataset dataset = null;
72 70

  
73 71
    public enum Opmode{
......
86 84
            }
87 85
            try {
88 86
                createStore();
89
//                loadModel();
90 87
            } catch (IOException e) {
91 88
                // TODO Auto-generated catch block
92 89
                e.printStackTrace();
......
154 151
     */
155 152
    private void createStore() throws IOException {
156 153

  
154
        boolean doClearStoreLocation = rdfFile != null;
155
        boolean doLoadRdfFile = rdfFile != null;
156

  
157 157
        File tdbStoreFolder = new File(tmpDir, "drf_tnb_store" + File.separator);
158 158
        if(tdbStoreFolder.exists()) {
159
            if(rdfFile != null) {
159
            if( doClearStoreLocation ) {
160 160
                FileUtils.cleanDirectory(tdbStoreFolder);
161 161
            }
162 162
        } else {
......
166 166

  
167 167
        Dataset dataset = TDBFactory.createDataset(location);
168 168

  
169
        logger.info("Using TDB store at " + location);
170

  
169 171
        dataset.begin(ReadWrite.READ) ;
170 172
        // Get model inside the transaction
171 173
        Model model = dataset.getDefaultModel() ;
174
        logger.info("Dataset in TDB has " + dataset.asDatasetGraph().size() + " named graphs");
175
        logger.info("Model-size: " + model.size());
172 176
        dataset.end();
173 177

  
174
        if(rdfFile != null) {
178
        if(doLoadRdfFile) {
175 179
            dataset.begin(ReadWrite.WRITE);
176 180
            model = dataset.getDefaultModel();
177 181
            // parse InputStream as RDF in Turtle format
178 182
            InputStream fin = new FileInputStream(rdfFile);
179
            logger.info("loading DRF/XML into TDB store");
183
            logger.info("loading RDF/XML into TDB store");
180 184
            model.read(fin, null, "RDF/XML");
181
            logger.info("loading DRF/XML done");
185
            logger.info("loading RDF/XML done");
186
            logger.info("Dataset in TDB has " + dataset.asDatasetGraph().size() + " named graphs");
187
            logger.info("Model-size: " + model.size());
188
            dataset.commit();
182 189
            dataset.end();
183 190
            logger.info("rdf loaded into TDB store at " + tdbStoreFolder);
184 191
        }
......
215 222
    public Model describe(String queryString) throws DRFChecklistException {
216 223

  
217 224
        QueryExecution qe = executionFor(queryString);
218
        Model model = null;
225
        Model result = null;
219 226
        try {
220 227
            if(dataset != null) {
221 228
                dataset.begin(ReadWrite.READ) ;
222 229
            }
223
            model = qe.execDescribe();
224
            if(dataset== null && logger.isDebugEnabled()) {
225
                model.write(System.err);
226
            }
227
            if(dataset != null) {
228
                dataset.end();
230
            result = qe.execDescribe();
231
            if(logger.isDebugEnabled()) {
232
                result.write(System.err);
229 233
            }
230 234

  
231 235
        } catch (HttpException e) {
......
244 248
            qe.close();
245 249
        }
246 250

  
247
        if(model != null && logger.isDebugEnabled()) {
251
        if(result != null && logger.isDebugEnabled()) {
248 252
            StringBuilder msg = new StringBuilder();
249 253
            msg.append("subjects in response:\n");
250 254
            int i = 1;
251
            for(ResIterator it = model.listSubjects(); it.hasNext(); ++i) {
255
            for(ResIterator it = result.listSubjects(); it.hasNext(); ++i) {
252 256
                Resource res = it.next();
253 257
                msg.append("    " + i + ": " + res.toString() + "\n");
254 258
            }
255 259
            logger.debug(msg.toString());
256 260
        }
261
        if(dataset != null) {
262
            dataset.end();
263
        }
257 264

  
258
        return model;
265
        return result;
259 266
    }
260 267

  
261 268
    /**
......
264 271
     */
265 272
    private QueryExecution executionFor(String queryString) {
266 273

  
267
        Query query = QueryFactory.create(queryString);
268

  
269 274
        QueryExecution qe;
270
        // Execute the query and obtain results
271 275
        if(opmode.equals(Opmode.SPARCLE_ENDPOINT)) {
276
            Query query = QueryFactory.create(queryString);
272 277
            qe = QueryExecutionFactory.sparqlService(baseUri, query);
273 278
        } else {
274
            // RDF_ARCHIVE
275
            if(model != null) {
276
                // in-memory model
277
                qe = QueryExecutionFactory.create(queryString, model);
278
            } else if(dataset != null) {
279
                // TDB Store
280
                qe = QueryExecutionFactory.create(queryString, dataset);
281
            } else {
282
                throw new RuntimeException("Opmode is RDF_ARCHIVE but model was null");
283
            }
279
            // local TDB Store
280
            qe = QueryExecutionFactory.create(queryString, dataset);
284 281
        }
285 282
        return qe;
286 283
    }
......
374 371

  
375 372
    public Resource getFromUri(String uri) {
376 373

  
377
        final Model model = ModelFactory.createDefaultModel();
378
        model.read(uri);
379
        if(logger.isDebugEnabled()) {
380
            model.write(System.err);
374
        Model model;
375
        if(dataset != null) {
376
            dataset.begin(ReadWrite.READ) ;
377
            model = dataset.getDefaultModel();
378
            dataset.end();
379
        } else {
380
            model = ModelFactory.createDefaultModel();
381
            model.read(uri);
382
            if(logger.isDebugEnabled()) {
383
                model.write(System.err);
384
            }
381 385
        }
382 386
        return model.getResource(uri);
383 387

  

Also available in: Unified diff