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

using contexts for multiple data sets in graphdb repo

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

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

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

...等等...

要查询所有数据的聚合(我想),我会使用不指定图形的 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 } }

最后,有人知道哪里有 page/documentation 解释如何有效地使用上下文吗?

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

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

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

为了进一步阅读,我建议 GraphDB's own documentation about query behaviour. There's also a section about named graphs in the RDF4J Programming documentation - GraphDB 与 RDF4J API 紧密相关,因此它遵循其大部分约定。

除了 Jeen 的回答之外,我还要补充一点,base-URL 是存储库的默认命名空间。默认情况下,值是空的,但是使用非空的 base-URLs 是个好主意,因为它将保证匿名(空白)节点的唯一性,如果它们出现