如何限制SPARQL查询中特定变量的结果数?

tre*_*ell 9 query-optimization sparql

假设我有一个像这样的SPARQL查询,寻找具有焦点资源的一些共享属性的资源,并且还获得关于焦点资源的一些其他陈述:

CONSTRUCT {
  ?focal pred:icate ?shared .
  ?other pred:icate ?shared .
}
WHERE {
  ?focal pred:icate ?shared ;
         more:info ?etc ;
         a "foobar" .
  ?other pred:icate ?shared .
}
LIMIT 500
Run Code Online (Sandbox Code Playgroud)

如果有超过500个其他资源,LIMIT可能会排除该more:info语句和对象.那么,有没有办法说"我只想要最多500个?other",或者我是否必须将此查询分成多个部分?

Jan*_*Jan 11

您可以在子查询中使用LIMIT,例如以下内容:

CONSTRUCT {
  ?focal pred:icate ?shared .
  ?other pred:icate ?shared .
}
WHERE {
    ?focal pred:icate ?shared ;
           more:info ?etc ;
           a "foobar" .
    { 
      SELECT ?shared {
        ?other pred:icate ?shared .
      }
      LIMIT 500
    }
}
Run Code Online (Sandbox Code Playgroud)