При использовании любого веб-ресурса и в вашем случае свойства :basedOn
необходимо убедиться, что вы указали правильный префикс.Если вы запрашиваете данные из конечной точки DBpedia SPARQL, вы можете напрямую использовать dbo:basedOn
, даже не объявляя его, так как он находится среди предопределенных .В качестве альтернативы, если вы хотите использовать свой собственный или если вы используете другой клиент SPARQL, убедитесь, что любое короткое имя, выбранное для этого свойства, вы объявляете префиксом для http://dbpedia.org/ontology/.
Затем,Во-первых, чтобы получить больший результат, вы не можете ограничивать тип объекта этого тройного шаблона, поскольку могут быть фильмы, которые на самом деле не напечатаны как таковые.Таким образом, такой запрос
select distinct *
{
?movie dbo:basedOn ?book .
?book a dbo:Book .
}
даст вам много хороших результатов, но не все.Например, ресурс из вашего примера будет отсутствовать.Вы можете легко проверить тестирование доступных свойств между этими двумя ресурсами с помощью следующего запроса:
select ?p
{
{<http://dbpedia.org/resource/2001:_A_Space_Odyssey_(film)> ?p <http://dbpedia.org/resource/2001:_A_Space_Odyssey> }
UNION
{ <http://dbpedia.org/resource/2001:_A_Space_Odyssey> ?p <http://dbpedia.org/resource/2001:_A_Space_Odyssey_(film)>}
}
Вы получите только один результат: http://www.w3.org/2000/01/rdf-schema#seeAlso
(обратите внимание, что URIс помощью «ресурса», а не «страницы»)
Затем вы можете искать любой путь между двумя ресурсами, используя метод, описанный здесь , или найти комбинацию других шаблонов, которые быувеличить количество результатов.