virtuoso-opensource:使用 jenaprovider,如何从文件而不是 URL 中读取数据?
virtuoso-opensource: using jenaprovider, how to read data from file instead of from URL?
使用 virtuoso
的 jena provider
从 URL 加载数据非常简单。以下代码完成这项工作:
VirtGraph graph = new VirtGraph ("foaf", "jdbc:virtuoso://localhost:1111", "dba", "dba");
/* Load data to Virtuoso */
System.out.print ("Begin read from 'http://xmlns.com/foaf/0.1/index.rdf' ");
graph.read("http://xmlns.com/foaf/0.1/index.rdf", "RDF/XML");
然而,当你想从本地文件加载它们时,情况就不同了。我试过这个:
VirtGraph graph = new VirtGraph ("foaf", "jdbc:virtuoso://localhost:1111", "dba", "dba");
graph.read("/tmp/index.rdf", "RDF/XML");
graph.close();
但我最终遇到以下异常:
com.hp.hpl.jena.shared.JenaException: virtuoso.jdbc4.VirtuosoException: HC001: Connection Error in HTTP Client
有人知道如何使用 jenaprovider 从文件加载 rdf 吗?
配置设置
virt_jena2.jar
virtjdbc4.jar
不要只提供文件名,而是使用 file URI。例如:
graph.read("file:///tmp/index.rdf", "RDF/XML");
关于你的第一个例子:
VirtGraph graph = new VirtGraph ("foaf", "jdbc:virtuoso://localhost:1111", "dba", "dba");
graph.read("http://xmlns.com/foaf/0.1/index.rdf", "RDF/XML");
它被转换为下一个 SPARQL 命令(在服务器端执行 - Sources):
load "http://xmlns.com/foaf/0.1/index.rdf" into graph <foaf>
并且此命令不允许将您的本地文件加载到 DBMS。
您可以使用 Jena 模型方法来加载本地文件。喜欢下一个 (Jena Model reference):
Model model = VirtModel.openDatabaseModel("load:test", "jdbc:virtuoso://localhost:1111", "dba", "dba");
InputStream in = FileManager.get().open( nfile );
if (in == null) {
throw new IllegalArgumentException( "File: " + nfile + " not found");
}
model.read(new InputStreamReader(in), null, "N-TRIPLE");
model.close();
使用 virtuoso
的 jena provider
从 URL 加载数据非常简单。以下代码完成这项工作:
VirtGraph graph = new VirtGraph ("foaf", "jdbc:virtuoso://localhost:1111", "dba", "dba");
/* Load data to Virtuoso */
System.out.print ("Begin read from 'http://xmlns.com/foaf/0.1/index.rdf' ");
graph.read("http://xmlns.com/foaf/0.1/index.rdf", "RDF/XML");
然而,当你想从本地文件加载它们时,情况就不同了。我试过这个:
VirtGraph graph = new VirtGraph ("foaf", "jdbc:virtuoso://localhost:1111", "dba", "dba");
graph.read("/tmp/index.rdf", "RDF/XML");
graph.close();
但我最终遇到以下异常:
com.hp.hpl.jena.shared.JenaException: virtuoso.jdbc4.VirtuosoException: HC001: Connection Error in HTTP Client
有人知道如何使用 jenaprovider 从文件加载 rdf 吗?
配置设置 virt_jena2.jar virtjdbc4.jar
不要只提供文件名,而是使用 file URI。例如:
graph.read("file:///tmp/index.rdf", "RDF/XML");
关于你的第一个例子:
VirtGraph graph = new VirtGraph ("foaf", "jdbc:virtuoso://localhost:1111", "dba", "dba");
graph.read("http://xmlns.com/foaf/0.1/index.rdf", "RDF/XML");
它被转换为下一个 SPARQL 命令(在服务器端执行 - Sources):
load "http://xmlns.com/foaf/0.1/index.rdf" into graph <foaf>
并且此命令不允许将您的本地文件加载到 DBMS。 您可以使用 Jena 模型方法来加载本地文件。喜欢下一个 (Jena Model reference):
Model model = VirtModel.openDatabaseModel("load:test", "jdbc:virtuoso://localhost:1111", "dba", "dba");
InputStream in = FileManager.get().open( nfile );
if (in == null) {
throw new IllegalArgumentException( "File: " + nfile + " not found");
}
model.read(new InputStreamReader(in), null, "N-TRIPLE");
model.close();