Как передать входную переменную в оператор SPARQL в R? - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь получить некоторые данные из набора данных с помощью запроса SPARQL в R, мне нужно передать параметры для запроса:

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, и мне нужно вместо этого передать ее в запроснапиши прямо (? день рождения).

1 Ответ

0 голосов
/ 19 октября 2018

Использование 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 также не заменяется, поскольку ? является подстановочным знаком в регулярных выражениях.

...