Package org.deri.grefine.rdf

Source Code of org.deri.grefine.rdf.Util

package org.deri.grefine.rdf;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.Properties;

import org.deri.grefine.rdf.app.ApplicationContext;
import org.deri.grefine.rdf.expr.util.RdfExpressionUtil;
import org.deri.grefine.rdf.vocab.VocabularyIndexException;

import com.google.refine.expr.Evaluable;
import com.google.refine.expr.ExpressionUtils;
import com.google.refine.expr.MetaParser;
import com.google.refine.expr.ParsingException;
import com.google.refine.model.Project;
import com.google.refine.model.Row;

public class Util {

  private static final String XSD_INT_URI = "http://www.w3.org/2001/XMLSchema#int";
  private static final String XSD_DOUBLE_URI = "http://www.w3.org/2001/XMLSchema#double";
  private static final String XSD_DATE_URI = "http://www.w3.org/2001/XMLSchema#date";

  public static String resolveUri(URI base, String rel) {
    // FIXME
    try {
      URI relUri = new URI(rel);
      if (relUri.isAbsolute()) {
        return rel;
      }
    } catch (URISyntaxException e) {
      // silent
    }
    String res;
    try{
      res = resolveRelativeURI(base,rel);
      new URI(res);
      return res;
    }catch(Exception ex){
      //try encoding
      String encodedRel;
      try {
        encodedRel = URLEncoder.encode(rel, "UTF-8");
      } catch (UnsupportedEncodingException e) {
        //silent
        return "";
      }
      return resolveRelativeURI(base, encodedRel);
    }
  }

  private static String resolveRelativeURI(URI base, String rel){
    if (base.getFragment() != null) {
      return base + rel;
    }
    return base.resolve(rel).toString();
  }
 
  public static String getDataType(URI base,String s) {
    if (s == null) {
      return null;
    }
    if (s.equals(XSD_INT_URI)) {
      return XSD_INT_URI;
    }
    if (s.equals(XSD_DOUBLE_URI)) {
      return XSD_DOUBLE_URI;
    }
    if (s.equals(XSD_DATE_URI)) {
      return XSD_DATE_URI;
    }
    return resolveUri(base,s);
  }

  public static RdfSchema getProjectSchema(ApplicationContext ctxt, Project project) throws VocabularyIndexException, IOException {
    synchronized (project) {
      RdfSchema rdfSchema = (RdfSchema) project.overlayModels
          .get("rdfSchema");
      if (rdfSchema == null) {
        rdfSchema = new RdfSchema(ctxt,project);

        project.overlayModels.put("rdfSchema", rdfSchema);
        project.getMetadata().updateModified();
      }

      return rdfSchema;
    }
  }

  public static URI buildURI(String uri) {
    try {
      URI baseUri = new URI(uri);
      return baseUri;
    } catch (URISyntaxException e) {
      throw new RuntimeException("malformed Base URI " + uri, e);
    }
  }
 
  public static Object evaluateExpression(Project project, String expression, String columnName, Row row, int rowIndex) throws ParsingException{
   
    Properties bindings = ExpressionUtils.createBindings(project);
        Evaluable eval = MetaParser.parse(expression);
       
        int cellIndex = (columnName==null||columnName.equals(""))?-1:project.columnModel.getColumnByName(columnName).getCellIndex();
       
        return RdfExpressionUtil.evaluate(eval,bindings, row, rowIndex,columnName , cellIndex);
  }
}
TOP

Related Classes of org.deri.grefine.rdf.Util

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.