스파클 사용하기 SPARQL Tutorial - A First SPARQL Query

     



공식 메뉴얼 주소 = http://jena.apache.org/tutorials/sparql_query1.html


SPARQL Tutorial - A First SPARQL Query


간단한 예제 쿼리를 실행해보고 jena에서 어떻게 실행되는지 살펴본다.


A "hello world" of queries


SELECT ?x
WHERE { ?x  <http://www.w3.org/2001/vcard-rdf/3.0#FN>  "John Smith" }


예제 쿼리는 위와 같습니다. SQL쿼리와 비교했을때 뭔가 비슷하지만 조금 다릅니다. 검색하려는 것은 변수 ?x입니다. ?는 변수라는 뜻으로 사용됩니다. x를 찾는데 x는 <http://www.w3.org/2001/vcard-rdf/3.0#FN>과 "John Smith"과 연관이 있어야 하나봅니다. 아직 어떤 뜻인지는 구체적으로 알지 못하겠습니다. 위 쿼리를 실행하면 다음과 같은 결과가 나옵니다.


| x                             |
=================================
| <http://somewhere/JohnSmith/> |
---------------------------------


x라는 값은 <http://somewhere/JohnSmith/>라는 군요. 아마 x는 리소스를 검색하는 것 같습니다. 리소스이지만 조건으로 <http://www.w3.org/2001/vcard-rdf/3.0#FN>이라는 속성의 값이 "John Smith"인 리소스를 검색한 것 같습니다. 아직까지는 추측이죠. 스파클 문법을 모르니..


아래 설명을 보니 스파클에서 검색하고자 하는 변수는 트리플에서 subject로 고정되어 있다고 합니다. 즉 SELECT할 수 있는 것은 화살표가 나오는 리소스, 화살표가 시작하는 지점입니다. 그리고 조건절에는 predicate와 object, 화살표의 속성과 화살표가 가리키는 대상을 적을 수 있습니다. 그리고 SELECT에는 단순히 subject만 적을 수 있는 것이 아니라 여러가지 조건을 적을 수 있지만 여기서는 단순히 ?x라고 subject만 적었습니다


대충 쿼리에 대해 알고 다시 위에 쿼리를 보니 제 추측이 맞는것 같습니다. <http://www.w3.org/2001/vcard-rdf/3.0#FN>라는 predicate의 value가 "John Smith"인 리소스를 찾는 쿼리문이네요. 


이제 이 쿼리문을 실행해 보도록 하겠습니다. 일단 두개의 파일이 필요합니다. 사용할 RDF파일과 쿼리문이 있는 쿼리 파일입니다.


q1.rq


vc-db-1.rdf



윈도우에서 명령 프롬프트창을 통해 실행시키게 됩니다. 실행 시키기전에 환경 설정이 필요합니다. 일단 환경변수등록을 통해 jena폴더가 설치된 경로로 가서 bat 폴더와 bin 폴더를 추가합니다. 그리고 다음과 같은 명령어를 입력합니다.


  • SET JENAROOT=JENA가 설치된 폴더 경로
  • SET PATH=%PATH%;%JENAROOT%\bat

set ARQROOT=c:\jena설치경로\bat\ARQ


위 3개의 코드를 입력하셨다면  jena설치 경로로 이동한다음 다음 명령어를 치시면 쿼리문이 실행됩니다.


bat\sparql.bat --data=doc\Tutorial\vc-db-1.rdf --query=doc\Tutorial\q1.rq






jena 폴더의 tutorial\RDQL\에 가시면 vc-db-1.rdf파일은 있지만 q1.rq파일은 없음니다. 위에 다운받으신 파일을 해당 경로에 집어넣고 실행해주세요. 저는 실행해볼때 위에 파일을 못구해서 vc-q1파일을 수정해서 만들어서 위와같이 명령어를 수정했습니다. 


정확히 따라하셨다면 위와같은 결과가 나오게 됩니다. 뭔가 문제가 생기셨다면 왜 문제가 생겼는지 명령 프롬프트에 나오기 때문에 보시고 수정하시면 될 것 같습니다. 







자 이렇게 간단한 스파클 쿼리를 명령프롬프트창을 통해 실행해봤습니다. 스파클 쿼리의 구조도 아주 간단하게 살펴 보았구요. 다음은 Basic Patterns 챕터로 포스팅 하도록 하겠습니다~!

반응형

댓글

Designed by JB FACTORY