如何一次查询两个芝麻存储库?

时间:2016-05-25 10:25:30

标签: java semantics sesame

我在sesame中有两个存储库,其中一个包含完整数据,另一个包含几个链接到主数据的字段的数据。

示例:

主要数据字段:

uri,skos:prefLabel,skosAltLabel等。

辅助数据字段:

uri,customField

所以基本上我想查询customField上的二级数据,它会返回uri,可以映射到主数据并获取其他详细信息。

所以它们是关联数据集。

那么可以一次查询芝麻上的链接存储库吗?

1 个答案:

答案 0 :(得分:1)

使用SPARQL 1.1 SERVICE查询

SPARQL 1.1支持http://localhost:8080/openrdf-sesame子句,该子句允许您在单个查询结果中组合来自多个SPARQL端点的结果。由于Sesame Server将每个存储库公开为SPARQL端点,因此您可以使用它来对多个存储库执行查询。

例如,假设您在Primary运行的芝麻服务器有两个存储库,Secondaryhttp://localhost:8080/openrdf-sesame/repositories/Primary。两个存储库的SPARQL查询端点分别为http://localhost:8080/openrdf-sesame/repositories/SecondaryPrimary

您可以在一个存储库(例如 SELECT * WHERE { # data from Primary dataset ?uri a skos:Concept ; skos:prefLabel ?prefLabel ; skos:altLabel ?altLabel . # data from Secondary dataset SERVICE <http://localhost:8080/openrdf-sesame/repositories/Secondary> { ?uri :customField ?customFieldValue . } } )上执行SPARQL,然后在查询中引用另一个存储库,如下所示:

FederationSail

使用Sesame的FederationSail

另一种方法是使用function mouseInHandler(){ $(this).find(".items_buttons").show(); }; function mouseOutHandler(){ $(this).find(".items_buttons").hide(); }; $('tr').hover(mouseInHandler,mouseOutHandler); 在Sesame中设置联合存储库。这是一种将几个芝麻数据库组合在一起形成一个&#34;虚拟&#34;存储库 - 联合会。您可以在联合上执行查询,结果将包括联合的所有成员数据库中的数据(无需指定要查询的端点,就像使用SERVICE子句时需要执行的操作一样)。

可以通过Workbench以编程方式设置联合,或者(如果您正在使用Sesame Server和Workbench)。只需选择新的存储库&#39;,然后选择联盟商店&#39;商店类型下拉列表中的选项。给它一个id和一个描述,然后在下一个屏幕上,你可以选择哪些数据库应该是联邦的一部分。