gpt4 book ai didi

sparql - 在 graphdb repo 中为多个数据集使用上下文

转载 作者:行者123 更新时间:2023-12-02 03:08:17 32 4
gpt4 key购买 nike

我正在研究 dentry 修复程序(即补牙)是否成功的研究项目。我们正在从一些 dentry 诊所收集数据,我们将把所有数据聚合到一个 GraphDB 三元组存储中。我的问题与如何使用 GraphDB 上下文来将所有数据存储在一个存储库中有关,但仍然能够在需要时单独查询每个实践。我使用的是 GraphDB 的免费版 7.0.3 版和 GraphDB 工作台。

当我在存储库中导入数据时,它为我提供了指定上下文的选项。我的理解是,这本质上是整个 RDF 图的一个子图。正确的?但我有点不确定这与基本 URI 有何不同。在示例页面中,基本 URI 和上下文都是相同的。

关于如何设置 repo,我的一般想法是给它一个基本 URI,并使每个练习数据集的基本 URI 保持相同,但在加载每个练习时更改上下文。例如:

  • 加载练习 1 数据:
    基本 URI:www.example.com/dental-practices/
    上下文:www.example.com/dental-practices/practice-1

  • 加载练习 2 数据:
    基本 URI:www.example.com/dental-practices/
    上下文:www.example.com/dental-practices/practice-2

  • 加载练习 3 数据:
    基本 URI:www.example.com/dental-practices/
    上下文:www.example.com/dental-practices/practice-3

……等等……

要查询所有数据的聚合(我想),我会使用未指定图形的 SPARQL 查询。例如,查找所有患者:

select ?patient where { ?patient rdf:type :Patient }

但是,我该如何查询特定的实践?我会指定一个图表还是使用“from”键。例如:

select ?patient from <practice-1> where { ?patient rdf:type :Patient }

select ?patient where { graph <practice-1> { ?patient rdf:type :Patient } }

最后,有人知道哪里有解释如何有效使用上下文的页面/文档吗?

最佳答案

您可以使用任何一种方法来查询特定图形。在这种情况下,GRAPH 关键字和 FROM 关键字的作用大致相同。但是,使用 FROM-variant 可能更快,因为为查询规划器优化此变体更容易一些。

一些背景:在 SPARQL 中,FROM(和 FROM NAMED)子句指定查询范围的数据集,而 GRAPH 关键字只是“放大”当前查询数据集的一个子集。如果省略了 FROM 子句,则将根据数据库的默认数据集评估查询。在 GraphDB 中,默认的 SPARQL 数据集包括数据库中可用的所有命名图——这就是为什么在这种情况下使用 GRAPH 关键字和 FROM 关键字做同样的事情。请注意,这是特定于存储的:其他数据库可以并且确实选择以不同方式定义默认数据集。

顺便说一句:这些都与基本 URI 任何无关。基本 URI 只是解析输入数据中的相对 URI 引用时使用的一种语法机制。 RDF 数据库(如 GraphDB)实际上并不存储相对 URI,因此在将数据添加到数据库之前,解析器使用基本 URI 将数据中的任何相对 URI 转换为绝对 URI。

要进一步阅读,我建议 GraphDB's own documentation about query behaviour . RDF4J Programming documentation 中还有一个关于命名图的部分。 - GraphDB 与 RDF4J API 紧密相关,因此它遵循其大部分约定。

关于sparql - 在 graphdb repo 中为多个数据集使用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41289538/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com