我正在使用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(“同义词库工作”)
我无法理解为什么出现此错误。 请帮忙!
答案 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
希望有帮助,