Jquery 向SPARQL查询传递任意数量的参数

Jquery 向SPARQL查询传递任意数量的参数,jquery,sparql,virtuoso,Jquery,Sparql,Virtuoso,我有几个SPARQL查询需要获取一个或多个URI或文本值的用户参数。SPARQL查询采用Virtuoso重写规则。为了说明这一点,我将使用一个对DBpedia的查询,询问今天和未来7天内出生的哲学家 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX o: <http://dbpedia.org/ontology/> PREFIX dcterms: <http://purl.org/dc/

我有几个SPARQL查询需要获取一个或多个URI或文本值的用户参数。SPARQL查询采用Virtuoso重写规则。为了说明这一点,我将使用一个对DBpedia的查询,询问今天和未来7天内出生的哲学家

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX o: <http://dbpedia.org/ontology/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

#all philosophers born today and in the next 7 days with influences

SELECT DISTINCT   ?name  ?wikipedia_page ?born  (Group_Concat(DISTINCT ?influencerSTR; separator = "\n") as ?influenced_by) (Group_Concat(DISTINCT ?_influencedSTR; separator = '\n') as ?influenced) ?full_description_in_dbpedia #?influenced ?ideas  ?indegree ?person

WHERE {

 {?person rdf:type o:Philosopher ;
         rdfs:label ?label;
         ^foaf:primaryTopic ?wikipedia_page ;
         o:birthDate ?born ;
     o:influencedBy|^o:influenced ?influencer.}

values ?d {0 1 2 3 4 5 6 7}

BIND ((SUBSTR(STR(?born),6) as ?bornSTR))
BIND ((SUBSTR(STR(bif:dateadd("day", ?d, now())),6,5)) as ?day)

FILTER (STRLEN(STR(?born)) > 6 &&  STR(?bornSTR) = STR(?day))
FILTER (lang(?label) = "en") .

OPTIONAL {?person o:influenced|^o:influencedBy ?_influenced.} 
OPTIONAL {?person o:abstract ?abstract . FILTER (lang(?abstract) = "en") .}

BIND (str(?label)  AS ?name)
BIND (str(?abstract)  AS ?description)
BIND (STRAFTER((STR(?influencer)), "resource/") as ?influencerSTR ).
BIND (STRAFTER((STR(?_influenced)), "resource/") as ?_influencedSTR ).
BIND (?person AS ?full_description_in_dbpedia)

}

GROUP BY  ?name  ?wikipedia_page ?born ?day ?full_description_in_dbpedia
ORDER BY ?day

查询不起作用。

解决方案似乎是使用其中一种形式(对于示例中的整数值)--

  • 值(?d){(0)(1)}
  • 值?d{0 1}

解决方案似乎是使用其中一种形式(对于示例中的整数值)--

  • 值(?d){(0)(1)}
  • 值?d{0 1}

关于
值(?d){(“0”)(“1”)}
->什么意思不起作用?它必须是一个整数值,即
values(?d){(0)(1)}
,这对我来说在DBpedia端点上非常有效。当前解决方案中有什么不适用?@IvoVelitchkov,
值中不允许使用SPARQL列表语法。如果您正在谈论类似的内容,则列表不能是
值中的值。也许这个问题是相关的:
值(?d){(0)(1)}
值?d{0 1}
似乎都起作用(没有错误)。
值{(0)(1)}
值(?d){01}
,或
值(?d){(“0”)(“1”)}
似乎都不起作用(不同的错误)。如果你的意思是“不起作用”而不是“产生错误”,我想你需要提供更多的细节,包括向我们展示你得到的和你期望得到的。@AKSW@TallTed yes确实
值(?d){(0)(1)}
起作用,当然
值(?d){(“0”)((1”)}
不应该在我错误地期望它的时候出现。谢谢现在,正如我所看到的,我可以在不使用空格作为分隔符的情况下传递参数列表,我将重试,如果仍然存在问题,将在此处更新。关于
值(?d){(“0”)(“1”)}
->什么意思不起作用?它必须是一个整数值,即
values(?d){(0)(1)}
,这对我来说在DBpedia端点上非常有效。当前解决方案中有什么不适用?@IvoVelitchkov,
值中不允许使用SPARQL列表语法。如果您正在谈论类似的内容,则列表不能是
值中的值。也许这个问题是相关的:
值(?d){(0)(1)}
值?d{0 1}
似乎都起作用(没有错误)。
值{(0)(1)}
值(?d){01}
,或
值(?d){(“0”)(“1”)}
似乎都不起作用(不同的错误)。如果你的意思是“不起作用”而不是“产生错误”,我想你需要提供更多的细节,包括向我们展示你得到的和你期望得到的。@AKSW@TallTed yes确实
值(?d){(0)(1)}
起作用,当然
值(?d){(“0”)((1”)}
不应该在我错误地期望它的时候出现。谢谢现在,当我看到我可以传递参数列表而不使用空格作为分隔符时,我将重试,如果仍然存在问题,将在这里更新。
values (?d) {("0") ("1") }