2014-12-09 3 views
1

저는 SPARQL과 Jena 프레임 워크를 처음 접했고 정규 표현식을 사용하여 Java에서 SPARQL 쿼리를 수행하고 싶습니다. 여기 내 코드는 다음과 같습니다.자바 문자열에서 정규 표현식을 사용하는 SPARQL 요청

String queryString = "select ?a where { filter regex(?a, 'e', 'i') }"; 

Query query = QueryFactory.create(queryString); 

try (QueryExecution qexec = QueryExecutionFactory.create(query, ontology)) { 
    ResultSet results = qexec.execSelect() ; 
    for (; results.hasNext() ;) 
    { 
     QuerySolution soln = results.nextSolution() ; 
     System.out.println("a : " + soln.get("a").toString()); 
    } 
} 

Ontology 변수에는 이름에 'e'개념이있는 OntModel이 포함되어 있습니다. 이 요청을 통해 이러한 개념을 검색하고 싶습니다. 그러나이 코드는 정규식을 단순한 것으로 바꾸면 아무것도 표시하지 않습니다. 내 요청에 무엇이 잘못되었는지 이해하지 못합니다. 누구든지 나를 도울 수 있습니까?

+0

문자열에 'e'또는 'E'가 포함되어 있는지 확인하려는 경우 정규식을 사용할 실제 이유가 없습니다. 'e'가 포함되어 있는지 'E'가 포함되어 있는지 확인하거나 소문자 (대문자) 버전에 'e'('E')가 있는지 확인하십시오. –

답변

2

필자는 필터를 적용 할 방법이 없다는 것을 알았습니다.

PREFIX skos:<http://www.w3.org/2004/02/skos/core#> 
SELECT ?a 
WHERE 
{ ?o skos:prefLabel ?a . 
    FILTER REGEX(?a, 'e', 'i'). 
} 
ORDER BY ?a 

을 사용해 보거나 사용 사례에 대해 자세히 알려주십시오.

관련 문제