SPARQL 代数:如果任何三元组不存在,则从命名图中进行棘手的询问
SPARQL algebra: tricky ASK from named graphs if any triples do not exist
取这两个命名图:
# graph :yesterday
:Foo
:likes :Bar ;
:likes :Qux .
# graph :today
:Foo
:likes :Bar ;
:likes :Baz .
现在假设您想找出图 :yesterday
中的任何三元组是否在图 :today
中不存在。你会如何ASK
这个查询?
ASK
FROM NAMED :yesterday
FROM NAMED :today
{
GRAPH :yesterday {
?s ?p ?o .
...
}
}
SPARQL 有两种否定操作:使用您认为最自然的一种。当我阅读问题描述时,它对我来说更像是下面的第一个,但在这种问题情况下它们非常相似。当模式的一部分或另一部分不匹配任何内容或没有共同的变量时,它们的效果会有所不同。
NOT EXISTS
测试是否存在模式(也有 EXISTS
)。它是应用于第一个模式的每个解决方案的过滤器。它就像一个嵌套的 ASK
,其中变量也被替换为过滤器的传入变量。
PREFIX : <http://example/>
SELECT * {
GRAPH :yesterday { ?s ?p ?o }
FILTER NOT EXISTS { GRAPH :today { ?s ?p ?o } }
}
MINUS
执行两个模式(左侧和右侧),然后 returns 左侧的行,右侧的任何地方都没有匹配的行。是反加入。
PREFIX : <http://example/>
SELECT * {
GRAPH :yesterday { ?s ?p ?o }
MINUS { GRAPH :today { ?s ?p ?o } }
}
对于两者我得到:
------------------------
| s | p | o |
========================
| :Foo | :likes | :Qux |
------------------------
三重奏:
@prefix : <http://example/> .
:yesterday {
:Foo
:likes :Bar ;
:likes :Qux .
}
:today {
:Foo
:likes :Bar ;
:likes :Baz .
}
取这两个命名图:
# graph :yesterday
:Foo
:likes :Bar ;
:likes :Qux .
# graph :today
:Foo
:likes :Bar ;
:likes :Baz .
现在假设您想找出图 :yesterday
中的任何三元组是否在图 :today
中不存在。你会如何ASK
这个查询?
ASK
FROM NAMED :yesterday
FROM NAMED :today
{
GRAPH :yesterday {
?s ?p ?o .
...
}
}
SPARQL 有两种否定操作:使用您认为最自然的一种。当我阅读问题描述时,它对我来说更像是下面的第一个,但在这种问题情况下它们非常相似。当模式的一部分或另一部分不匹配任何内容或没有共同的变量时,它们的效果会有所不同。
NOT EXISTS
测试是否存在模式(也有 EXISTS
)。它是应用于第一个模式的每个解决方案的过滤器。它就像一个嵌套的 ASK
,其中变量也被替换为过滤器的传入变量。
PREFIX : <http://example/>
SELECT * {
GRAPH :yesterday { ?s ?p ?o }
FILTER NOT EXISTS { GRAPH :today { ?s ?p ?o } }
}
MINUS
执行两个模式(左侧和右侧),然后 returns 左侧的行,右侧的任何地方都没有匹配的行。是反加入。
PREFIX : <http://example/>
SELECT * {
GRAPH :yesterday { ?s ?p ?o }
MINUS { GRAPH :today { ?s ?p ?o } }
}
对于两者我得到:
------------------------
| s | p | o |
========================
| :Foo | :likes | :Qux |
------------------------
三重奏:
@prefix : <http://example/> .
:yesterday {
:Foo
:likes :Bar ;
:likes :Qux .
}
:today {
:Foo
:likes :Bar ;
:likes :Baz .
}