-- 作者:lngxt
-- 发布时间:4/15/2005 9:34:00 PM
-- 用jena存储两个.owl时出现的问题
这是Jena Document中的例子,在mysql中存储两个.owl。 出现的问题是 Exception in thread "main" com.hp.hpl.jena.db.RDFRDBException: Failure to instantiate DB Driver:MySQL java.sql.SQLException: No suitable driver 上面要求的是这个驱动mysql-connector-java-3.0.8-stable.jar ,可我下载到的驱动是mysql-connector-java-3.0.8-stable.zip,这里面有个mysql-connector-java-3.0.8-stable-bin.jar,难道这个驱动不能用? 可我另写了一个小程序是可以连上去的,不知道是怎么回事, 有没有人试过这个例子? import java.util.*; import com.hp.hpl.jena.db.*; import com.hp.hpl.jena.ontology.*; import com.hp.hpl.jena.rdf.model.*; public class PersistentOntology { // Constants public static final String ONT1 = "urn:x-hp-jena:test1"; public static final String ONT2 = "urn:x-hp-jena:test2"; static String DB_URL = "jdbc:mysql://localhost/jenatest"; static String DB_USER = "root"; static String DB_PASSWD = "chair"; static String DB = "MySQL"; static String DBDRIVER_CLASS = "com.mysql.jdbc.Driver"; public static void main( String[] args ) { new PersistentOntology().go( args ); } protected void go( String[] args ) { if (args.length > 0 && args[0].equals( "reload" )) { reloadDB(); } listClasses(); } protected void reloadDB() { ModelMaker maker = getMaker(); // clear out the old if (maker.hasModel( ONT1 )) maker.removeModel( ONT1 ); if (maker.hasModel( ONT2 )) maker.removeModel( ONT2 ); // create a spec for the new ont model OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_MEM_RULE_INF ); spec.setModelMaker( maker ); // create the base model as a persistent model Model base = maker.createModel( ONT1 ); OntModel m = ModelFactory.createOntologyModel( spec, base ); // tell m where to find the content for ont2 m.getDocumentManager().addAltEntry( ONT2, "file:test2.owl" ); // now load the document for test1, which will import ONT2 m.read( "file:test.owl" ); } protected void listClasses() { OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_MEM_RULE_INF ); spec.setModelMaker( getMaker() ); OntModel m = ModelFactory.createOntologyModel( spec, getMaker().createModel( ONT1 ) ); for (Iterator i = m.listClasses(); i.hasNext(); ) { OntClass c = (OntClass) i.next(); System.out.println( "Class " + c.getURI() ); } } protected ModelMaker getMaker() { try { IDBConnection conn = new DBConnection ( DB_URL, DB_USER, DB_PASSWD,DB); // Create a model maker object return ModelFactory.createModelRDBMaker(conn); } catch (Exception e) { e.printStackTrace(); System.exit( 1 ); } return null; } // Internal implementation methods } /********************* test.owl *************************/ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE owl [ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> <!ENTITY owl 'http://www.w3.org/2002/07/owl#' > <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#' > ]> <rdf:RDF xmlns:owl="&owl;" xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns="urn:x-hp-jena:test1#" xml:base = "urn:x-hp-jena:test1" > <owl:Ontology rdf:about=""> <owl:imports rdf:resource="urn:x-hp-jena:test2" /> </owl:Ontology> <owl:Class rdf:ID="Test1A"/> <owl:Class rdf:ID="Test1B"> <rdfs:subClassOf rdf:resource="#Test1A"/> </owl:Class> </rdf:RDF> /***************** test2.owl ********************************/ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE owl [ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> <!ENTITY owl 'http://www.w3.org/2002/07/owl#' > <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#' > ]> <rdf:RDF xmlns:owl="&owl;" xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:test1="urn:x-hp-jena:test1#" xmlns="urn:x-hp-jena:test2#" xml:base = "urn:x-hp-jena:test2" > <owl:Ontology rdf:about=""> </owl:Ontology> <owl:Class rdf:ID="Test2A"/> <test1:Test1A rdf:ID="test1a" /> </rdf:RDF>
|