我想获取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
响应似乎是正确的,但响应时间很慢,所以我想知道我是否可以改进查询以获得更快的响应。
答案 0 :(得分:0)
您可以在查询中更改一些可能使其更快的内容。
首先,SELECT DISTINCT
子查询的重点是什么?那只是试图消除重复的电影片名吗?如果您可以使用一些副本,那么删除它可能会使事情变得更快。
其次,FILTER
子句要求数据库扫描所有可能的匹配并评估每个可能匹配的表达式,以确定是保留还是丢弃它。再次,如果您可以获得一些重复数据并且不介意非英语语言标记,则删除FILTER
可能会使查询运行得更快。