SPARQL 使用 xqueries

问题描述 投票:0回答:1

我是 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

我的问题是:

  1. 在第二个代码中,我对主题“sub”进行了硬编码并获得了结果。但是我想像我在第一个代码中尝试的那样,通过在地图中传递一个参数来使其动态化。你能告诉我为什么第一个代码不起作用吗?

  2. 我有

param1 = http://dbpedia.org/resource/ param2 = Porsche_912

SPARQL 中是否有可用的函数,返回带有这两个参数的完整 IRI。 喜欢

Param1 + Param2 = http://dbpedia.org/resource/Porsche_912

Expected a result

sparql xquery marklogic semantics
1个回答
0
投票

sub 的值需要是一个 sem:iri.

如果您使用 sem:iri("http://dbpedia.org/resource/Porsche_912") 而不是“res:Porsche_912”,您的查询应该有效

© www.soinside.com 2019 - 2024. All rights reserved.