我正在尝试使用 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

最佳答案

official DBpedia endpoint 在 Virtuoso 上运行,所以如果这样做是正确的,您可能只需要更新您自己的 Virtuoso 实例。 VOS 目前位于 7.2.2 (or 6.1.8 , if you must stay on v6) 6.1.6 ,而 Virtuoso Github space ( instructions ) 拥有 stable/7develop/7 (以及 stable/6develop/6 )的最新代码削减,每一个都提供了路径建议。

对于 future ——特别是关于 Virtuoso 的问题通常最好在 public OpenLink Discussion ForumsVirtuoso Users mailing listconfidential Support Case 上提出。

关于sparql - 限制本地 DBpedia SPARQL 查询的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13511936/

10-12 22:04