繁体   English   中英

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点)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM