Конечная точка IMDB SPARQL - операторы фильмов, как

В настоящее время я работаю с различными конечными точками SPARQL и ищу запрос конечной точки IMDB для фильмов по названию. Я уже придумал следующий запрос для DBPedia.

SELECT DISTINCT film_title
WHERE {
   ?film_title rdf:type <http://dbpedia.org/ontology/Film> .
   ?film_title dbpprop:name ?label . FILTER langMatches(lang(?label), "en")
   ?film_title rdfs:comment ?comment . FILTER(LANGMATCHES(LANG(?comment), "en")) .
   FILTER (REGEX(STR(?film_title), "The Big Lebowski", "i")) .
} LIMIT 10

Кто-нибудь есть какие-либо предложения о том, как структурировать запрос для IMDB?

1 ответ

Решение

Ваш запрос не является законным и после исправления нет результатов из DBpedia

Ваш запрос не работает на DBpedia. Это отсутствует ? в select distinct film_titleи даже если вы добавите это, вы не получите никаких результатов. Я ожидаю, что вы на самом деле хотите что-то вроде

select distinct ?film where  {
   ?film a dbpedia-owl:Film ; 
         rdfs:label ?label .
   filter contains( ?label, "The Big Lebowski" )
}
limit 10

Результаты SPARQL

IMDB не имеет конечной точки SPARQL

Я не знаю ни одной конечной точки IMDB SPARQL, и поиск Google для imdb sparql endpoint не поднимать один. Я остановлюсь на конечности и предположу, что вы говорите о конечной точке SPARQL LinkedMDB, поскольку она содержит некоторую информацию о некоторых фильмах, которые также есть в IMDB. Он имеет конечную точку SPARQL, а также проводник SNORQL, в котором можно тестировать запросы.

Запрос, который работает на DBpedia и LinkedMDB

Если вы также просматриваете страницы LinkedMDB для фильмов, вы можете узнать, какие свойства они используют. Например, со страницы The Magician вы можете увидеть, что LinkedMDB также использует rdfs:label для обозначения заголовков. Соответствующий тип - это не dbpedia-owl: Фильм, а фильм: фильм, который <http://data.linkedmdb.org/resource/movie/film>,

Теперь конечная точка LinkedMDB не использует SPARQL 1.1, поэтому вы не можете использовать contains функция, но вы все еще можете использовать регулярные выражения. Так как мы знаем, что у "Волшебника" есть запись (она не похожа на "Большой Лебовски"), давайте посмотрим на похожий запрос, который ее получает:

select distinct ?film where  {
   ?film a movie:film ;
         rdfs:label ?label .
   filter regex( str(?label), "The Magician", "i")
}
limit 10

Результаты SPARQL

Теперь вы можете спросить, есть ли запрос, который будет работать как на LinkedMDB, так и на DBpedia, и достаточно точно:

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
prefix movie: <http://data.linkedmdb.org/resource/movie/>

select distinct ?film where  {
  { ?film a movie:film       } union 
  { ?film a dbpedia-owl:Film }
  ?film rdfs:label ?label .
  filter regex( str(?label), "The Magician", "i")
}
limit 10

Результаты LinkedMDB SPARQL (1 фильм)
Результаты DBpedia SPARQL (10 фильмов)

Другие вопросы по тегам