2011-03-21 5 views
1

내 응용 프로그램이 올바른 단어 즉 C 또는 C++을 SPARQL과 일치시켜야합니다. 나는이 (말씀 때문에 '개념'가진 'C'의) 임베디드 시스템에서 - 진짜 개념 같은 모든 책, 심지어 C++, C# 및 책을 내게 일치하는 다음 SPARQL 쿼리SPARQL을 통해 정확한 단어를 일치시키는 방법

String prolog = "PREFIX kb: <" + VBOOK.getURI() + ">"; 

String queryString = prolog 

+ "\n" 

+ "SELECT * " 

+ "WHERE {?x kb:Price ?price. ?x kb:Currency ?currency. ?x kb:Title ?title. ?x kb:Count ?count. " 

+ "OPTIONAL {?x kb:Description ?description}." 

+ "FILTER regex(?title, \"" +title + "\")}"; 

에게 있습니다.

나는

+ "FILTER regex(?title, \"" +"^"+title + "\")}"; 

에 마지막 줄을 변경하고 제목 예를 들어 'C'의 경우 다음 내 쿼리는 제목에 ANSI에서 프로그래밍 '와 같은 C'.So 책'문자로 시작 만 권의 책을 일치하는 경우 C '는 선택되지 않습니다.

나는이 많은 나에게 도움이되지도 마지막 줄

+ "FILTER regex(str(?title), \"" +title + "\")}"; 

에 다음과 같은 변화를 시도했다.

도서 제목이 C로 시작하지 않아도 'C'관련 도서를 수정하려면 어떻게해야합니까?

감사합니다. Archana.

+0

중복 on http://www.semanticoverflow.com/questions/3750/how-to-match-an-exact-word-through-sparql – RobV

답변

2

이 질문은 귀하의 쿼리 엔진이 지원하는 정규 표현식이 무엇인지에 달려 있습니다. 이 \b 단어 경계 매칭을 지원하는 경우

당신이 전혀 정규식 필요합니까
+ "FILTER regex(?title, \"\\b" + title + "\\b\")}"; 
+0

'C'를 입력 할 때 어떤 결과도 나타나지 않습니다. – Archana

+0

@Archana : 음, 어떤 쿼리 엔진을 사용하고 있습니까? – laalto

+0

ARQ-2.8.5 및 Jena-2.6.3. java 서버 인 tomcat 서버를 사용하고 있습니다. – Archana

1

에 마지막 줄을 변경하여 문제를 해결할 수 있습니까? 대신 제목에게 변수를 만드는

, 단순히 그래서 그것을 해결 -

X 킬로바이트 : 제목 "제목". 코드에서

문자열 제목 = "C++";

"{X 킬로바이트 :?.? 가격 가격 X 킬로바이트 :?.? 환율 통화 X 킬로바이트 : 제목 \" "+ 제목 +"\ "X 킬로바이트 :.?. 카운트 계산"

+0

나는 이것을 시험해 볼 필요가있다. 그러나 지금은 C++이 입력되면 입력을 받아서 C가 필요하므로 이것을 알아야합니다. 나는 이것이 C++이 왜 검색되지 않는지에 대한 이유라고 생각했습니다. 입력이 제대로 된 후에는이 솔루션으로 돌아갈 것입니다. – Archana