java - 如何同时查询两个芝麻存储库?

标签 java semantics sesame

我在 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有两个存储库,PrimarySecondary 。两个存储库的 SPARQL 查询端点均为 http://localhost:8080/openrdf-sesame/repositories/Primaryhttp://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/

相关文章:

concurrency - OpenRDF 芝麻 : how to handle locking?

java - 使用 GAE 生成字符串 ObjectId

c++ - 非字节偏移使用 off_t 合适吗?

css - 让 fcaption 与 img 对齐

html - 如果我的元素有 `<figcaption>`,我还需要使用 title 属性吗?

sesame - 如何将 Sesame Rio 与 maven-shade-plugin 一起使用?

java - 如何使用 Sesame 解析 SPARQL 查询中的 OPTIONAL 语句?

java - 有人可以提供代码/逻辑来检索 excel(.xlsx) 数据,例如 ""driver.findElement(By.id ("")).sendkeys(getExceldata(row,column));"

java - Spark 2.2.0 :How to prevent CountVectorizer giving NoneZeroVector VectorsUDT from Dataset

java - 测试 web 层 Spring Boot