我是 sparql 的新手。因此尝试着手编写代码。
我尝试编写以下代码但没有得到结果,当我尝试传递“sub”参数时我没有得到任何结果。
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy";
declare namespace s = "http://www.w3.org/2005/sparql-results#";
let $map := map:map()
let $_ := map:put($map, "sub", "res:Porsche_912")
let $result :=
sem:query-results-serialize(
sem:sparql(
"PREFIX pre: <http://dbpedia.org/ontology/Automobile/>
PREFIX res: <http://dbpedia.org/resource/>
SELECT ?p ?o
WHERE {
?sub ?p ?o .
}",$map
)
)
return $result
下面的代码正在运行
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy";
declare namespace s = "http://www.w3.org/2005/sparql-results#";
let $map := map:map()
let $_ := map:put($map, "sub", "res:Porsche_912")
let $result :=
sem:query-results-serialize(
sem:sparql(
"PREFIX pre: <http://dbpedia.org/ontology/Automobile/>
PREFIX res: <http://dbpedia.org/resource/>
SELECT ?p ?o
WHERE {
<http://dbpedia.org/resource/Porsche_912> ?p ?o .
}",$map
)
)
return $result
我的问题是:
在第二个代码中,我对主题“sub”进行了硬编码并获得了结果。但是我想像我在第一个代码中尝试的那样,通过在地图中传递一个参数来使其动态化。你能告诉我为什么第一个代码不起作用吗?
我有
param1 = http://dbpedia.org/resource/ param2 = Porsche_912
SPARQL 中是否有可用的函数,返回带有这两个参数的完整 IRI。 喜欢
Param1 + Param2 = http://dbpedia.org/resource/Porsche_912
Expected a result
sub 的值需要是一个 sem:iri.
如果您使用 sem:iri("http://dbpedia.org/resource/Porsche_912") 而不是“res:Porsche_912”,您的查询应该有效