получить доступ к dbpedia с помощью spaqrl. Как получить несколько актеров для каждого фильма? - PullRequest
2 голосов
/ 05 декабря 2011

Я хочу получить данные обо всех фильмах, присутствующих в dbpedia, и список актеров, связанных с каждым фильмом. Я выполнил запрос:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT DISTINCT ?film_title ?star_name
where {?film_title rdf:type <http://dbpedia.org/ontology/Film> .
?film_title  foaf:name ?film_name .
?film_title rdfs:comment ?film_abstract .
?film_title dbpedia-owl:starring ?star .
?star dbpprop:name ?star_name
}

Это дает мне только имя первого актера. Как получить полный список актеров для каждого фильма?

1 Ответ

2 голосов
/ 06 декабря 2011

DPedia может не содержать всех актеров для всех фильмов в своих записях.В некоторых случаях только один актер связан с фильмом, в некоторых случаях несколько.Ваш запрос выглядит правильным, хотя вы можете получать дубликаты, потому что у актера может быть несколько свойств dbpprop: name, связанных с ним.В качестве альтернативы вы можете использовать следующий запрос, используя подзапросы:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?film_title ?star WHERE { {SELECT DISTINCT ?film_title
where {?film_title rdf:type <http://dbpedia.org/ontology/Film> } limit 10} . 
?film_title dbpedia-owl:starring ?star .
}
...