Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Java Jena ARQ中子选择的绑定值问题_Java_Jena_Arq - Fatal编程技术网

Java Jena ARQ中子选择的绑定值问题

Java Jena ARQ中子选择的绑定值问题,java,jena,arq,Java,Jena,Arq,我想运行以下简单的测试查询: PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?givenName ?name_count ?temp WHERE { BIND(if(( ?name_count = 2 ), "just two", "definitely not 2")

我想运行以下简单的测试查询:

PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX  vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT  ?givenName ?name_count ?temp
WHERE
  { BIND(if(( ?name_count = 2 ), "just two", "definitely not 2") AS ?temp)
    { SELECT DISTINCT  ?givenName (COUNT(?givenName) AS ?name_count)
      WHERE
        { ?y  vcard:Family  ?givenName }
      GROUP BY ?givenName
    }
  }
在控制台中显示此结果:

----------------------------------
| givenName | name_count | temp  |
==================================
| "Smith"   | 2          |       |
| "Jones"   | 2          |       |
----------------------------------
将临时值设置为null

另一方面,在Ontotext GraphDb环境中对同一图形运行相同的查询,我得到了正确的结果(保存为CSV):

ARQ引擎可能有错误,或者我遗漏了什么? 提前谢谢

我正在使用jena arq 3.12.0 Java(TM)SE运行时环境(build 1.8.0_181-b13)
Eclipse版本:2019-06(4.12.0)

绑定和子选择之间存在连接。连接步骤的参数是在连接完成之前计算的。因此,将对绑定进行求值,对子选择进行单独求值,并将结果合并?绑定分配中未设置名称\u计数。如果在子选择之后移动它,它将应用于子选择的结果

BIND将绑定添加到它前面的模式的结果中

(base <http://example/base/>
  (prefix ((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
           (vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>))
    (project (?givenName ?name_count ?temp)
      (join
        (extend ((?temp (if (= ?name_count 2) "just two" "definitely not 2")))
          (table unit))
        (distinct
          (project (?givenName ?name_count)
           (extend ((?name_count ?.0))
             (group (?givenName) ((?.0 (count ?givenName)))
               (bgp (triple ?y vcard:Family ?givenName))))))))))

extend
(来自语法绑定)正在处理
(子查询的不同…

绑定和子选择之间存在连接。连接步骤的参数是在连接完成之前计算的。因此,绑定被计算,子选择被单独计算,结果被连接。绑定分配中没有设置名称计数。如果在子选择之后移动它,它将应用于t谢谢你的回复。你完全正确。我应该删除这篇文章吗?这对其他人来说是一个有用的例子。让我把它写得更完整些,作为接受的答案。
----------------------------------
| givenName | name_count | temp  |
==================================
| "Smith"   | 2          |       |
| "Jones"   | 2          |       |
----------------------------------
givenName  |  name_count  |  temp
------------------------------------
Jones      |       2      |  just two
Smith      |       2      |  just two
(base <http://example/base/>
  (prefix ((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
           (vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>))
    (project (?givenName ?name_count ?temp)
      (join
        (extend ((?temp (if (= ?name_count 2) "just two" "definitely not 2")))
          (table unit))
        (distinct
          (project (?givenName ?name_count)
           (extend ((?name_count ?.0))
             (group (?givenName) ((?.0 (count ?givenName)))
               (bgp (triple ?y vcard:Family ?givenName))))))))))
(base <http://example/base/>
  (prefix ((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
           (vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>))
    (project (?givenName ?name_count ?temp)
      (extend ((?temp (if (= ?name_count 2) "just two" "definitely not 2")))
        (distinct
          (project (?givenName ?name_count)
            (extend ((?name_count ?.0))
              (group (?givenName) ((?.0 (count ?givenName)))
                (bgp (triple ?y vcard:Family ?givenName))))))))))