设置为仅查询默认图并排除命名图
Setting to query only Default Graph and exclude Named Graphs
在 GraphDB 文档中,我看到 "the dataset’s default graph contains the merge of the database’s default graph AND all the database named graphs." 这意味着 "if a statement ex:x ex:y ex:z
exists in the database in the graph ex:g
" 那么 SELECT * { ?s ?p ?o }
之类的查询将 return 三元组 ex:x ex:y ex:z
我想知道是否有可以通过 Web 界面或 RDF4J/OpenRDF API 触发的设置,这将在指定的 GraphDB 存储库中禁用此行为。也就是说,出于我的项目的目的,我更愿意将存储在命名图中的三元组仅出现在专门查询该命名图的结果中。
我在文档或 Web 界面上的可用设置中搜索时没有看到类似的东西,但也许这里有人知道我不知道的事情。
编辑:我不是在寻找解决此问题的 SPARQL 解决方案。我知道我可以使用 SPARQL 只查询默认图表,但我希望能够使用查询 SELECT * { ?s ?p ?o }
并且默认情况下只看到默认图表中的结果。
GraphDB/RDF4J 与 Jena how to query the default graph 有不同的解释。在默认图中仅查询显式语句的唯一简单方法是使用特殊图 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 图表存储协议上使用这个特殊图表。
在 GraphDB 文档中,我看到 "the dataset’s default graph contains the merge of the database’s default graph AND all the database named graphs." 这意味着 "if a statement ex:x ex:y ex:z
exists in the database in the graph ex:g
" 那么 SELECT * { ?s ?p ?o }
之类的查询将 return 三元组 ex:x ex:y ex:z
我想知道是否有可以通过 Web 界面或 RDF4J/OpenRDF API 触发的设置,这将在指定的 GraphDB 存储库中禁用此行为。也就是说,出于我的项目的目的,我更愿意将存储在命名图中的三元组仅出现在专门查询该命名图的结果中。
我在文档或 Web 界面上的可用设置中搜索时没有看到类似的东西,但也许这里有人知道我不知道的事情。
编辑:我不是在寻找解决此问题的 SPARQL 解决方案。我知道我可以使用 SPARQL 只查询默认图表,但我希望能够使用查询 SELECT * { ?s ?p ?o }
并且默认情况下只看到默认图表中的结果。
GraphDB/RDF4J 与 Jena how to query the default graph 有不同的解释。在默认图中仅查询显式语句的唯一简单方法是使用特殊图 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 图表存储协议上使用这个特殊图表。