字符串上的SPARQL VALUES关键字?

字符串上的SPARQL VALUES关键字?,sparql,Sparql,我正在执行下面的查询。 我想使用org研究id谓词上的SPARQL 1.1 VALUES关键字同时为许多研究提取三元组。当我在VALUES语句中显式声明#字符串类型时,此查询将起作用: PREFIX ct: <http://bio2rdf.org/clinicaltrials_vocabulary:> SELECT * WHERE { VALUES (?value) {("N01009"^^<http://www.w3.org/2001/XMLSchema#string&

我正在执行下面的查询。 我想使用org研究id谓词上的SPARQL 1.1 VALUES关键字同时为许多研究提取三元组。当我在VALUES语句中显式声明#字符串类型时,此查询将起作用:

PREFIX ct: <http://bio2rdf.org/clinicaltrials_vocabulary:>
SELECT * 
WHERE {
  VALUES (?value) {("N01009"^^<http://www.w3.org/2001/XMLSchema#string>)
                   ("N01020"^^<http://www.w3.org/2001/XMLSchema#string>)}
 ?nctID ct:org-study-id ?value .
}
谢谢

在RDF 1.1中,“普通”字符串的类型为xsd:string,因此您可能只需执行以下操作:

VALUES (?value) { ("N01009") ("N01020") }
由于只有一个值,您不需要列表,因此您可以执行以下操作:

VALUES ?value { "N01009" "N01020" }
例如,通过Jena的ARQ,我们得到以下结果:

选择?x(数据类型(?x)作为?xd){
值?x{“a”}
}
---------------------------------------------------
|x | xd|
===================================================
|“a”||
---------------------------------------------------
但是,如果需要对每个值(无论是字符串还是其他值)应用某些函数,可以使用绑定

values ?value_ { "N01009" "N01020" }
bind(str(?value_) as ?value)
例如:

select?x{
值?x{“a”“b”“c”}
绑定(concat(“[”,?x_,”)为?x)
}
---------
|x|
=========
|“[a]”|
|“[b]”|
|“[c]”|
---------

即使在SPARQL for RDF 1.0中,
数据类型(“foo”)
也是
xsd:string
。您可以使用
^^xsd:string
。考虑到问题是必须给出xsd:string数据类型,看起来端点不是RDF 1.1,而是RDF 1.0。
values ?value_ { "N01009" "N01020" }
bind(str(?value_) as ?value)