当使用任何网络资源时,在你的情况下是 property :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 带有“资源”,而不是“页面”)
然后,您可以使用此处描述的方法搜索两个资源之间的任何路径,或者找到可以增加结果数量的其他模式的组合。