字符串上的SPARQL VALUES关键字?
我正在执行下面的查询。 我想使用org研究id谓词上的SPARQL 1.1 VALUES关键字同时为许多研究提取三元组。当我在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&
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)