在询问查询中使用联合 (Sparql)

Using union in ask query (Sparql)

我有一个询问查询,里面有一些联合:

PREFIX foo: <http://example.com/ontologies/MyOntology.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

ask
{
  {
    <http://someiri.com> ?b ?c.
    filter(!bound(?b)).
  }
  union
  {
   ?x <http://someiri.com> ?y.
   filter(!bound(?x)).
  }
   union
  {
    ?g ?h <http://someiri.com>.
    filter(!bound(?h)).
  }
   union
  {
    <http://someiri.com> rdf:type foo:RESTEndPoint
  }
}

询问声明将如何对待工会?

如果联合中的所有三元组都被评估为真,它会return为真吗?

或者如果它找到至少一个被评估为真的三元组,它将 return 为真?

基本上,SPARQL ASK 会一直执行,直到发现一个图形模式为真,否则 returns 为假。

因此,如果任何 UNION 图形模式找到匹配项,则 ASK 结果为真。如果所有 UNION 图形模式都找不到匹配项,则 ASK 结果为 false。