我正在使用ML版8.0-6.3
我需要的是将IRIs
的序列作为绑定变量中的值传递给sem:sparql
,这将用于filter
子句。
例如:
let $params :=
map:new((
map:entry("narrowersQuery", ("term:56564", "term:56564"))
))
return
sem:sparql(
"
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX term: <http://www.test.com/term/>
SELECT ?iri ?pl
WHERE {
?iri skos:prefLabel ?pl .
?iri skos:narrower ?narrower .
filter (?narrower in (?narrowersQuery))
# ?narrowersQuery should be treated as (term:56564, term:56564)
} limit 10
",
$params
)
上面的查询应返回在(术语:56564,术语:56564)序列中具有较窄谓词对象的IRI。
如果有任何方法可以帮助我。
我遇到sem:sparql-values
,但那个也没有用,可能是我以错误的方式使用该功能。
我通常使用=
而不是IN
算子,这在不同场合为我做了诀窍。
你可能也想传入sem:iri
的,而不是字符串,这样的东西:
import module namespace sem = "http://marklogic.com/semantics"
at "/MarkLogic/semantics.xqy";
declare namespace term = "http://www.test.com/term/";
let $params :=
map:new((
map:entry("narrowersQuery", (sem:curie-expand("term:56564"), sem:curie-expand("term:56564")))
))
return
sem:sparql(
"
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?iri ?pl
WHERE {
?iri skos:prefLabel ?pl .
?iri skos:narrower ?narrower .
filter (?narrower = ?narrowersQuery)
} limit 10
",
$params
)
HTH!