Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql 按空白节点分组_Sparql_Blazegraph_Blank Nodes - Fatal编程技术网

Sparql 按空白节点分组

Sparql 按空白节点分组,sparql,blazegraph,blank-nodes,Sparql,Blazegraph,Blank Nodes,我有以下数据: @prefix f: <http://example.org#> . _:a f:trait "Rude"@en . _:a f:name "John" . _:a f:surname "Roy" . _:b f:trait "Crude"@en . _:b f:name "Mary" . _:b f:surname "Lestern" . 如果空白节点\:a和\:b是不同的节点,我应该如何编写SPARQL查询以仅返回两个不同的结果?我尝试了选择DISTINCT,

我有以下数据:

@prefix f: <http://example.org#> .

_:a f:trait "Rude"@en .
_:a f:name "John" .
_:a f:surname "Roy" .
_:b f:trait "Crude"@en .
_:b f:name "Mary" .
_:b f:surname "Lestern" .

如果空白节点
\:a
\:b
是不同的节点,我应该如何编写SPARQL查询以仅返回两个不同的结果?我尝试了
选择DISTINCT
,但它仍然返回六个结果。我尝试过按
?o
进行分组,但Blazegraph返回一个错误,说这是一个错误的聚合。为什么会出现这种重复元组的输出?如何避免这种情况?

问题是您多次插入了包含空白节点的数据。这个运算不是幂等的

有用的引号

发件人:

空白节点标识符是一些具体RDF语法或RDF存储实现中使用的本地标识符。它们始终在本地限定为文件或RDF存储区的范围,并且不是空白节点的持久标识符或可移植标识符

发件人:

RDF图可以看作是一阶逻辑中简单原子句的连接,其中空白节点是自由变量,可以理解为存在变量。在这种语法中,两个图的并集类似于句法连接。RDF语法没有显式的变量绑定量词,因此任何RDF图的真值条件都将该图中的自由变量视为该图中存在的量化变量。使用共享一个空白节点的图的并集会改变隐含的量词范围

发件人:

空白节点标签的作用域为结果集

结果集中的标签
\uuuA
与具有相同标签的数据图中的空白节点之间不需要存在任何关系

应用程序编写器不应期望查询中的空白节点标签引用数据中的特定空白节点

发件人:

空白节点。。。假设与图存储中的空白节点不相交,即将插入“新鲜”空白节点。

一些讨论


不同的TripleStore为所描述的“问题”提供了解决方案。例如,Jena使用伪URI,如
等。

您所说的“我有以下数据”到底是什么意思?我想你的问题类似于。@StanislavKralin我的意思是,这是我使用应用程序中的“更新”选项卡加载到blazegraph中的数据。这只是一个小的实践数据集,因为我正在学习SPARQL。如果我没有弄错你的链接,那可能是个错误。如果你在一张图中对你的样本数据进行了6次查询,那么Blazegraph中就有问题了。Liliane,你按了“更新”按钮多少次了?我猜,正好3次。空白节点标签不是URI,它们仅在当前事务中是“持久的”<第一次更新中的code>\uuA与第二次更新中的
\uA
不同。每次更新都会生成新的空白节点-这是匿名节点,事务如何从之前的操作中知道这些节点?
PREFIX f: <http://example.org#>

SELECT ?s ?o
WHERE
{
    ?s f:trait ?o .
}
s   o
t32 Crude
t37 Crude
t39 Crude
t31 Rude
t36 Rude
t38 Rude