gpt4 book ai didi

sparql - Marklogic:如何将整数传递给绑定(bind)中的 sem:sparql-triples

转载 作者:行者123 更新时间:2023-12-02 02:17:44 26 4
gpt4 key购买 nike

我想将一个整数传递给 sem:sparql-triples 以用作 LIMIT 或 OFFSET。我已经通过绑定(bind)映射传递了其他变量,但一直在努力让查询接受整数。借用ML文档中的一些代码来演示:

import module namespace sem = "http://marklogic.com/semantics" 
at "/MarkLogic/semantics.xqy";

let $string := "
<http://dbpedia.org/resource/Jacqueline_Kennedy_Onassis>
<http://xmlns.com/foaf/0.1/knows>
<http://dbpedia.org/resource/Eunice_Kennedy_Shriver> .

<http://dbpedia.org/resource/John_F._Kennedy,_Jr.>
<http://xmlns.com/foaf/0.1/knows>
<http://dbpedia.org/resource/Jacqueline_Kennedy_Onassis> .

<http://dbpedia.org/resource/Rosemary_Kennedy>
<http://xmlns.com/foaf/0.1/knows> <http://dbpedia.org/resource/Jacqueline_Kennedy_Onassis> .

<http://dbpedia.org/resource/Joseph_Patrick_Kennedy_Sr.>
<http://xmlns.com/foaf/0.1/knows> <http://dbpedia.org/resource/Rosemary_Kennedy> .
"

let $triples := sem:rdf-parse($string, "turtle")
let $bindings := map:map()
let $put := map:put($bindings,"limit",1)

return
sem:sparql-triples("
SELECT ?s ?p ?o
WHERE{
?s ?p ?o.
}
ORDER BY ?o
LIMIT ?limit
", $triples, $bindings)

在 QConsole 中,这会返回错误:

意外的标记语法错误、意外的变量、需要整数文字

因此,我尝试了一些方法来将值作为整数添加到我的绑定(bind)映射中:

let $put := map:put($bindings,"limit",xs:integer(1))

let $put := map:put($bindings,"limit",sem:typed-literal('1',sem:iri("xs:integer")))

但到目前为止我还没有成功。有什么想法吗?

最佳答案

完整的错误消息是:

XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error,
unexpected <variable>, expecting <integer literal>

它位于第 7 行,即极限表达式所在的位置。所以我得出的结论是,这不是整数与非类型化的问题。您根本不能在那里使用变量:它必须是文字整数。

这似乎有效,使用 7.0-3:

import module namespace sem = "http://marklogic.com/semantics" 
at "/MarkLogic/semantics.xqy";

let $string := "
<http://dbpedia.org/resource/Jacqueline_Kennedy_Onassis>
<http://xmlns.com/foaf/0.1/knows>
<http://dbpedia.org/resource/Eunice_Kennedy_Shriver> .

<http://dbpedia.org/resource/John_F._Kennedy,_Jr.>
<http://xmlns.com/foaf/0.1/knows>
<http://dbpedia.org/resource/Jacqueline_Kennedy_Onassis> .

<http://dbpedia.org/resource/Rosemary_Kennedy>
<http://xmlns.com/foaf/0.1/knows> <http://dbpedia.org/resource/Jacqueline_Kennedy_Onassis> .

<http://dbpedia.org/resource/Joseph_Patrick_Kennedy_Sr.>
<http://xmlns.com/foaf/0.1/knows> <http://dbpedia.org/resource/Rosemary_Kennedy> .
"

let $triples := sem:rdf-parse($string, "turtle")
let $bindings := map:map()

return
sem:sparql-triples("
SELECT ?s ?p ?o
WHERE{
?s ?p ?o.
}
ORDER BY ?o
LIMIT "||1,
$triples, $bindings)

关于sparql - Marklogic:如何将整数传递给绑定(bind)中的 sem:sparql-triples,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com