首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinkedMDB SPARQL查询

LinkedMDB SPARQL查询
EN

Stack Overflow用户
提问于 2013-09-13 18:17:23
回答 1查看 2K关注 0票数 2

我有点糊涂了。我有以下SPARQL查询,它可以很好地处理LinkedMDB explorer

代码语言:javascript
复制
 PREFIX mdb: <http://data.linkedmdb.org/resource/movie/film>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 PREFIX dc: <http://purl.org/dc/terms/>

 SELECT ?label?resource WHERE {
    ?resource mdb:id ?uri .
    ?resource dc:title ?label . 
    FILTER regex(?label,'^Batman')
}

这个过滤掉了所有像这样的蝙蝠侠电影(我已经过滤掉了所有的结果,这里只显示了五个):

代码语言:javascript
复制
-----------------------------------------------|
| Label                           | Resource   |
|----------------------------------------------|
| Batman                          | db:film/2  |
| Batman                          | db:film/3  |
| Batman & Robin                  | db:film/4  |
| Batman: Mask of the Phantasm    | db:film/737|
| Batman: Mystery of the Batwoman | db:film/974|
-----------------------------------------------|

但是,问题来了。如果我写"Forrest Gump“而不是"Batman",查询将找不到任何结果。

但是,如果我将最后一行改为

代码语言:javascript
复制
    ?resource dc:title "Forrest Gump". 

它在LinkedMDB数据库中找到了这部电影,所以我知道它藏在某个地方。但是当我使用FILTER regex解决方案时,它不会返回。

我注意到,如果我只搜索没有过滤器,只是打印数据库中的所有电影,它看起来像LinkedMDB有一些限制在2557,这样网页就不会崩溃。看起来过滤器只过滤了这2557部电影。有没有办法检索更多的电影?

EN

回答 1

Stack Overflow用户

发布于 2013-09-13 21:26:16

SPARQL1.1引入了更多的字符串函数,比如containsstrstartsstrends,它们比使用完整的正则表达式要专业得多,速度也快得多。然而,看起来LinkedMDB资源管理器还不支持SPARQL1.1,所以这些在这里没有用处。

如果您知道电影的确切名称,那么简单地请求它将比使用正则表达式效率高得多。例如,

代码语言:javascript
复制
SELECT ?resource WHERE {
    ?resource movie:filmid ?uri .
    ?resource dc:title "Forrest Gump" .
}

SPARQL Results

返回胶片db:film/38179

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

https://stackoverflow.com/questions/18783869

复制
相关文章

相似问题

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