Package org.ontoware.rdf2go.impl.jena

Source Code of org.ontoware.rdf2go.impl.jena.ModelFactoryImpl

package org.ontoware.rdf2go.impl.jena;

import java.util.Properties;

import org.ontoware.rdf2go.ModelFactory;
import org.ontoware.rdf2go.Reasoning;
import org.ontoware.rdf2go.exception.ModelRuntimeException;
import org.ontoware.rdf2go.impl.AbstractModelFactory;
import org.ontoware.rdf2go.model.Model;
import org.ontoware.rdf2go.model.ModelSet;
import org.ontoware.rdf2go.model.QueryResultTable;
import org.ontoware.rdf2go.model.node.URI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.jsonldjava.jena.JenaJSONLD;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.DatasetFactory;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;


public class ModelFactoryImpl extends AbstractModelFactory implements ModelFactory {
 
    static {
        JenaJSONLD.init();
    }
   
  protected static final Logger log = LoggerFactory.getLogger(ModelFactoryImpl.class);
 
  public static final String BACKEND = "back-end";
 
  public static final String MEMORY = "memory";
 
  public static final String DATABASE = "database";
 
  public static final String SQL_DRIVERNAME = "sql_drivername";
 
  public static final String DB_TYPE = "db_type";
 
  public static final String DB_CONNECT_STRING = "db_connect_string";
 
  public static final String DB_USER = "db_user";
 
  public static final String DB_PASSWD = "db_passwd";
 
  public static final String FILE = "file";
 
  public static final String FILENAME = "filename";
 
  @Override
  public Model createModel(Properties p) throws ModelRuntimeException {
    com.hp.hpl.jena.rdf.model.Model model;
   
    String backend = p.getProperty(BACKEND);
   
    // default to in-memory model
    if(backend == null) {
      backend = MEMORY;
    }
   
    Reasoning reasoning = AbstractModelFactory.getReasoning(p);
   
    if(backend.equalsIgnoreCase(MEMORY)) {
      model = com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel();
      assert model != null;
    } else if(backend.equalsIgnoreCase(DATABASE)) {
      throw new ModelRuntimeException(
              "This release of RDF2Go no longer supports Jena database backends. Use RDF2Go-Jena 2.6 or wait until we support SDB or TDB.");
      // gone: return ModelFactoryImpl_RDB.createModel(p);
    } else if(backend.equalsIgnoreCase(FILE)) {
      String filename = p.getProperty(FILENAME);
      if(filename == null) {
        throw new RuntimeException("Please specify a filename in your property file!");
      }
      ModelMaker maker = getFileModelMaker(filename);
      model = maker.createDefaultModel();
    } else {
      throw new IllegalArgumentException("Illegal back-end type: " + backend);
    }
   
    // reasoning
   
    switch(reasoning) {
    case rdfsAndOwl:
    case owl:
      com.hp.hpl.jena.rdf.model.Model owlModel = com.hp.hpl.jena.rdf.model.ModelFactory
              .createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF, model);
      return new ModelImplJena(owlModel);
    case rdfs:
      com.hp.hpl.jena.rdf.model.Model rdfsModel = com.hp.hpl.jena.rdf.model.ModelFactory
              .createRDFSModel(model);
      return new ModelImplJena(rdfsModel);
    default:
      return new ModelImplJena(model);
    }
   
  }
 
  @Override
  public Model createModel(URI contextURI) throws ModelRuntimeException {
    com.hp.hpl.jena.rdf.model.Model model = com.hp.hpl.jena.rdf.model.ModelFactory
            .createDefaultModel();
    return new ModelImplJena(contextURI, model);
  }
 
  private static ModelMaker getFileModelMaker(String filename) {
    return com.hp.hpl.jena.rdf.model.ModelFactory.createFileModelMaker(filename);
  }
 
  @Override
  public ModelSet createModelSet(Properties p) throws ModelRuntimeException {

    com.hp.hpl.jena.query.Dataset dataset;
   
    String backend = p.getProperty(BACKEND);
   
    // default to in-memory model
    if(backend == null) {
      backend = MEMORY;
    }
   
    Reasoning reasoning = AbstractModelFactory.getReasoning(p);
   
    if(backend.equalsIgnoreCase(MEMORY)) {
      dataset = DatasetFactory.createMem();
      assert dataset != null;
    } else if(backend.equalsIgnoreCase(DATABASE)) {
      throw new ModelRuntimeException(
              "This release of RDF2Go no longer supports Jena database backends. Use RDF2Go-Jena 2.6 or wait until we support SDB or TDB.");
    } else if(backend.equalsIgnoreCase(FILE)) {
      String filename = p.getProperty(FILENAME);
      if(filename == null) {
        throw new RuntimeException("Please specify a filename in your property file!");
      }
      throw new ModelRuntimeException(
              "This release of RDF2Go does not support ModelSets backed by files.");
    } else {
      throw new IllegalArgumentException("Illegal back-end type: " + backend);
    }
   
    switch(reasoning) {
    case rdfsAndOwl:
    case owl:
      throw new ModelRuntimeException(
              "This release of RDF2Go does not support ModelSets with reasoning capability.");
    case rdfs:
      throw new ModelRuntimeException(
              "This release of RDF2Go does not support ModelSets with reasoning capability.");
    default:
      return new ModelSetImplJena(dataset);
    }
  }
 
  @Override
  public QueryResultTable sparqlSelect(String url, String queryString) {
    log.debug("Query " + queryString);
    QueryExecution qe = QueryExecutionFactory.sparqlService(url, queryString);
    return new QueryResultTableImpl(qe);
  }
 
}
TOP

Related Classes of org.ontoware.rdf2go.impl.jena.ModelFactoryImpl

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.