gpt4 book ai didi

SPARQL 异算子

转载 作者:行者123 更新时间:2023-12-05 01:47:50 24 4
gpt4 key购买 nike

SPARQL 查询

我有一些如下所示的 SPARQL 查询:

SELECT DISTINCT ?name1 
WHERE {

GRAPH <blabla>
{
?k swrc:author ?x .
?x foaf:name ?name1 .
} .

GRAPH <blabla2>
{
?l swrc:author ?y .
?y foaf:name ?name2 .
} .

FILTER(?x != ?y) .
}

我想获取仅存在于第一个图表 blabla 中的名称。

问题

与直觉相反,我得到了一些实际上属于交叉路口的名称。发生这种情况是因为 b(属于集合 A)= b(属于集合 B)?

问题

!= 的语义到底是什么?我怎样才能超越这个问题?

最佳答案

!= 的语义恰恰是它的左参数不等于它的右参数。但是 FILTER 会针对每种可能的值组合进行评估 - 因此您制定的查询将返回 ?x 的所有名称值,其中 一些 ?y 不等于它。

如果您只想取回?x 的名称值,而?y所有 值都不等于它,您应该使用 NOT EXISTS 子句:

SELECT DISTINCT ?name1 
WHERE {
GRAPH <blabla>
{
?k swrc:author ?x.
?x foaf:name ?name1.
}
FILTER NOT EXISTS {
GRAPH <blabla2>
{
?l swrc:author ?x.
}
}

请注意,使用这种方法实际上可以完全摆脱变量 ?y:您将条件更改为只检查第一张图中找到的作者 ?x也不会出现在第二张图中。

关于SPARQL 异算子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com