我正在研究研究牙齿修复程序(即填充)的成功的研究项目。我们正在从数字牙科实践中收集数据,我们将将所有数据汇总到GraphDB Triple Store中。我的问题与如何使用GraphDB上下文以将所有数据存储在单个存储库中有关,但是在需要时仍然可以单独查询每个练习。我正在使用GraphDB,版本7.0.3和GraphDB Workbench的免费版。
当我在存储库中导入数据时,它为我提供了指定上下文的选项。我的理解是,这本质上是整个RDF图的子图。正确的?但是我不确定这与基本URI有何不同。在示例页面中,基本URI和上下文都是相同的。
我对如何设置存储库的一般思考是为其提供基本的URI,并使每个练习数据集保持基本URI相同,但是在加载每个练习时会更改上下文。例如:
-
加载练习1个数据:
base uri:www.example.com/dental-practices/
上下文:www.example.com/dental-practices/practice-1 -
加载练习2数据:
base uri:www.example.com/dental-practices/
上下文:www.example.com/dental-practices/practice-2 -
加载练习3个数据:
base uri:www.example.com/dental-practices/
上下文:www.example.com/dental-practices/practice-3
...等等...
要查询所有数据的汇总(我想),我将使用未指定图形的SPARQL查询。例如,找到所有患者:
select ?patient where { ?patient rdf:type :Patient }
但是,我将如何查询特定的做法?我会指定图形还是使用"从"键入键。例如:
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
)子句指定查询范围范围的 dataset ,而GRAPH
关键字仅在当前查询数据集的子集中"放大"。如果遗漏了FROM
子句,则在数据库的默认数据集上评估查询。在GraphDB中,默认的SPARQL数据集包含数据库中可用的所有命名图 - 这就是为什么在这种情况下,使用Graph关键字,而来自关键字的from trof trom trom trof trom trom trom trom tos ot Lote则是相同的。请注意,这是特定于商店的:其他数据库可以并且确实选择以不同的方式定义默认数据集。
顺便说一句:这些都没有与基本URI有关的任何内容。基本URI只是在输入数据中解决相对URI参考时使用的句法机制。RDF数据库(如GraphDB)实际上并未存储相对URI,因此Parser使用基本URI将数据中的任何相对URIS转换为绝对数据,然后将其添加到数据库中。
要进一步阅读,我建议GraphDB自己的有关查询行为的文档。RDF4J编程文档中还有一个有关命名图的部分 - GraphDB与RDF4J API紧密相关,因此它遵循了大多数公约。
另外,jeen的答案我会补充说,base-url是存储库的默认名称空间。默认情况下,值是空的,但是使用非空的基本净值是一个好主意,因为它可以保证匿名节点的唯一性,如果它们出现