스파클 사용하기 SPARQL Tutorial - Filters
- Study/OWL,RDF
- 2014. 2. 18. 19:09
공식 홈페이지 메뉴얼 URL = http://jena.apache.org/tutorials/sparql_filters.html
SPARQL Tutorial - Filters
이번 장에서는 결과값들을 어떻게 제한하는지에 대해 알아봅니다. 여러 가지 다양한 방법으로 비교할 수 있지만 두 가지만 설명합니다.
String Matching
스파클은 정해진 표현에 기반을 둔 문자열을 테스트할 수 있는 연산자를 제공합니다. SQL에서 "LIKE"와 같은 형식으로 사용됩니다. 사용법은 다음과 같습니다.
FILTER regex(?x, "pattern" [, "flags"])
위와 같은 문법을 사용하면 ?x라는 리소스에 "pattern"이라는 문자열이 있는 것만 찾아냅니다. "flags"는 옵션으로 사용되는데 "i"값이 사용되면 대문자 소문자에 상관없이 찾아냅니다. 다음 예를 통해 더 자세히 알아봅시다.
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?g WHERE { ?y vcard:Given ?g . FILTER regex(?g, "r", "i") }
위와 같은 쿼리문이 있습니다. Given에 object 값인 ?g를 출력하는 쿼리문입니다. 하지만 ?g중에서 "r"이라는 스트링값이 들어가 있는 값만 출력합니다. "i"값이 있기 때문에 "r"이든 "R"이든 구별하지 않고 모두 찾습니다. 출력결과는 다음과 같습니다.
------------- | g | ============= | "Rebecca" | | "Sarah" | -------------
레베카에 "R"과 사라의 "r"때문에 두개의 값이 검색되었습니다.
Testing Values
쿼리문을 만들 때 특정한 값에 대한 제한을 주고 싶은 경우가 있습니다. 예제 RDF파일을 바꿔서 vc-db-2.rdf파일을 보도록 합시다. 이 RDF파일에는 사람의 나이가 입력되어 있습니다. info:age라는 속성으로 입력되어있습니다.
<http://somewhere/RebeccaSmith/> info:age "23"^^xsd:integer ; vCard:FN "Becky Smith" ; vCard:N [ vCard:Family "Smith" ; vCard:Given "Rebecca" ] .
나이가 24살이상인 사람을 검색하고 싶다면 다음과 같이 쿼리문을 작성하면 됩니다.
PREFIX info: <http://somewhere/peopleInfo#> SELECT ?resource WHERE { ?resource info:age ?age . FILTER (?age >= 24) }
위에 FILTER사용과 다른 것으로 보아 regex()라는 것은 함수인가 봅니다. 이번에는 괄호 앞에 아무것도 없이 (?age >= 24)라는 조건식만 쓰여 있습니다. 결과값은 다음과 같습니다.
--------------------------------- | resource | ================================= | <http://somewhere/JohnSmith/> | ---------------------------------
다음은 Optionals 챕터로 포스팅하겠습니다.
'Study > OWL,RDF' 카테고리의 다른 글
스파클 사용하기 SPARQL Tutorial - Alternatives in a Pattern (0) | 2014.02.19 |
---|---|
스파클 사용하기 SPARQL Tutorial - Optional Information (0) | 2014.02.18 |
스파클 사용하기 SPARQL Tutorial - Basic Patterns (0) | 2014.02.18 |
스파클 사용하기 SPARQL Tutorial - A First SPARQL Query (0) | 2014.02.18 |
스파클 사용하기 sparQL tutorial - Data Formats (0) | 2014.02.18 |