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

On passing cts:collection-query inside sparql query getting an error

我正在使用MarkLogic 8

我正在尝试在 SPARQL

中传递 cts 内置函数

我试过 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 ?o . FILTER (cts:contains($o, cts:word-query("agor*"))) FILTER (cts:collection-query("thesaurus-work")) -- Effective Boolean Value is undefined for cts:collection-query("thesaurus-work")

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

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

cts:collection-query() 是一个构造函数,returns 一个查询而不是用于 FILTER 的布尔值。

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

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

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

希望对您有所帮助,