我在 sesame 中有两个存储库,其中一个包含完整数据,另一个包含链接到主要数据的少量字段的数据。
示例:
主要数据字段:
uri、skos:prefLabel、skosAltLabel 等
辅助数据字段:
uri、自定义字段
所以基本上我想查询customField上的辅助数据,它将返回可以映射到主要数据并获取其他详细信息的uri。
所以它们是链接的数据集。
那么是否可以一次查询芝麻上的链接存储库?
最佳答案
使用 SPARQL 1.1 SERVICE 查询
SPARQL 1.1 支持SERVICE
子句,它允许您将多个 SPARQL 端点的结果合并到单个查询结果中。由于 Sesame Server 将每个存储库公开为 SPARQL 端点,因此您可以使用它对多个存储库进行查询。
例如,假设您有一个 Sesame 服务器运行在 http://localhost:8080/openrdf-sesame
有两个存储库,Primary
和Secondary
。两个存储库的 SPARQL 查询端点均为 http://localhost:8080/openrdf-sesame/repositories/Primary
和http://localhost:8080/openrdf-sesame/repositories/Secondary
, 分别。
您可以在一个存储库上执行 SPARQL(例如 Primary
),然后在查询中引用另一个存储库,如下所示:
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 .
}
}
使用 Sesame 的 FederationSail
另一种方法是在 Sesame 中设置联合存储库,使用 FederationSail
。这是一种将多个 Sesame 数据库组合在一起形成“虚拟”存储库 - 联合体的方法。您可以在联合体上执行查询,结果将包括来自联合体所有成员数据库的数据(无需像使用 SERVICE 子句时那样指定要查询的端点)。
联合可以通过编程方式设置,或者(如果您使用 Sesame Server 和工作台)通过工作台设置。只需选择“新存储库”,然后在存储类型下拉列表中选择“联合存储”选项。为其指定 ID 和描述,然后在下一个屏幕上您可以选择哪些数据库应成为联合的一部分。
关于java - 如何同时查询两个芝麻存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37434339/