RDF4J 仅针对三重存储安排 5 个查询
RDF4J only scheduling 5 Queries against a Triple Store
我在处理语义数据技术方面还有一些问题:
我在我的机器上本地有一个 GraphDB Triplestor 运行,尝试使用 RDF4J 和 Java 安排一些针对它的 SPARQL 查询。正如您从下面的代码中看到的那样,将连续启动 10 个查询。但是只有 5 个启动(我在控制台中看到数字 0 - 4)。问题似乎是出于某种原因,我只能打开 5 个 HTTP 连接。 repConn.close() 的任何调用似乎都没有改变任何东西。有人有什么想法吗?
import org.eclipse.rdf4j.query.QueryLanguage;
import org.eclipse.rdf4j.query.TupleQuery;
import org.eclipse.rdf4j.query.TupleQueryResult;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.http.HTTPRepository;
public class testmain {
public HTTPRepository rep;
public RepositoryConnection repConn;
public static void main(String[] args) {
testmain test = new testmain();
test.rep = new HTTPRepository("http://localhost:7200/repositories/test01");
//test.repConn = test.rep.getConnection();
for (int i = 0; i < 10; i++) {
test.repConn = test.rep.getConnection();
String queryString = "select ?archiveID where { ?video <http://www.some.ns/ontology##hasArchiveID> ?archiveID .}";
try {
TupleQuery tupleQuery = test.repConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult queryResult = tupleQuery.evaluate();
} finally {
test.repConn.close();
}
System.out.println(i);
}
}
}
您还需要关闭查询结果,否则 repCon.close 不会执行任何操作。
try {
TupleQuery tupleQuery = test.repConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult queryResult = tupleQuery.evaluate();
queryResult.close(); // this should solve your issue
}
或者更好地使用新的 rdf4j 流 API(QueryResults.stream(gqr))。这为你关闭了一切。 http://docs.rdf4j.org/migration/(第 2.6.5 点)
我在处理语义数据技术方面还有一些问题: 我在我的机器上本地有一个 GraphDB Triplestor 运行,尝试使用 RDF4J 和 Java 安排一些针对它的 SPARQL 查询。正如您从下面的代码中看到的那样,将连续启动 10 个查询。但是只有 5 个启动(我在控制台中看到数字 0 - 4)。问题似乎是出于某种原因,我只能打开 5 个 HTTP 连接。 repConn.close() 的任何调用似乎都没有改变任何东西。有人有什么想法吗?
import org.eclipse.rdf4j.query.QueryLanguage;
import org.eclipse.rdf4j.query.TupleQuery;
import org.eclipse.rdf4j.query.TupleQueryResult;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.http.HTTPRepository;
public class testmain {
public HTTPRepository rep;
public RepositoryConnection repConn;
public static void main(String[] args) {
testmain test = new testmain();
test.rep = new HTTPRepository("http://localhost:7200/repositories/test01");
//test.repConn = test.rep.getConnection();
for (int i = 0; i < 10; i++) {
test.repConn = test.rep.getConnection();
String queryString = "select ?archiveID where { ?video <http://www.some.ns/ontology##hasArchiveID> ?archiveID .}";
try {
TupleQuery tupleQuery = test.repConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult queryResult = tupleQuery.evaluate();
} finally {
test.repConn.close();
}
System.out.println(i);
}
}
}
您还需要关闭查询结果,否则 repCon.close 不会执行任何操作。
try {
TupleQuery tupleQuery = test.repConn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult queryResult = tupleQuery.evaluate();
queryResult.close(); // this should solve your issue
}
或者更好地使用新的 rdf4j 流 API(QueryResults.stream(gqr))。这为你关闭了一切。 http://docs.rdf4j.org/migration/(第 2.6.5 点)