Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* 
   *  Copyright or © or Copr. Ecole des Mines d'Alès (2012-2014) 
   *  
   *  This software is a computer program whose purpose is to provide 
   *  several functionalities for the processing of semantic data 
   *  sources such as ontologies or text corpora.
   *  
   *  This software is governed by the CeCILL  license under French law and
   *  abiding by the rules of distribution of free software.  You can  use, 
  *  modify and/ or redistribute the software under the terms of the CeCILL
  *  license as circulated by CEA, CNRS and INRIA at the following URL
  *  "http://www.cecill.info". 
  * 
  *  As a counterpart to the access to the source code and  rights to copy,
  *  modify and redistribute granted by the license, users are provided only
  *  with a limited warranty  and the software's author,  the holder of the
  *  economic rights,  and the successive licensors  have only  limited
  *  liability. 
 
  *  In this respect, the user's attention is drawn to the risks associated
  *  with loading,  using,  modifying and/or developing or reproducing the
  *  software by the user in light of its specific status of free software,
  *  that may mean  that it is complicated to manipulate,  and  that  also
  *  therefore means  that it is reserved for developers  and  experienced
  *  professionals having in-depth computer knowledge. Users are therefore
  *  encouraged to load and test the software's suitability as regards their
  *  requirements in conditions enabling the security of their systems and/or 
  *  data to be ensured and,  more generally, to use and operate it in the 
  *  same conditions as regards security. 
  * 
  *  The fact that you are presently reading this means that you have had
  *  knowledge of the CeCILL license and that you accept its terms.
  */
 package slib.graph.io.loader.csv;
 
 import java.util.Map;
 
 

Author(s):
Sébastien Harispe <sebastien.harispe@gmail.com>
 
 public class GraphLoader_CSV implements GraphLoader {
 
     boolean skipHeader = false;
     URIFactoryMemory dataRepo = URIFactoryMemory.getSingleton();
     Pattern pattern = null// the one used
     G g;
     Logger logger = LoggerFactory.getLogger(this.getClass());

    

Parameters:
id
prefix
 
     public void addMapping(int idString prefix) {
 
         if (prefix == null) {
             prefix = "";
         }
 
         .put(idnew CSV_Mapping(idprefix));
     }

    

Parameters:
src_id
target_id
predicate_URI
 
     public void addStatementTemplate(int src_idint target_idURI predicate_URI) {
 
         assert predicate_URI != null;
 
         .put(src_idnew CSV_StatementTemplate(src_idtarget_idpredicate_URI));
     }
 
     @Override
    public void populate(GDataConf confG gthrows SLIB_Exception {
        .info("-------------------------------------");
        .info("Loading CSV.");
        .info("-------------------------------------");
        this. = g;
        loadConf(conf);
        loadCSV(conf.getLoc());
        .info("CSV specification loaded.");
        .info("-------------------------------------");
    }
    private void loadConf(GDataConf confthrows SLIB_Ex_Critic {
        String header = (Stringconf.getParameter("header");
        if (header == null || Util.stringToBoolean(header) == true) {
             = true;
        }
        .info("Skipping header " + );
        String separator = (Stringconf.getParameter("separator");
        if (separator == null) {
             = Pattern.compile("\\t");
        } else {
             = Pattern.compile(separator);
        }
        HashMap<IntegerCSV_MappingmappingsLocal = (HashMap<IntegerCSV_Mapping>) conf.getParameter("mappings");
        HashMap<IntegerCSV_StatementTemplatestatementTemplatesLocal = (HashMap<IntegerCSV_StatementTemplate>) conf.getParameter("statementTemplates");
        if (mappingsLocal != null) {
            this..putAll(mappingsLocal);
        }
        if (statementTemplatesLocal != null) {
            this..putAll(statementTemplatesLocal);
        }
        if (this..isEmpty()) {
            throw new SLIB_Ex_Critic("Please specify a mapping for CSV loader");
        }
        if (this..isEmpty()) {
            throw new SLIB_Ex_Critic("Please specify a statement template for CSV loader");
        }
    }
    private void loadCSV(String filepaththrows SLIB_Exception {
        long evaluated = 0; // number of statements evaluated according to the templates defined
        long rejected = 0; // those excluded due to specified constraints.
        try {
            FileInputStream fstream = new FileInputStream(filepath);
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String line;
            String[] data;
            while ((line = br.readLine()) != null) {
                if () {
                     = false;
                    continue;
                }
                line = line.trim();
                data = .split(line);
                for (CSV_StatementTemplate t : .values()) {
                    if (!buildStatement(tdata)) {
                        rejected++;
                    }
                    evaluated++;
                }
            }
            in.close();
        } catch (IOException e) {
            throw new SLIB_Ex_Critic(e.getMessage());
        }
        .info("Number of statements rejected due to constraint: " + rejected + "/" + evaluated);
        .info("CSV Loading ok.");
    }

    

Parameters:
t
data
Returns:
boolean success.
Throws:
SGL_Ex_Critic
    private boolean buildStatement(CSV_StatementTemplate tString[] datathrows SLIB_Ex_Critic {
        URI subject = buildURI(t.src_iddata);
        URI object = buildURI(t.target_iddata);
        boolean valid = true;
        for (CSV_StatementTemplate_Constraint c : t.constraints) {
            // Check existence of an element of the statement
            if (c.type == .) {
                if (c.onElement == . && !.containsVertex(subject)) {
                    valid = false;
                }
                if (c.onElement == . && !.containsVertex(object)) {
                    valid = false;
                }
            }
            if (!valid) {
                break;
            }
        }
        if (valid) {
            .addE(subjectt.predicateobject);
            return true;
        }
        return false;
    }
    private URI buildURI(int idString[] datathrows SLIB_Ex_Critic {
        CSV_Mapping vmap = .get(id);
        if (vmap == null || data.length - 1 < id) {
            throw new SLIB_Ex_Critic("Cannot load statement considering the given configuration. Error parsing " + Arrays.toString(data));
        }
        String uriAsString = data[id];
        if (vmap.prefix != null) {
            uriAsString = vmap.prefix + uriAsString;
        }
        return .getURI(uriAsString);
    }
New to GrepCode? Check out our FAQ X