繁体   English   中英

如何进行Sparql查询

[英]How to Sparql queries

请一些帮助。

到目前为止,我知道如何将Jena与ARQ(命令行)一起使用,加载xml文件并将查询写到query.rq文件并使用以下命令运行查询:

LinkedMDB使用D2R服务器http://data.linkedmdb.org/sparql处公开只读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 )。

暂无
暂无

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

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