【问题标题】:How to query two sesame repositories at a time?如何一次查询两个芝麻仓库?
【发布时间】:2016-09-22 21:25:37
【问题描述】:

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

例子:

主要数据字段:

uri、skos:prefLabel、skosAltLabel 等

辅助数据字段:

uri,自定义字段

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

所以它们是链接数据集。

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

【问题讨论】:

    标签: java semantics sesame


    【解决方案1】:

    使用 SPARQL 1.1 SERVICE 查询

    SPARQL 1.1 支持SERVICE 子句,它允许您将来自多个 SPARQL 端点的结果合并到一个查询结果中。因为 Sesame Server 将每个存储库都公开为 SPARQL 端点,所以您可以使用它对多个存储库进行查询。

    例如,假设您有一个在 http://localhost:8080/openrdf-sesame 上运行的芝麻服务器,它有两个存储库,PrimarySecondary。两个存储库的 SPARQL 查询端点分别是 http://localhost:8080/openrdf-sesame/repositories/Primaryhttp://localhost:8080/openrdf-sesame/repositories/Secondary

    您可以在一个存储库(例如,Primary)上执行 SPARQL,然后在查询中引用另一个存储库,如下所示:

     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 .
             }
    }  
    

    使用芝麻的联邦帆

    另一种方法是使用FederationSail 在 Sesame 中设置联合存储库。这是一种将多个 Sesame 数据库组合在一起以形成“虚拟”存储库 - 联合的方式。您可以对联邦执行查询,结果将包括来自联邦所有成员数据库的数据(无需指定要查询的端点,就像使用 SERVICE 子句时需要做的那样)。

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

    【讨论】:

    • 嘿,感谢 Jeen Broekstra 与联邦商店合作。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    相关资源
    最近更新 更多