を使用してキーワードを含むインスタンスを取得しようとしていますが、 (インスタンス)bif:contains
ごとに1つのラベルのみを取得したいので、どちらを使用してもかまいません。一般的なクエリ用なので、の?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