Revision 070fd8df
Added by Andreas Kohlbecker over 8 years ago
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
local TDB access problems solved