【问题标题】:LinkedMDB SPARQL QueryLinkedMDB SPARQL 查询
【发布时间】:2013-09-13 10:17:22
【问题描述】:

我在这里有点困惑。我有以下 SPARQL 查询,可以很好地对抗 LinkedMDB explorer

 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')
}

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

-----------------------------------------------|
| 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|
-----------------------------------------------|

但是,问题来了。如果我写的是“阿甘正传”而不是“蝙蝠侠”,则查询找不到任何结果。

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

    ?resource dc:title "Forrest Gump". 

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

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

【问题讨论】:

  • 您的问题是可重现的,看起来不是您的问题。我在他们的网站上没有看到任何支持邮件列表,但您可以尝试通过电子邮件发送管理员联系地址 admin@linkedmdb.org。

标签: rdf sparql semantic-web linkedmdb


【解决方案1】:

SPARQL 1.1 引入了更多的字符串函数,例如containsstrstartsstrends,它们更加专业化,并且比使用完整的正则表达式要快得多。但是,LinkedMDB 浏览器似乎还不支持 SPARQL 1.1,所以这些在这里没有用处。

如果您知道电影的确切名称,那么简单地询问它而不是使用正则表达式会更有效。例如,

SELECT ?resource WHERE {
    ?resource movie:filmid ?uri .
    ?resource dc:title "Forrest Gump" .
}

SPARQL Results

返回电影db:film/38179

【讨论】:

  • 感谢您的回复。问题是我们不知道确切的名称。我们正在开发的应用程序使用“搜索框”,用户可以在其中搜索电影。我们不能指望用户知道电影的全名。
  • 嗯,是的,这会使事情复杂化。我可以重现你所说的那种问题。看起来他们的尽头确实发生了一些奇怪的事情。如果你使用regex filter(?title,"^For"),你甚至会得到一些以For开头的电影,但不是阿甘正传。
  • 是的。我敢打赌,如果您只是在数据库中打印“所有”(2557)电影,那么您获得的那些电影就是您将在列表中获得的电影。我已经尝试了几部电影,它发现每个人都打印了 2557,但没有找到其他人。让我们希望任何人都知道一个解决方案,或者它可能只是一个可怕的错误! :)
  • @user2775969 好吧,正如我在对该问题的评论中所说的那样,您可能应该向 admin@linkedmdb.org 发送一封电子邮件询问此问题(您也可以链接到这个问题,以显示到底发生了什么)。这可能很容易解决,但只能在他们的最后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 2014-05-30
相关资源
最近更新 更多