I'm trying to initialize a RDF datastore using Jena and HSQLDB. From http://jena.sourceforge.net/DB/hsql-howto.html I wrote the following code:
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();
}
}
}
but when the program was executed, I got the following exception:
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
How can I fix this problem ?
Many thanks,
Pierre
The information on Jena indicates they used HSQLDB version 1.8.x or older. You can try HSQLDB 1.8.1.3 which is the latest in the 1.8.x series.