2

在 GraphDB 文档中,我看到“数据集的默认图包含数据库默认图和所有数据库命名图的合并”。这意味着“如果ex:x ex:y ex:z图表中的数据库中存在一条语句ex:g”,那么诸如此类的查询SELECT * { ?s ?p ?o }将返回三元组ex:x ex:y ex:z

我想知道是否有可以通过 Web 界面或通过 RDF4J/OpenRDF API 触发的设置,这将在指定的 GraphDB 存储库中禁用此行为。也就是说,就我的项目而言,我希望将三元组存储在命名图中,以便仅出现在专门查询该命名图的结果中。

我在搜索文档或网络界面上可用的设置时没有看到类似的东西,但也许这里有人知道我不知道的东西。

编辑:我不是在寻找这个问题的 SPARQL 解决方案。我知道我可以使用 SPARQL 只查询默认图形,但我希望能够使用该查询SELECT * { ?s ?p ?o }并且只查看默认情况下在默认图形中的结果。

4

1 回答 1

2

GraphDB/RDF4J 与 Jena如何查询默认图有不同的解释。在默认图中仅查询显式语句的唯一简单方法是使用特殊图sesame:nil。基于 SPARQL 的解决方案是这样写:

PREFIX sesame: <http://www.openrdf.org/schema/sesame#>
SELECT ?s ?p ?o
FROM sesame:nil
WHERE {
   ?s ?p ?o .
} LIMIT 100

我认为没有任何简单的非基于 SPARQL 的解决方案,比如更改配置选项,甚至在 SPARQL Graph Store 协议上使用这个特殊的图表。

于 2017-08-18T20:15:54.803 回答