首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用SPARQL从LinkedMDB检索具有高ID的电影

无法使用SPARQL从LinkedMDB检索具有高ID的电影
EN

Stack Overflow用户
提问于 2014-02-25 16:58:38
回答 1查看 356关注 0票数 4

我正在LinkedMDB SPARQL端点上运行下面的查询,它可以工作。有了它,我就能得到所有我需要的关于id 72的导演的信息,也就是泰坦尼克号,所以我得到了詹姆斯·卡梅隆的信息。

代码语言:javascript
复制
PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
  ?pelicula mdb:filmid ?id .
  ?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
  ?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
  ?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
  FILTER (?id = 72).
}

对于ID较高的电影,例如ID为44396的星际迷航,如果我用44396替换72,则查询不返回结果。但是,分录显然有一个目录、id和名称。为什么修改后的查询不能工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-25 18:40:52

SPARQL允许您编写72作为文字"72"^^xsd:integer的缩写。正如您所看到的,您可以使用ID "72"^^xsd:integer检索胶片,而不会出现问题。但是,您要寻找的另一部影片有id "44396"^^xsd:int (注意,数据类型是xsd:int,而不是xsd:integer)。我不知道数据类型为何不同,但它足以帮助我们检索我们想要的内容:

代码语言:javascript
复制
PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
  ?pelicula mdb:filmid "44396"^^xsd:int .
  ?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
  ?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
  ?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
}

SPARQL结果(一)

代码语言:javascript
复制
director          nombre_director  id_director
----------------------------------------------
db:director/9025  "J.J. Abrams"    9025

注意,我只是将实际所需的值放入查询模式,而不是filtering。我发现这有点简单,如果查询引擎没有优化,它的性能可能会更好(因为它没有构建一个大的结果集,然后过滤掉)。事实上,这可能解释了为什么使用变量和过滤器的语义等价的查询不返回结果,如果查询返回多少个结果是有限制的。(但这纯粹是猜测。)无论如何,下面的查询不起作用,但我认为它应该:

代码语言:javascript
复制
PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
  ?pelicula mdb:filmid ?id .
  ?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
  ?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
  ?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
  filter ( ?id = "44396"^^xsd:int ) 
}

SPARQL结果(无)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22021040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档