将IRIs序列作为绑定变量中的值传递给sem:sparql函数-marklogic
我使用的是ML版本将IRIs序列作为绑定变量中的值传递给sem:sparql函数-marklogic,marklogic,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
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
)
let$params:=
地图:新((
映射:条目(“窄查询”(“术语:56564”,“术语:56564”))
))
返回
sem:sparql(
"
前缀skos:
前缀词:
选择?iri?pl
在哪里{
?iri skos:预标签?pl。
?iri skos:更窄?更窄。
过滤器(?窄于(?窄于查询))
#?狭义查询应视为(术语:56564,术语:56564)
}限制10
",
$params
)
上面的查询应该返回(term:56564,term:56564)序列中具有更窄谓词对象的IRI
如果有什么方法可以做到这一点,请帮助我
我遇到了
sem:sparql值
,但该值也不起作用,可能是我使用该函数的方式不对。我通常使用=
而不是中的运算符,这在不同的场合对我起到了作用
您可能还希望传入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
)
导入模块名称空间sem=”http://marklogic.com/semantics"
位于“/MarkLogic/semantics.xqy”;
声明命名空间术语=”http://www.test.com/term/";
让$params:=
地图:新((
映射:条目(“窄查询”),(扫描电镜:居里展开(“术语:56564”),扫描电镜:居里展开(“术语:56564”))
))
返回
sem:sparql(
"
前缀skos:
选择?iri?pl
在哪里{
?iri skos:预标签?pl。
?iri skos:更窄?更窄。
过滤器(?更窄=?更窄查询)
}限制10
",
$params
)
嗯