如何在SPARQL中使用描述内部服务

如何在SPARQL中使用描述内部服务,sparql,semantic-web,dbpedia,Sparql,Semantic Web,Dbpedia,我想使用SPARQL查询的descripe inside SERVICE子句。怎么能这样呢 我尝试了以下查询,但返回时出现语法错误 PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX : <http://dbpedia.org/resource/> DESCRIBE :Tom_Cruise WHERE { SERVICE <http://dbpedia.org/sparql/>{ } } 你完全不能 您的

我想使用SPARQL查询的descripe inside SERVICE子句。怎么能这样呢

我尝试了以下查询,但返回时出现语法错误

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX : <http://dbpedia.org/resource/>

DESCRIBE :Tom_Cruise WHERE {

SERVICE <http://dbpedia.org/sparql/>{

}
}
你完全不能

您的初始查询使用了SERVICE-inside-descripe而不是descripe-inside-SERVICE,尽管这是一个有效的构造,但SERVICE子句中的空图形模式会向DBpedia询问它的每一个三元组[由于公共端点上的服务限制,在返回有限数量的记录后,该三元组将超时和/或停止],然后要求您的本地SPARQL处理器对您得到的任何数据使用其描述例程,因此实际上可以确定您最终不会得到想要的数据。我不知道您试图在哪里执行它,也不知道您遇到了什么语法错误,因此无法进一步分析该错误

descriple是一个,而不是SELECT中的子句。它只是,也就是说,它提供的内容在不同的实现中有很大的不同

此外,SERVICE子句不将完整查询作为参数—它采用图形模式

所以,你可以这样做-

PREFIX : <http://dbpedia.org/resource/>

DESCRIBE :Tom_Cruise
WHERE 
  {
    SERVICE <http://dbpedia.org/sparql/>
      {
         :Tom_Cruise   ?p  ?o .
         ?s  ?p  :Tom_Cruise
      }
  }

这个查询的目标是什么?与在客户端代码中将端点设置为URL的标准描述相比,我看不出有什么好处。初始查询是一个有效的SPARQL查询,在服务子句中有一个空的图形模式-至少根据语法和SPARQL验证器是这样的。但不清楚他犯了哪种语法错误以及从何处来的错误……在DBpedia上,您得到了一个Virtuoso 42000错误SQ070:SECURITY:必须对view DB.DBA.SPARQL_SINV_2具有选择权限,但这看起来更像是公共服务的一些限制。是的,DBpedia不允许出站联合SPARQL。
PREFIX : <http://dbpedia.org/resource/>

DESCRIBE :Tom_Cruise