Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WikiDataQueryService查询Wikidata的字符串向量_R_Sparql_Wikidata - Fatal编程技术网

使用WikiDataQueryService查询Wikidata的字符串向量

使用WikiDataQueryService查询Wikidata的字符串向量,r,sparql,wikidata,R,Sparql,Wikidata,提供了电影名称的矢量,我想知道它们的类型 由于我是R用户,我最近发现了与我所寻找的完全相同的示例: library(WikidataQueryServiceR) query_wikidata('SELECT DISTINCT ?genre ?genreLabel WHERE { ?film wdt:P31 wd:Q11424. ?film rdfs:label "The Cabin in the Woods"@en. ?film wdt:P136 ?genre. SERVIC

提供了电影名称的矢量,我想知道它们的类型

由于我是R用户,我最近发现了与我所寻找的完全相同的示例:

library(WikidataQueryServiceR)
query_wikidata('SELECT DISTINCT
  ?genre ?genreLabel
WHERE {
  ?film wdt:P31 wd:Q11424.
  ?film rdfs:label "The Cabin in the Woods"@en.
  ?film wdt:P136 ?genre.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}')

## 5 rows were returned by WDQS
不幸的是,此查询使用静态文本,因此我想用向量替换
森林中的小屋。为此,我尝试了以下代码:

library(WikidataQueryServiceR)

example <- "The Cabin in the Woods" # Single string for testing purposes.

query_wikidata(paste('SELECT DISTINCT ?human ?humanLabel ?sex_or_gender ?sex_or_genderLabel WHERE {
  ?human wdt:P31 wd:Q5.
  ?human rdfs:label', example, '@en.
  ?human wdt:P21 ?sex_or_gender.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  OPTIONAL { ?human wdt:P2561 ?name. }
}', sep = ""))
库(WikiDataQueryService)

示例您是否尝试输出SPARQL查询-

  • rdfs:label之后没有空格
  • 森林中的小屋周围没有引号
在R代码中,而不是

?人类rdfs:label',示例'@en。
第7行应为:

?人类RDF:标签“”,示例“”@en。

虽然
query\u wikidata()
可以接受字符串向量,但我建议改用SPARQL 1.1,以避免请求过多

库(WikiDataQueryService)

示例:你的答案非常有效!你说得对,我忘了那些引号和空格。不过,我不理解您回答的第二部分关于SPARQL值的内容。@ccamara,SPARQL 1.1
values
是一种提供内联数据的方法。这允许执行单个大查询,而不是许多小查询(稍微相关)。然而,如果查询很大,则请求应该是POST,而不是GET。WikipediaQueryService支持开发版本中的POST请求。但是,我仍然收到
请求URI太长(HTTP 414)
,例如,
示例