0

我喜欢使用 R 中的rrdfSPARQL包来探索我的三重存储的内容。我相信他们在后台使用 cURL。除了端点地址和查询本身之外,它们还可以采用其他参数。

这是 GraphDB 关于基于 cURL 的查询的注释:http: //graphdb.ontotext.com/documentation/standard/quick-start-guide.html#query-data-programmatically

我可以发誓我过去从 R 连接到了一些受密码保护的 Triplestore,但我不记得我是怎么做到的。它可能是 Stardog 或 Blazegraph。

我将通过 VPN 连接。我希望我可以放宽关于不在纯文本 URL 中嵌入敏感数据(如密码)的常规规则。

  • 我可以通过将用户名和密码作为 URL 的一部分连接到受密码保护的 GraphDB(或任何其他符合 RDF4J 的三元存储)吗?
  • 或者,我是否可以通过 cURL 与 GraphDB 建立经过身份验证的连接/会话,而不是在某些 Java 或 Scala 代码中建立安全连接?
4

1 回答 1

1

来自RCurl:当站点使用没有 WWW-Authenticate 的 HTTP 401 代码响应时的 HTTP 身份验证

关键是将身份验证类型 ( httpauth) 指定为位图选项 ( 1L),以传递给 rCURL。

library(SPARQL)

graphdb.address.port <- "http://localhost:7200"

selected.repo <- "mymedicalrecrods"

sparql.base <-
  paste0(graphdb.address.port, "/repositories/", selected.repo)

sparql.prefixes <- ""

api.user <- "markmiller"
api.pass <- rstudioapi::askForPassword()

placeholder.q <- paste0(
'
PREFIX owl: <http://www.w3.org/2002/07/owl#>
select *
where {
    graph ?g {
        ?s ?p ?o
    }
}
limit 9
')

sparql.result <-
  SPARQL::SPARQL(
    url = sparql.base,
    query = placeholder.q,
    curl_args = list('userpwd' = paste0(api.user,":", api.pass), "httpauth" = 1L)
  )
sparql.result<- sparql.result$results
于 2019-06-12T14:26:04.100 回答