Java 如何同时加载和查询RDF

Java 如何同时加载和查询RDF,java,rdf,sparql,semantic-web,sesame,Java,Rdf,Sparql,Semantic Web,Sesame,您能想出任何方法同时加载和查询RDF三元组吗 我只知道在Sesame中,您必须首先初始化存储库(比如加载rdf文件),然后才能通过SPARQL进行查询 假设我们初始化一个RDF存储库(输入一个文件),不希望加载完成,但在加载RDF数据的同时,希望通过SPARQL查询数据以进行验证 对于下面的初始化,应该等到在存储库中加载RDF文件完成(我的假设),然后才能在存储库中查询RDF数据: 文件rdfFile;//参数,RDF文件。 repo=新存储库(newmemorystore()); repo.i

您能想出任何方法同时加载和查询RDF三元组吗

我只知道在Sesame中,您必须首先初始化存储库(比如加载rdf文件),然后才能通过SPARQL进行查询

假设我们初始化一个RDF存储库(输入一个文件),不希望加载完成,但在加载RDF数据的同时,希望通过SPARQL查询数据以进行验证

对于下面的初始化,应该等到在存储库中加载RDF文件完成(我的假设),然后才能在存储库中查询RDF数据:

文件rdfFile;//参数,RDF文件。
repo=新存储库(newmemorystore());
repo.initialize();
试一试{
RepositoryConnection con=repo.getConnection();
试一试{
con.add(rdfFile,null,rdfFormat);
}最后{
con.close();
}
}

在上面的代码中,
RepositoryConnection.add
获取一个
文件作为参数。将
FileInputStream
作为参数是否可以解决问题?(存储库的初始化不会等待加载文件,在加载完成之前可以进行查询).

使用
FileInputStream
而不是
文件
不会对Sesame处理文件的方式产生影响:
add
方法在完全添加数据之前不会返回

但是,您可以通过在加载文件的单独线程中执行查询,然后使用隔离级别为
READ\u UNCOMMITTED
的事务来实现所需的功能。当然,在这种情况下,几乎不能保证查询结果的完整性或一致性,但在技术上是可能的

类似这样的事情(从我的头顶,如此未经测试):

文件rdfFile;//参数,RDF文件。
repo=新存储库(newmemorystore());
repo.initialize();
Thead loader=新线程(){
公开募捐{
try(RepositoryConnection con=repo.getConnection()){
con.add(rdfFile,null,rdfFormat);
}
}
};
Thead query=新线程(){
公开募捐{
try(RepositoryConnection con=repo.getConnection()){
连接开始(IsolationLevels.READ_UNCOMMITTED);
String query=“选择*WHERE…”;
try(TupleQueryResult result=conn.prepareTupleQuery(query.evaluate()){
while(result.hasNext()){
...
}
}
conn.commit();
}
};
loader.start();
query.start();

询问工具建议与SO无关。请尝试描述问题(示例代码)以及您迄今为止试图解决的问题。另外:“同时加载和查询”是什么意思,确切地说?我很确定,如果你想,你可以设置一个Sesame存储库,将数据加载到其中,然后用大约3-6行代码查询它-如果你想简化它,你可以很容易地自己编写一个快速实用程序方法。所以你要找的东西也不是很清楚。你好,我编辑了这篇文章。我会让你知道的文本很清楚,抱歉。问题是不要等待在存储库中加载RDF并能够在RDF文件完全加载之前进行查询。您可以使用多线程同时执行任务。IMO-我看不到一个有用的用例来回答您的问题。非常感谢。add方法的参数如何?没有什么不同吗是否需要使用FileInputStream而不是File?@javadeveloper这没什么区别。我已经更新了答案来解释这一点。当然可以,请给我一点时间。谢谢;)