将 IRI 序列作为绑定变量中的值传递给 sem:sparql 函数 - marklogic
Pass sequence of IRIs as values in binding variable to sem:sparql function - marklogic
我正在使用 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
)
上面的查询应该return在(term:56564,term: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!
我正在使用 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
)
上面的查询应该return在(term:56564,term: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!