2016-06-29 4 views
0

피할 수없는 개체가 x 개 미만인 모든 트리플을 삭제하는 삭제를 수행하려고합니다.WHERE 절에서 FILTER (COUNT (DISTINCT? obj)> x)를 사용하여 SPARQL DELETE {} WHERE {}를 수행 할 수 있습니까?

의도 된 쿼리는 내 기분 후 모양은 다음과 같습니다

DELETE { ?sub ?pred ?obj . } 
WHERE { 
    {SELECT ?sub ?pred ?obj (count(?obj) as ?count) 
    WHERE { ?sub ?pred ?obj . 
     } GROUP BY ?sub 
    } FILTER(?count < 14) 
} 

은 위의 작동하지 않습니다.

?obj을 달성하려면 GROUP BY이 필요하지만이 방법은 알 수 없습니다.

누군가이 작업을 해결하기 위해 올바른 방향으로 나를 밀어 낼 수 있습니까?

+1

'작동하지 않음'이란 무엇을 의미합니까? 오류 메시지가 있으면 질문에 포함 시키십시오. – chrisis

+1

첫째, 나는 당신이'SELECT' 권한을 얻을 필요가 있다고 생각합니다. 여러분의 도전이 버추 오소 관련일지도 모른다면, 버전 정보를 추가하고 [Virtuoso Users 메일 링리스트] (https://lists.sourceforge.net/lists/listinfo/virtuoso-users/)에 질문을 올려주십시오. [OpenLink 지원 포럼] (http://boards.openlinksw.com/support/index.php) 또는 [OpenLink 지원 사례] (http://support.openlinksw.com/support/online-support.vsp) . (ObDisclaimer : 저는 [Virtuoso] (http://virtuoso.openlinksw.com/)의 제조업체 인 [OpenLink Software] (http://www.openlinksw.com/)에서 일하고 있습니다. – TallTed

+1

'{? sub? pred? obj. }'트리플 또는''sub'을 삭제 하시겠습니까? 후자를 원하면'? sub'에 대한 참조를 제거하고 싶을 것입니다. – scotthenninger

답변

3

하위 쿼리는 실제로 유효한 쿼리가 아닙니다. 당신이 sparql.org's query validator에 바로 하위 쿼리를 확인하려고하면이 출력을 얻을 :

Syntax error:

Non-group key variable in SELECT: ?pred

은 이상하게도하지만, 전체 쿼리 update validator 유효성 검사를 수행합니다.

I want to achieve a delete which deletes all triples where there are less than x distinct objects per subject.

중 하나는 완벽하게 명확하지 않습니다 : 그것은 당신이 삭제하려고하고 문 정확히 무엇을 당신의 시도 쿼리 정확히 분명하지 않다. 당신이 이상 10 미만 별개의 객체에 그 주제와 함께 사용되는 모든 술어를 관련 주제로 트리플을 삭제하려는 경우,이 같은 찾을 것 :

다음
select ?s ?p ?o { 
    ?s ?p ?o 
    { select ?s { ?s ?pp ?oo } 
    group by ?s 
    having (count(distinct ?oo) < 10) } 
} 

, 삭제를 확장하는 것은 쉽습니다.

delete { ?s ?p ?o } 
where { 
    ?s ?p ?o 
    { select ?s { ?s ?pp ?oo } 
    group by ?s 
    having (count(distinct ?oo) < 10) } 
} 
+0

이것은 Jena 개발자에게 버그로보고해야합니다. – AKSW

+0

이것은 정확하게 달성하고 싶었던 것입니다. 임금 설명에 대해 유감입니다. (내 쿼리와의 혼란은 내가 추측 한 것을 분명히하는 데 도움이되지 못했습니다.) 나는 실제로 그것을 만났습니다. 나는 validator를 시험해 보았고 불평하지 않았을 때 행복했기 때문에 실제로 무슨 일이 일어 났는지 알 수 없었다! 고맙습니다! – oole

+0

@AKSW https://issues.apache.org/jira/browse/JENA-1203으로 신고되었습니다. –