N:::만지작 거리기

N_5. LOD 데이터 사용 for Developer

joyHong 2015. 5. 21. 17:13

아래에서 설명하는 방법은 

자바 개발자가 코딩하여 LOD 데이터를 사용하는 방법에 대해서 기술하였습니다.

아래의 3가지 방식은 간단하고 많이 사용할 수 있는 방식을 정리한 것이며

이외에도 다른 방식이 존재함을 알려드립니다.


LOD 데이터 획득 방법


Java - BufferedReader 활용
해당하는 URI에 대한 데이터 전체를 텍스트 형태로 가져와 사용하기에 용이
부분적으로 사용하고자 할 경우 데이터를 가져온 후 파싱이 필요함
별도의 라이브러리가 필요없음

Jena - FileManager 활용
RDF 형태의 데이터를 구성하는 model을 가져와 사용
subject, predicate, object 단위로 구분하여 활용할 수 있음
Client 측에서 필요에 따른 다른 처리를 할 수 있음
•Jena 라이브러리가 필요함 

SPARQL Endpoint 활용
사용자가 원하는 형태의 데이터를 SPARQL 질의하여 가져와 사용
SPARQL을 사용하여 유용한 질의가 가능

Server 측에서 질의 연산을 수행하고 Client는 결과만 받음





BufferedReader를 활용한 LOD 데이터 획득


String uri = "http://lod.nature.go.kr/resource/Betula_schmidtii_Regel";

URL url = new URL(uri);

URLConnection conn = url.openConnection();

BufferedReader br = new BufferedReader(

           new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line;

while ((line = br.readLine()) != null) {

   System.out.println(line);

} 





FileManager를 활용한 LOD 데이터 획득


String uri = "http://lod.nature.go.kr/resource/Betula_schmidtii_Regel";

Model model = FileManager.get().loadModel(uri);

StmtIterator iter =

  model.listStatements(ResourceFactory.createResource(uri), null, (RDFNode)null);

Statement stmt = null;

String sub = null, prop = null, obj = null;

while(iter.hasNext()){

   stmt = iter.next();

   sub = stmt.getSubject().toString();

   prop = stmt.getPredicate().toString();

   obj = stmt.getObject().toString();

}


획득한 데이터에서 조건에 따라 찾기에 대한 글




SPARQL Endpoint를 활용한 LOD 데이터 획득


String queryString = “select * where { ?no:commonName ‘박달나무’@ko .

                               ?s ?p ?o .}”;

String service = “http://lod.nature.go.kr/sparql”;  //생물정보LOD에서 

                                                          //제공하는 SPARQL Endpoint

Query query = QueryFactory.create(queryString) ;

QueryExecution qexec = QueryExecutionFactory.sparqlService(service, query);

ResultSet results = null;

try {

   results = qexec.execSelect();

} catch (Exception e) {

   e.printStackTrace();

}