我正在从事一项研究项目,其中正在研究牙齿修复程序(即填充物)的成功。我们正在收集一些牙科诊所的数据,我们将把所有数据聚合到一个GraphDB三重存储中。我的问题与如何使用GraphDB上下文有关,以便将所有数据存储在单个回购中,但仍然能够在需要时单独查询每个实践。我使用的是GraphDB的免费版本7.0.3和GraphDB工作台。
当我在回购中导入数据时,它给了我指定上下文的选项。我的理解是,这本质上是整个RDF图的一个子图。对吗?但我有点不确定这与基本URI有何不同。在示例页面中,基本URI和上下文都是相同的。
我对如何设置回购的一般想法是给它一个基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 } }最后,有人知道哪里有解释如何有效使用上下文的页面/文档吗?
发布于 2017-01-02 00:06:10
您可以使用这两种方法来查询特定的图表。在本例中,GRAPH关键字和FROM关键字都做了大致相同的事情。但是,使用FROM-variant可能更快,因为为查询计划器优化这个变体稍微容易一些。
一些背景:在SPARQL中,FROM (和FROM NAMED)子句指定查询范围所在的数据集,而GRAPH关键字只是“放大”当前查询数据集的子集。如果省略了FROM子句,则在数据库的默认数据集上计算查询。在GraphDB中,默认的SPARQL数据集包含数据库中所有可用的命名图--这就是为什么在本例中使用Graph关键字和FROM关键字做同样的事情。注意,这是特定于存储的:其他数据库可以并且确实选择以不同的方式定义默认数据集。
顺便说一句:所有这些都与基本URI无关。基URI只是在解析输入数据中的相对URI引用时使用的一种语法机制。像GraphDB这样的RDF数据库实际上并不存储相对URI,因此解析器使用基本URI将数据中的任何相关URI转换为绝对URI,然后再将其添加到数据库中。
为了进一步阅读,我推荐GraphDB自己的查询行为文档。还有一个关于RDF4J编程文档中的命名图的章节-- GraphDB与RDF4J API紧密相连,因此它遵循了它的大多数约定。
发布于 2017-01-03 15:11:48
此外,在Jeen的回答中,我要补充的是,基URL是存储库的默认名称空间。默认情况下,值是空的,但是使用非空基URLs是个好主意,因为如果匿名(空白)节点出现,它将确保它们的唯一性。
https://stackoverflow.com/questions/41289538
复制相似问题