Запрос dbpedia с SPARQL для фильмов

Я хочу получить данные (название фильма, имя режиссера, имя актера и ссылку на Википедию) обо всех фильмах, представленных на 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

Ответы кажутся правильными, но время отклика велико, поэтому мне интересно, могу ли я улучшить свой запрос, чтобы получить более быстрый ответ.


person neptooo    schedule 03.05.2013    source источник
comment
так вы придумали лучший запрос? Вы можете поделиться с нами?   -  person Bikal Basnet    schedule 07.12.2014


Ответы (1)


Есть несколько вещей, которые вы можете изменить в своем запросе, чтобы сделать его быстрее.

Во-первых, в чем смысл вашего SELECT DISTINCT подзапроса? Это просто попытка устранить повторяющиеся названия фильмов? Удаление этого может ускорить работу, если вы сможете жить с несколькими дубликатами.

Во-вторых, предложения FILTER требуют, чтобы база данных просматривала все возможные совпадения и оценивала выражение для каждого возможного совпадения, чтобы определить, оставить ли его или выбросить. Опять же, если вы можете жить с получением некоторых повторяющихся данных и не возражаете против неанглийских языковых тегов, удаление FILTER может ускорить выполнение запроса.

person RobV    schedule 03.05.2013