/** Load input file */ private void loadInputFile() { URI_ID = new TObjectIntHashMap<String>(); // load uri--id from input file TextFileUtils.loadInputURIs(inputFile, URI_ID, false); logger.debug("Input URIs loading. " + URI_ID.size() + " URIs loaded."); }
/** Start RDF triple extraction */ private void run() { // get processors number for multi-threading int n_threads = Runtime.getRuntime().availableProcessors(); n_threads = 4; logger.debug("Threads number: " + n_threads); ExecutorService executor; executor = Executors.newFixedThreadPool(n_threads); metadata_counter = new SynchronizedCounter(); properties_counter = new SynchronizedCounter(); metadata_index = new TObjectIntHashMap<String>(); props_index = new TObjectIntHashMap<String>(); logger.info("Risorse da interrogare: " + num_items); try { TextFileManager textWriter = null; if (outputTextFormat) textWriter = new TextFileManager(textFile); ItemFileManager fileManager = new ItemFileManager(metadataFile, ItemFileManager.WRITE); for (int i = 0; i < num_items; i++) { String uri = (String) URI_ID.keys()[i]; Runnable worker; if (model == null) { // create worker thread - extraction from endpoint worker = new QueryExecutor( uri, URI_ID.get(uri), props_index, graphURI, endpoint, metadata_counter, properties_counter, metadata_index, textWriter, fileManager, depth); } else { // create worker thread - extraction from tdb local dataset worker = new QueryExecutor( uri, URI_ID.get(uri), props_index, graphURI, endpoint, metadata_counter, properties_counter, metadata_index, textWriter, fileManager, depth, model); } executor.execute(worker); } // This will make the executor accept no new threads // and finish all existing threads in the queue executor.shutdown(); // Wait until all threads are finish executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); if (textWriter != null) textWriter.close(); fileManager.close(); } catch (Exception e) { e.printStackTrace(); } // write metadata index file TextFileUtils.writeData(metadataFile + "_index", metadata_index); // write metadata index file TextFileUtils.writeData("props_index", props_index); }