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