2010-11-18 5 views
2

を初期化します。 http://jena.sourceforge.net/DB/hsql-howto.htmlから私は次のコードを書いた:JENA:私は<strong>イエナ</strong>と<strong>HSQLDB</strong>を使用して<strong>RDF</strong>データストアを初期化しようとしているHSQLDB RDFデータストア

import com.hp.hpl.jena.db.DBConnection; 
import com.hp.hpl.jena.db.IDBConnection; 
import com.hp.hpl.jena.db.impl.Driver_HSQL; 
import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.rdf.model.ModelMaker; 

public class Test 
    { 
    /** */ 
    private String idbDriver="org.hsqldb.jdbcDriver"; 
    private String idbUrl="jdbc:hsqldb:file:/home/me/DATASTORE.HSQLDB"; 
    private String idbUser="sa"; 
    private String idbPassword=""; 

    /** RDF Model */ 
    private Model model=ModelFactory.createDefaultModel(); 
    /** IDB connection */ 
    private IDBConnection idbConnection=null; 

    public Test() 
     { 

     } 

    public void open() throws Exception 
     { 
     close(); 
     Class.forName(idbDriver); 
     this.idbConnection = new DBConnection(idbUrl, idbUser, idbPassword, "HSQL"); 
     ModelMaker maker = ModelFactory.createModelRDBMaker(this.idbConnection) ; 
     this.model=maker.createDefaultModel(); 
     } 

    public void close()throws Exception 
     { 
     this.model=null; 
     if(this.idbConnection!=null) 
      { 
      // http://jena.sourceforge.net/DB/hsql-howto.html 
      Driver_HSQL.class.cast(this.idbConnection.getDriver()).shutdown(); 
      this.idbConnection.close(); 
      this.idbConnection=null; 
      } 
     } 

    public Model getModel() 
     { 
     return model; 
     } 

    public static void main(String[] args) 
     { 
     try { 
      Test app=new Test(); 
      app.open(); 
      app.close(); 
      } 
     catch (Exception e) 
      { 
      e.printStackTrace(); 
      } 
     } 

    } 

をが、プログラムが実行されたとき、私は次の例外が発生しました:

INFO [main] (?:?) - open start 
INFO [main] (?:?) - open end 
INFO [main] (?:?) - DataFileCache.close(true) : start 
INFO [main] (?:?) - DataFileCache.close() : save data 
INFO [main] (?:?) - DataFileCache.close() : close 
INFO [main] (?:?) - open start 
INFO [main] (?:?) - open end 
WARN [main] (DriverRDB.java:430) - Problem formatting database 
java.sql.SQLException: unexpected token: PRIMARY : line: 3 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) 
    at com.hp.hpl.jena.db.impl.SQLCache.runSQLGroup(SQLCache.java:562) 
    at com.hp.hpl.jena.db.impl.DriverRDB.formatAndConstructSystemSpecializedGraph(DriverRDB.java:427) 
    at com.hp.hpl.jena.db.impl.DriverRDB.getSystemSpecializedGraph(DriverRDB.java:305) 
    at com.hp.hpl.jena.db.impl.DriverRDB.getDefaultModelProperties(DriverRDB.java:834) 
    at com.hp.hpl.jena.db.DBConnection.getDefaultModelProperties(DBConnection.java:164) 
    at com.hp.hpl.jena.db.impl.GraphRDBMaker.consGraph(GraphRDBMaker.java:111) 
    at com.hp.hpl.jena.db.impl.GraphRDBMaker.getGraph(GraphRDBMaker.java:52) 
    at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createDefaultModel(ModelMakerImpl.java:58) 
    at Test.open(Test.java:34) 
    at Test.main(Test.java:58) 
Caused by: org.hsqldb.HsqlException: unexpected token: PRIMARY : line: 3 
    at org.hsqldb.error.Error.parseError(Unknown Source) 
    at org.hsqldb.ParserBase.unexpectedToken(Unknown Source) 
    at org.hsqldb.ParserDDL.compileCreateTableBody(Unknown Source) 
    at org.hsqldb.ParserDDL.compileCreateTable(Unknown Source) 
    at org.hsqldb.ParserDDL.compileCreate(Unknown Source) 
    at org.hsqldb.ParserCommand.compilePart(Unknown Source) 
    at org.hsqldb.ParserCommand.compileStatements(Unknown Source) 
    at org.hsqldb.Session.executeDirectStatement(Unknown Source) 
    at org.hsqldb.Session.execute(Unknown Source) 
    ... 12 more 
com.hp.hpl.jena.shared.JenaException: The database appears to be unformatted or corrupted and 
an attempt to automatically format the database has failed 

    at com.hp.hpl.jena.db.impl.DriverRDB.getSystemSpecializedGraph(DriverRDB.java:311) 
    at com.hp.hpl.jena.db.impl.DriverRDB.getDefaultModelProperties(DriverRDB.java:834) 
    at com.hp.hpl.jena.db.DBConnection.getDefaultModelProperties(DBConnection.java:164) 
    at com.hp.hpl.jena.db.impl.GraphRDBMaker.consGraph(GraphRDBMaker.java:111) 
    at com.hp.hpl.jena.db.impl.GraphRDBMaker.getGraph(GraphRDBMaker.java:52) 
    at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createDefaultModel(ModelMakerImpl.java:58) 
    at Test.open(Test.java:34) 
    at Test.main(Test.java:58) 
Caused by: com.hp.hpl.jena.db.RDFRDBException: java.sql.SQLException: unexpected token: PRIMARY : line: 3 
    at com.hp.hpl.jena.db.impl.DriverRDB.formatAndConstructSystemSpecializedGraph(DriverRDB.java:477) 
    at com.hp.hpl.jena.db.impl.DriverRDB.getSystemSpecializedGraph(DriverRDB.java:305) 
    ... 7 more 

はどうすればこの問題を解決することができますか?

多くのおかげで、

ピエール

答えて

3

Jenaに関する情報は、HSQLDBバージョン1.8.x以上を使用していることを示しています。 1.8.xシリーズの最新バージョンであるHSQLDB 1.8.1.3を試すことができます。

+0

私のバージョンはhsqldb-2.0.1-rc2でした – Pierre

+0

私はHSQLDB 1.8.0.xの適切なサポートを示すコードを見ました。したがって、1.8.1.3と互換性のある1.8.1.3で結果を得るべきです。 – fredt

2

あなたが強くイェーナSDBではなく、RDBを使用することをお勧めしますこれらの日です。 SDBに切り替えます。

ここで間違っていることは、私はHSQL構文について間違っていると言いたいと思います。 RDBが書かれてからHSQLが変わったのでしょうか?あなたは実際の問題の声明を見るためにチェックすることができますか?

関連する問題