以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  用jena存储两个.owl时出现的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=17038)


--  作者: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>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms