星狗数据库创建文件未发现异常



我正在用java创建一个新的stardog数据库。

当我创建数据库并在本地主机中导入RDF文件时,其工作

但是当我在远程服务器上创建db时,我得到了一个文件,没有发现相同RDF文件的异常。

请看看我的代码

    System.out.println("start updating db");
    String myDBName = "myDB" ;
    StardogDBMS dbms =
            //StardogDBMS.toServer("snarl://localhost:5820/")
            StardogDBMS.toServer("snarl://myRemoteServer:5820/")
            .credentials("admin", "admin".toCharArray()).login();
    File file = new File("src\main\webapp\test.rdf"))
    System.out.println("creating " + myDBName +" and loading the rdf file" );
    dbms.disk(myDBName).create(file));
    dbms.logout();
    System.out.println("created " + myDBName +" and loaded the rdf file" );

请帮助。是否有任何周转像传递一个流到数据库导入RDF文件。这是我得到的例外。

start updating db
creating myDB and loading the rdf file      
File: xxxxxxxtest.RDF Message: java.io.FileNotFoundException: xxxxxxxtest.RDF (No such file or directory)
created myDB and loaded the rdf file

该错误信息表明磁盘数据库的批量加载程序无法找到指定的文件。当使用SNARL协议时,文件不会从客户端传输到服务器以进行批量加载,这可能是错误的根源。

如果服务器&客户端运行在同一台机器上,当服务器读取它时,您的相对路径可能是不正确的,该路径将相对于STARDOG_HOME,在这种情况下可能是不正确的。因此,如果它们都在同一台机器上,使用绝对路径应该可以工作。如果它们位于不同的机器上,则从具有服务器的机器上的CLI批量加载。

如果您想使用HTTP,文件将被传输,但是由于将文件发送到服务器的网络开销,您将获得较差的批量负载性能。同样,您最适合在使用服务器的机器上执行批量加载。

在不知道dbms.disk(myDBName).create(file));正在做什么的情况下很难说,但是您确定它没有试图读取本地存在但不在远程服务器上的文件src\main\webapp\test.rdf吗?

我猜Michael的回答是异常的原因。我找到了一个解决这个问题的方法。

代替创建数据库和批量加载RDF/OWL文件。创建到stardog DB的连接。并通过连接导入RDF文件。

示例代码如下

System.out.println("start updating db");
String myDBName = "myDB" ;
StardogDBMS dbms =
        //StardogDBMS.toServer("snarl://localhost:5820/")
        StardogDBMS.toServer("snarl://myRemoteServer:5820/")
        .credentials("admin", "admin".toCharArray()).login();
File file = new File("src\main\webapp\test.rdf"))
System.out.println("creating " + myDBName);
dbms.disk(myDBName).create());
dbms.logout();
aConn = ConnectionConfiguration.to(myDBName) // the name of the db to connect to
            .credentials("admin", "admin") // the credentials with which to connect
            .url("snarl://myRemoteServer:5820/")
            .connect(); // now open the connection
    System.out.println("importing files to "+myDBName);
    aConn.begin();
    aConn.add().io().format(RDFFormat.RDFXML).stream(file);     
    aConn.commit();
    System.out.println("files imported to "+myDBName);
    System.out.println("DB Updated");

相关内容

  • 没有找到相关文章

最新更新