Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql 从DBpedia获取基于书籍的电影_Sparql_Ontology_Dbpedia_Sparqlwrapper - Fatal编程技术网

Sparql 从DBpedia获取基于书籍的电影

Sparql 从DBpedia获取基于书籍的电影,sparql,ontology,dbpedia,sparqlwrapper,Sparql,Ontology,Dbpedia,Sparqlwrapper,我是SPARQL新手,正在尝试从dbpedia获取一部改编自特定书籍的电影。这就是我到目前为止所做的: PREFIX onto: <http://dbpedia.org/ontology/> SELECT * WHERE { <http://dbpedia.org/page/2001:_A_Space_Odyssey> a ?type. ?type onto:basedOn ?book . ?book a onto:Book } 前缀到: 挑选*

我是SPARQL新手,正在尝试从dbpedia获取一部改编自特定书籍的电影。这就是我到目前为止所做的:

PREFIX onto: <http://dbpedia.org/ontology/>
SELECT *
WHERE 
{
  <http://dbpedia.org/page/2001:_A_Space_Odyssey> a ?type.
  ?type onto:basedOn ?book .
  ?book   a  onto:Book 
}
前缀到:
挑选*
哪里
{
a型。
?键入:basedOn?book。
把一本书放在一本书上
}

我不能得到任何结果。如何才能做到这一点?

在使用任何web资源时,以及在您的案例中,属性
:basedOn
,您需要确保声明了正确的前缀。如果您是从DBpedia SPARQL端点进行查询,那么您可以直接使用
dbo:basedOn
,即使不声明它,因为它是其中之一。或者,如果您想使用自己的,或者如果您正在使用另一个SPARQL客户端,请确保为该属性选择任何短名称,并声明其前缀

然后,首先,为了得到更多的结果,你可以不限制这个三重模式的主题类型,因为可能有电影实际上不是这样的类型。这样的查询

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)>}
}
select?p
{
{?p}
联合
{?p}
}
您将只得到一个结果:

(请注意,URI带有'resource',而不是'page')


然后,您可以使用所描述的方法搜索两个资源之间的任何路径,或者找到会增加结果数量的其他模式的组合

错误的名称空间、错误的URI、第一个和第二个三重模式之间的错误连接(为什么书的类型应该基于其他书?)以及最后但并非最不重要的一点,对于您的示例,没有基于的关系。不要“发明”不存在的关系,检查是否存在Ivo Velitchkov在中描述的现有关系。是的,你是对的,我把前缀贴错了。它必须是前缀:。看起来像是家庭作业。。。就像。。。像