在sparql查询中传递cts:collection-query时出现错误

时间:2018-06-20 05:36:25

标签: marklogic marklogic-8

我正在使用MarkLogic 8

我正在尝试传递cts内部的内置函数SPARQL

我尝试使用cts:contains,它运行良好。

但是当我尝试使用cts:collection-query()时遇到错误XDMP-EFFBOOLVALUE (err:FORG0006)

SPARQL查询:

PREFIX cts: <http://marklogic.com/cts#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX xs: <http://www.w3.org/2001/XMLSchema>

SELECT ?s ?o
WHERE{ 
  ?s skos:prefLabel ?o .
  FILTER cts:contains(?o, cts:word-query('agor*'))
         FILTER cts:collection-query('thesaurus-work')


} LIMIT 100

完整错误:

  

[1.0-ml] XDMP-EFFBOOLVALUE:(err:FORG0006)?s   http://www.w3.org/2004/02/skos/core#prefLabel吗?过滤   (cts:contains($ o,cts:word-query(“ agor *”)))FILTER   (cts:collection-query(“ thesaurus-work”))-有效布尔值是   未定义cts:collection-query(“同义词库工作”)

我无法理解为什么出现此错误。 请帮忙!

1 个答案:

答案 0 :(得分:3)

cts:collection-query()是一个返回布尔值的表达式函数。

cts:collection-query()是一个构造函数,该函数返回查询而不是布尔值,以供在FILTER中使用。

要将SPARQL查询限制为从cts:query匹配的文档投影的三元组,可以使用cts:query构造sem:store对象,并在sem:sparql()调用中传递sem:store对象:< / p>

http://docs.marklogic.com/sem:store

http://docs.marklogic.com/sem:sparql

希望有帮助,