如何将输入变量传递给 R 中的 SPARQL 语句?

How to pass input variable to SPARQL statement in R?

我试图通过在 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,我需要将它传递给查询而不是直接写入它 (?birthday)。

在这种情况下使用 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。 fixed 参数用于确保 ex:birthday 不会因为 ? 是正则表达式中的通配符而被替换。