2012-11-22 105 views
3

我想获取包含使用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 

回答

3

official DBpedia endpoint是在炫技运行,所以如果那是做正确的事,你可能只需要更新自己的炫技实例。 VOS是目前7.2.2 (or 6.1.8, if you must stay on v6) 6.1.6 和炫技Github spaceinstructions)持有stable/7develop/7(和stable/6develop/6)最新的代码削减,每个传递路径表明什么。

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