使用SPARQL查询电影的dbpedia

时间:2013-05-03 13:55:07

标签: sparql dbpedia

我想获取dbpedia上所有电影的数据(电影标题,导演名称,演员姓名和维基百科链接)。

我在http://dbpedia.org/snorql/上尝试了此查询。

SELECT ?film_title ?star_name ?nameDirector ?link WHERE {
  {  
    SELECT DISTINCT ?movies ?film_title
    WHERE {
       ?movies rdf:type <http://dbpedia.org/ontology/Film>; 
       rdfs:label ?film_title.
    } 
  }. 
  ?movies dbpedia-owl:starring ?star;
  foaf:isPrimaryTopicOf ?link;
  dbpedia-owl:director ?director. 
  ?director foaf:name ?nameDirector.
  ?star foaf:name ?star_name.
  FILTER LANGMATCHES( LANG(?film_title), 'en')
} LIMIT 100

响应似乎是正确的,但响应时间很慢,所以我想知道我是否可以改进查询以获得更快的响应。

1 个答案:

答案 0 :(得分:0)

您可以在查询中更改一些可能使其更快的内容。

首先,SELECT DISTINCT子查询的重点是什么?那只是试图消除重复的电影片名吗?如果您可以使用一些副本,那么删除它可能会使事情变得更快。

其次,FILTER子句要求数据库扫描所有可能的匹配并评估每个可能匹配的表达式,以确定是保留还是丢弃它。再次,如果您可以获得一些重复数据并且不介意非英语语言标记,则删除FILTER可能会使查询运行得更快。