请帮忙。
到目前为止,我知道如何将 Jena 与 ARQ(命令行)一起使用,加载 xml 文件,将查询写入 query.rq 文件并使用以下命令运行查询:
LinkedMDB使用D2R服务器在http://data.linkedmdb.org/sparql
. _
如果符合要求,则可以使用 Jena 查询端点:
final String service = "http://data.linkedmdb.org/sparql";
final Query query = QueryFactory.create("SELECT * WHERE { ?s ?p ?o } LIMIT 1");
final QueryExecution exec = QueryExecutionFactory.createServiceRequest(service, query);
final ResultSet resultSet = exec.execSelect();
ResultSetFormatter.out(resultSet);
这有效并提供类似于以下内容的输出:
------------------------------------------------------------------------------------------------------------------------------------------------------------
| s | p | o |
============================================================================================================================================================
| <http://data.linkedmdb.org/resource/film_distribution_medium/1> | <http://www.w3.org/2000/01/rdf-schema#label> | "Theatrical (Film Distribution Medium)" |
------------------------------------------------------------------------------------------------------------------------------------------------------------
如果您想提取数据并将其存储在其他模型中,那么联合查询将是一种合适的方式:
final Model localModel = ModelFactory.createDefaultModel();
final Query query = QueryFactory.create(
"CONSTRUCT { ?s ?p ?o } WHERE {\n"+
" SERVICE <http://data.linkedmdb.org/sparql> { SELECT * { ?s ?p ?o . } LIMIT 1 } \n"+
"}"
);
final QueryExecution exec = QueryExecutionFactory.create(query, localModel);
exec.execConstruct(localModel);
localModel.write(System.out, "N3");
正如此输出所示,我们在构造查询期间构建的三元组存储在本地模型中。
<http://data.linkedmdb.org/resource/film_distribution_medium/1>
<http://www.w3.org/2000/01/rdf-schema#label>
"Theatrical (Film Distribution Medium)" .
如果您希望将 Fuseki 用作数据存储,而不是本地模型,那么您可以使用任意数量的方法从 Java 访问 Fuseki。您只需要适当地调整查询的结构。
例如,为了修改您自己的 fuseki 数据,您需要使用文档中的 执行更新查询,并且根据第二个示例UpdateRemote.execute
,该查询需要包含联合查询 ( )。SERVICE