在本地DBpedia SPARQL查询中限制结果

时间:2012-11-22 11:35:21

标签: sparql dbpedia virtuoso

我正在尝试使用bif:contains获取包含关键字的实例,但我想为每个?s(实例)只获取一个标签,而我不关心哪一个。我无法使用类似regex的内容对其进行过滤,因为它适用于一般查询。这是我的查询,但它获取每个实例的所有标签(?s):

SELECT DISTINCT ?s,?o1,?sc,?l WHERE {
  ?s ?s1textp ?o1 .
  ?o1 bif:contains ' (madrid AND embargo) ' OPTION ( score ?sc ) . 
  ?s <http://www.w3.org/2000/01/rdf-schema#label> ?l      
}
ORDER BY DESC ( ?sc )
LIMIT 30
OFFSET 0

我尝试了嵌套查询,但是当我添加LIMIT时,我没有得到任何结果。

SELECT DISTINCT ?s,?o1,?sc,?l WHERE {
  ?s ?s1textp ?o1 .   
  ?o1 bif:contains ' (madrid AND embargo) ' OPTION ( score ?sc ) .                 
  {
    SELECT DISTINCT ?s,?l WHERE {
      ?s <http://www.w3.org/2000/01/rdf-schema#label> ?l
    }
    LIMIT 1
  }      
}
ORDER BY DESC ( ?sc )
LIMIT 30
OFFSET 0

我还看到了SAMPLE聚合函数;它完全符合我想要的DBpedia端点,但它不适用于我自己的Virtuoso! (我正在使用开源版本。)

SELECT DISTINCT ?s,?o1,?sc,?l WHERE {
  ?s ?s1textp ?o1 .
  ?o1 bif:contains ' (madrid AND embargo) ' OPTION ( score ?sc ) . 
  {
    SELECT DISTINCT ?s,(SAMPLE(?l) AS ?l) WHERE {
      ?s <http://www.w3.org/2000/01/rdf-schema#label> ?l
    }
    GROUP BY ?s
  }
}
ORDER BY desc ( ?sc )
LIMIT 30
OFFSET 0

1 个答案:

答案 0 :(得分:3)

official DBpedia endpoint正在Virtuoso上运行,所以如果这样做是正确的,你可能只需要更新自己的Virtuoso实例。 VOS目前位于7.2.2 (or 6.1.8, if you must stay on v6) 6.1.6 ,而Virtuoso Github spaceinstructions)保留stable/7和{develop/7中的最新代码{1}}(以及stable/6develop/6),每个都提供了路径所暗示的内容。

对于未来 - 通常最好在public OpenLink Discussion ForumsVirtuoso Users mailing listconfidential Support Case上提出有关Virtuoso的问题。