我正在尝试使用 获取包含关键字的实例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
我尝试使用嵌套查询,但是当我添加 a 时,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