티스토리 뷰

Linked Data환경에서 유통되는 온톨로지는 Sparql Endpoint를 통해 접근할 수 있으며, Sparql 질의를 하여 사용자가 원하는 결과를 찾아 볼 수 있다. 그러나 특정 자원들간의 관계를 찾는 것은 어떠한 관계로 연결되어 있는지 알 수 없기 때문에 찾는 것에 어려움이 있다. 따라서 특정한 두 자원을 입력하여 두 자원간의 모든 관계를 실시간으로 최단거리부터 찾는 알고리즘을 생성하고 구현해 보았다.




TableB에 저장된 후보노드가 존재하면 S부터 T까지 존재하는 관계를 계속 찾아야 하는 의미를 가짐으로 후보노드를 source로 하고 T를 target으로 하는 쿼리를 수행하여 결과를 찾는 단계를 거치게 된다. 이 단계를 통해 T를 찾으면 결과셋에 추가하고 그렇지 못하였을 때는 이전 과정과 동일하게 후보노드부터 target까지의 연결정보를 저장한 후 후보노드2를 tempTableB에 저장한다. 이 루프처리가 끝나면 tempTableB의 내용을 TableB에 swap하도록 하여 T를 찾는 루프처리를 다시 할 수 있도록 제공한다. 이러한 과정을 통해 TableB에 아무런 노드도 없을 때까지 수행하여 사용자가 입력한 S와 T 간에 연결된 모든 연결을 찾도록 한다. 


알고리즘 구현상에서 쿼리의 문제로 속도저하가 발생하는 문제도 발생하기도 했고 

최단경로가 먼저 구해져야 하지만 그렇지 못하였던 문제도 발생하기도 하였다.


여러번의 시행착오 끝에 만족할 만한 수준으로 구현이 완료되었고

4개의 sparql endpoint와 triple repository에 대한 테스트도 끝마쳤다.


'N:::만지작 거리기' 카테고리의 다른 글

N_6. Jena Model에 담긴 데이터 찾기  (0) 2015.05.21
N_5. LOD 데이터 사용 for Developer  (0) 2015.05.21
N_4. Wikipedia Infobox 활용  (0) 2012.07.20
N_3. TopBraid Live 설치  (0) 2012.05.25
N_1. RDF merge  (0) 2012.05.08