| 推理,也将在数据库层解决.速度会很快.复制代码package org.bsirc.xmltoontology;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.Date;
import java.util.GregorianCalendar;
import org.bsirc.xmltoontology.db.oracle.OraRDFClient;
import org.bsirc.xmltoontology.db.oracle.OracleJenaConn;
import oracle.spatial.rdf.client.jena.GraphOracleSem;
import oracle.spatial.rdf.client.jena.ModelOracleSem;
import oracle.spatial.rdf.client.jena.Oracle;
import oracle.spatial.rdf.client.jena.OracleBulkUpdateHandler;
import com.hp.hpl.jena.graph.Graph;
import com.hp.hpl.jena.graph.GraphUtil;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.RDFWriter;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.vocabulary.RDF;
import com.hp.hpl.jena.vocabulary.RDFS;
public class OraExample {
        
        // some default values 
        private static String userName = "rdf";
        private static String password = "rdf";
        private static String host = "192.168.0.31";
        private static String sid = "cbpr";
        private static String port = "1134";
        private static String semTblSpaceName="rdf_tblspace";
    
    private static OntModel oraOntModel;
        private static String Tmhhs = "http://www.phinformatics.org/Ontology/Tmhhs.owl";
        
    public static Oracle getOracle() throws SQLException
        {
                Oracle orcl=null;
                String jdbcConn = "jdbc:oracle:thin:@" + host + ":"
                + port + ":" + sid;
                try {
                        orcl=new Oracle(jdbcConn, userName, password);
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
                return orcl;
        }
    
        public static void main(String[] args) {
                try
                {
                        //Recording Start Time
                        GregorianCalendar day = new GregorianCalendar();
                        Date startProcessTime= day.getTime();
                        System.out.println(startProcessTime.toLocaleString());
                        
                        //Your model name goes here...Each OntModel will have a unique model name
                        String modelName="X7Param";
                        
                        //Getting Oracle Connection
                        Oracle orcl=getOracle();
                        
                        //Use this statement for loading already existing models from Oracle 
                        //oraOntModel=createInMemOwlModel(orcl,modelName);
        
                        //Use this to load your local file to Oracle for first time
                        oraOntModel = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM, null );
                        oraOntModel.read("file:\\C:\\Users\\nkunapareddy\\NK_Workspace\\XMLToOntology\\Parameter.OWL");
                        /*Your custom code to modify OntModel goes here....
                        OntClass oTest=oraOntModel.createClass(Tmhhs+"#OraTest");
                        for(int i=0;i<1000;i++)
                        {
                                oTest.addSubClass(oraOntModel.createResource(Tmhhs+"#OraTest"+String.valueOf(i)+"Sub").addProperty(RDF.type, RDFS.Class));
                        }
                        */
                        
                        //Model Connection
                        Model modelOracle = ModelOracleSem.createOracleSemModel(orcl, modelName);
                        GraphOracleSem g = (GraphOracleSem) modelOracle.getGraph();
                        try
                        {
                                g.dropApplicationTableIndex();
                        }
                        catch(Exception ex)
                        {
                                ex.printStackTrace();
                        }    
                    ((OracleBulkUpdateHandler) g.getBulkUpdateHandler()).addInBatch(
                      GraphUtil.findAll(oraOntModel.getGraph()), semTblSpaceName);
                    g.rebuildApplicationTableIndex();
                    orcl.dispose();
                        
                        //saveModel();
                    
                    //Recording End Time
                        GregorianCalendar day2 = new GregorianCalendar();
                        Date endProcessTime = day2.getTime();
                        System.out.println(endProcessTime.toLocaleString());
                }
                catch(Exception ex)
                {
                        ex.printStackTrace();
                }
        } 
        /**
           * This method returns an in-memory OWL model given an Oracle RDF Model.
           */
          public static OntModel createInMemOwlModel(Oracle oracle,String modelName) throws SQLException
          {
            Graph gr = null;
            OntModel ontModel = null;
           
            try {
              Model modelOracle = ModelOracleSem.createOracleSemModel(oracle, modelName);
              gr = modelOracle.getGraph();
              ontModel = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM, null );
              ontModel.add(modelOracle);
            }
            finally {
              if (gr != null) gr.close();
            }
            return ontModel;
          }
          private static void saveModel() {
                 
                        try {
                                 
                                // Now write the model in XML form to a file
                                String fileName = "C:\\Documents and Settings\\nkunapareddy\\NK_Workspace\\XMLToOntology\\TmhhsOra.owl";
                                FileOutputStream fout = new FileOutputStream(fileName);
                                RDFWriter writer = oraOntModel.getWriter("RDF/XML");
                                writer.setProperty("xmlbase", Tmhhs);
                                writer.write(oraOntModel.getBaseModel(), fout, Tmhhs);
                        } catch (Exception ex) {
                                System.out.println(ex);
                        }
                }
}
 |