SERVICE关键字不适用于SPARQL查询?

时间:2016-08-10 12:39:49

标签: java sparql jena apache-jena

我尝试在具有此query link的网站上的SPARQL查询中使用SERVICE关键字 我在这里找到了关于SERVICE关键字:this link

我的查询已经在上面给出了链接以执行:

 SELECT * 
 WHERE { 
   ?x a ?name .  
   SERVICE ?name 
   { ?p a ?q . } 
 }

但它没有反映我的SPARQL查询并给出错误原因? 我尝试将?p更改为?name,但仍无效。

2 个答案:

答案 0 :(得分:0)

查询的想法是什么?我不明白你想用查询实现什么。顺便说一下,DBpedia中?s a ?cls类型的三元组数量是100 555 839 ......

我不认为DBpedia每个类都有单独的图表。即使它有,也可以查询给定的类,例如dbo:Person

SELECT * WHERE { 
   SERVICE dbo:Person 
   { ?p a ?q . } 
}
LIMIT 10

导致错误

  

Virtuoso 42000 Error SQ070:SECURITY: Must have select privileges on view DB.DBA.SPARQL_SINV_2

我猜DBpedia SPARQL端点不允许联合查询

答案 1 :(得分:0)

基于评论中问题的不明确扩展......我认为SERVICE与您的查询无关,我认为您想要的更像是 -

SELECT DISTINCT ?x ?name ?q
WHERE 
  {
    ?x     a  ?name  .
    ?name  a  ?q     .
  }
ORDER BY ?x ?name ?q
LIMIT 100

See results here