我想获取包含使用bif:contains
的关键字的实例,但我只想为每个?s
(实例)获取一个标签,我不在乎哪一个。我不能用regex
之类的东西来过滤它,因为它是用于一般查询的。这是我的查询,但它从每个实例(?s
)获取所有标签:限制本地DBpedia结果SPARQL查询
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