gpt4 book ai didi

java - JENA:初始化 HSQLDB RDF 数据存储

转载 作者:行者123 更新时间:2023-11-30 06:36:52 26 4
gpt4 key购买 nike

我正在尝试使用 JenaHSQLDB 初始化一个 RDF 数据存储。来自 http://jena.sourceforge.net/DB/hsql-howto.html我写了下面的代码:

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

我该如何解决这个问题?

非常感谢,

皮埃尔

最佳答案

Jena 上的信息表明他们使用的是 HSQLDB 1.8.x 或更早的版本。您可以试用 HSQLDB 1.8.1.3,这是 1.8.x 系列的最新版本。

关于java - JENA:初始化 HSQLDB RDF 数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4215246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com