2014-10-24 12 views
1

SPIN API를 사용하여 템플릿을 실행하려고합니다. 간단한 템플릿의 경우 제대로 작동하지만 FILTERs이 포함 된 템플릿에는 문제가 있습니다. ,TopBraid SPIN API를 사용하여 SPARQL/SPIN 템플릿 실행

Template t = SPINModuleRegistry.get().getTemplate("TheTemplatesURI", myModel); 
System.out.printLn(t.getBody().toString()); 

그것은 쿼리 만 4 개 라인을 포함 FILTER 절을, 인쇄 : 검증 목적

, 나는 그것들을 실행하기 전에 템플릿 '몸을 인쇄하고 내가 보는 것은 내가 볼 것으로 예상 것이 아니다

FILTER <http://spinrdf.org/sp#notExists>([]) . 

이 때문에 쿼리를 실행하려고하면 쿼리가 실패합니다.

누구나 내 모델에서 전체 spin:body을 검색하는 방법에 대한 아이디어가 있습니까?

답변

1

이제 해결 방법을 사용합니다.

문제는, 내가

대신
FILTER NOT EXISTS { 
    ?s ?p ?o . 
    ... 
} 

내가 직접 그런 식으로 템플릿을 실행하면

NOT EXISTS { 
    ?s ?p ?o . 
    ... 
} 

로 넣으면 그 스핀 API 만 FILTER 쿼리가 제대로 (즉, 완료) 읽고있다 적절한 방법은 FILTER를 사용하기 때문에 SPARQL은 예외를 throw합니다. 이제 Topbraid Composer에 존재하지 않는 모든 템플릿을 저장하고 SPIN API를 통해로드 한 후 String.replace (...)를 통해 FILTER 비트를 추가합니다. 그것은 추한 수 있지만 적어도 작동합니다.