2016-07-07 5 views
1

Я хочу извлечь графики для 5 человек, которые являются фильмами (или фильмами) из DBPedia.SPARQL: извлекать определенные значения из dbpedia

Мой запрос:

ParameterizedSparqlString QS = новый ParameterizedSparqlString ("" +
"построить {s р о??}" + "где {са http://dbpedia.org/ontology/Film" + «s?.? ? р о "} OFFSET 0 LIMIT 5");

я получаю следующий результат:.

1- http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://dbpedia.org/ontology/Film

2- http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://www.w3.org/2002/07/owl#Thing.

3- http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://www.wikidata.org/entity/Q386724.

4- http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://dbpedia.org/ontology/Wikidata:Q11424.

5- http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://dbpedia.org/ontology/Work.

Задача: Тот же фильм возвращается 5 раз, так как весь класс: Film, Thing, Q386724, WIKIdata: Q11424 и Work - эквивалентный класс (или отношение Subclass существуют).

Мой вопрос:

Я хочу, чтобы вернуться раз тройное

<http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haytham>  
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> 
<http://dbpedia.org/ontology/Film> . 

и отфильтровать другие 4 троек.

Как это сделать?

Спасибо заранее

+0

Вы просили 's р о?? ', поэтому вы получите среди результатов другие классы, членом которых является'? s', независимо от того, являются ли они эквивалентными или нет. –

+0

Спасибо. Но как я могу вернуть обратно только тройку, связанную с классом фильма? – user2869180

ответ

2

Я думаю, должно работать для вас:

CONSTRUCT {?s ?p ?o} 
WHERE { 
    { SELECT DISTINCT ?s 
    WHERE { 
     ?s a <http://dbpedia.org/ontology/Film> . 
    } LIMIT 5 
    } 
    ?s ?p ?o . 
} 
+0

спасибо. Он работает хорошо. – user2869180

0

Я думаю, что вы хотите этот запрос

construct {?s a <http://dbpedia.org/ontology/Film> .} 
where { ?s a <http://dbpedia.org/ontology/Film>. } 
limit 5 
+0

Спасибо. Этот запрос вернет 5 разностей Film. Что очень хорошо, но мне нужен другой триплет каждого человека, например имя, продолжительность и т. Д. – user2869180

+0

@ user2869180 [с именем] (http://dbpedia.org/sparql/?default-graph-uri=http%3A%2F % 2Fdbpedia.org & запроса =% 0D% 0A% 0D% 0A% 0D% 0Aselect +% 3FS +% 3Fname% 0D% 0A% 0D% 0A% 7B% 3FS + а +% 3Chttp% 3A% 2F% 2Fdbpedia.org% 2Fontology% 2FFilm% 3E.% 0D% 0Aoptional% 7B% 0D% 0A% 3FS + FOAF% 3Aname +% 3Fname% 0D% 0A% 7D% 0D% 0A% 7D% 0D% 0A% 0D% 0Alimit + 5 & формат = текст% 2Fhtml & CXML_redir_for_subjs = 121 & CXML_redir_for_hrefs = & Тайм-аут = 30000 & debug = on) –

+0

@ user2869180 [с именем, автором, продюсером] (http://dbpedia.org/sparql/?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=%0D%0A%0D % 0A% 0D% 0Aselect +% 3FS +% 3Fname +% 3Fwriter +% 3Fproducer% 0D% 0A% 0D% 0A% 7B% 3FS + а +% 3Chttp% 3A% 2F% 2Fdbpedia.org% 2Fontology% 2FFilm% 3E.% 0D% 0Aoptional% 7B% 0D% 0A% 3FS + FOAF% 3Aname +% 3Fname% 0D% 0A% 7D% 0D% 0Aoptional% 0D% 0A% 7B% 0D% 0A% 3FS ++ DBO% 3Awriter +% 3Fwriter% 0D% 0A% 7D% 0D% 0Aoptional% 0D% 0A% 7B% 0D% 0A% 3FS + DBO% 3Aproducer +% 3Fproducer% 0D% 0A% 7D% 0D% 0A% 7D% 0D% 0A% 0D% 0Alimit + 5 & формат = текст% 2Fhtml & CXML_redir_for_subjs = 121 & CXML_redir_for_hrefs = & timeout = 30000 & debug = on) –

Смежные вопросы