0

我在处理语义数据技术方面还有一些问题:我有一个 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);

    }
}

}

4

1 回答 1

1

您还需要关闭查询结果,否则 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 点)

于 2017-05-02T12:44:11.913 回答