我试图通过在R中使用SPARQL查询从数据集中获取一些数据,我需要将参数传递给查询:
var_1 <-'?birthday'
query <- 'PREFIX ex: <http://mypersonality.ddm.cs.umu.se/0.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX op: <http://environment.data.gov.au/def/op#>
SELECT ?userid ?birthday
WHERE {
?contributor ex:userid ?userid .
?contributor ex:birthday ?birthday .
}limit 30'
qd <- SPARQL::SPARQL(url=endpoint,query=query)$result
我有一个变量var_1,我需要将其传递给查询,而不是直接写它(生日)。
答案 0 :(得分:1)
在这种情况下,使用sprintf
应该会有所帮助。
var_1 <-'?birthday'
query <- sprintf('PREFIX ex: <http://mypersonality.ddm.cs.umu.se/0.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX op: <http://environment.data.gov.au/def/op#>
SELECT ?userid %s
WHERE {
?contributor ex:userid ?userid .
?contributor ex:birthday ?birthday .
}limit 30',var_1)
您可能要尝试使用其他类型而不是%s
,具体取决于您输入的内容。尝试运行?sprintf
,它应该解释有关不同类型的所有内容。
其他说明:
gsub
可能也是一个好主意:
var_1 <-'?birthday'
query <- 'PREFIX ex: <http://mypersonality.ddm.cs.umu.se/0.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX op: <http://environment.data.gov.au/def/op#>
SELECT ?userid ?birthday
WHERE {
?contributor ex:userid ?userid .
?contributor ex:birthday ?birthday .
}limit 30'
query <- gsub("?birthday",var_1, query,fixed = TRUE)
它将在查询中查找?birthday
引用,并将其替换为变量var_1
。固定参数用于确保ex:birthday
由于正则表达式中的通配符也未被替换。{p>