我正在尝试使用R编写SPARQL查询,但出现以下错误。
正在加载所需的软件包:XML
正在加载所需的软件包:RCurl
正在加载必需的软件包:bitops
开始和结束标记不匹配:第5行和正文
开始和结束标记不匹配:正文第3行和html
标记html第1行中的数据过早结束
错误:1:开头和结尾的标签不匹配:第5行和正文
2:开头和结尾的标签不匹配:正文第3行和html
3:标记html第1行中的数据过早结束
我读到这是因为GET
请求而不是POST
请求。这个说法是真的吗?有没有不用update=""
的方法吗?这是我的代码,谢谢。
library(SPARQL)
endpoint <- "http://lod.iisahost.net/sparql"
q <- "
PREFIX r: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX q: <http://purl.org/linked-data/cube#>
PREFIX sm: <http://purl.org/linked-data/sdmx/2009/measure#>
PREFIX sa: <http://purl.org/linked-data/sdmx/2009/attribute#>
PREFIX sd: <http://purl.org/linked-data/sdmx/2009/dimension#>
PREFIX dm: <http://purl.org/linked-data/sdmx/2009/dimension#>
PREFIX p: <http://eurostat.linked-statistics.org/property#>
PREFIX xt0: <http://lodpilot.com/dims>
WITH <http://10.227.21.200:8890/lod>
SELECT
?tp ?value
WHERE {
?o a q:Observation.
?o q:dataSet ?d.
?o sm:obsValue ?value.
?o p:geo ?ge.
?o xt0:gender ?gen.
?o xt0:age ?a.
?o xt0:citizen ?c.
?o sd:timePeriod ?tp
FILTER(
regex(str(?d),'/data/LFSA_URGAN')
&&
regex(str(?ge),'/dic/geo.EL')
&&
regex(str(?gen),'/dic/gender.FEMALE')
&&
regex(str(?a),'/dic/age.Y15-39')
&&
regex(str(?c),'/dic/citizen.EU27_FOR')
&&
strlen(str(?value))>0
)
} LIMIT 100"
# Query the endpoint, and store results in a data frame
res <- SPARQL(url=endpoint,q,curl_args=c('userpwd'=paste('myusername',':','mypassword',sep="")))["results"]