국가서지LOD 홈페이지는 크롬 브라우저와 IE10 이상의 버전에 최적화 되어 있습니다. 오늘하루 열지 않음

Java Developers

  • 국가서지LOD를 활용하고자 하는 자바 개발자를 위해 데이터 획득, 질의, 가공을 할 수 있는 기본적인 정보를 제공하는 페이지입니다.
  • 보다 자세한 내용은 문서내의 참조페이지에서 확인하실 수 있습니다.

관련 문서 다운로드

  • Java Developers for NLK 문서 다운로드 받기

  • 예제 소스 파일 다운로드 받기

  • 필수적인 라이브러리 다운로드 받기

 
1. URI를 통한 데이터 획득
String uri = "http://lod.nl.go.kr/resource/KAC201514275";

try {
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);
}

} 
								
 
2. 획득한 데이터를 Jena Model에 담기
String uri = "http://lod.nl.go.kr/resource/KAC201110203";

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

model.write(System.out, "TTL");

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();
   System.out.println(sub +" \t"+ prop +" \t"+ obj);
}
								
 
3. Jena Model에 SPARQL 질의
String uri = "http://lod.nl.go.kr/resource/KAC201110203";

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

model.write(System.out, "TTL");

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();
   System.out.println(sub +" \t"+ prop +" \t"+ obj);
}
								
 
4. 로컬 컴퓨터에 보유 중인 파일에 대한 처리
String filename = "./doc/KAC201514275.ttl";

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

StmtIterator iter = model.listStatements();
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();
   System.out.println(sub +" \t"+ prop +" \t"+ obj);
}
								
 
5. 실제 SPARQL Endpoint에서 데이터 획득하기
String queryString = "PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?s a owl:ObjectProperty . } " ; 

String service = "http://lod.nl.go.kr/sparql";

Query query = QueryFactory.create(queryString) ;
QueryExecution qexec = QueryExecutionFactory.sparqlService(service, query);
ResultSet rs = qexec.execSelect();
								
 
6. SPARQL Endpoint에 질의하여 JSON 형태로 받기
String queryString = "PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { <http://lod.nl.go.kr/resource/KAC201110203> ?p ?o. } " ; 

String service = "http://lod.nl.go.kr/sparql";
Query query = QueryFactory.create(queryString) ;
QueryExecution qexec = QueryExecutionFactory.sparqlService(service, query);
ResultSet rs = null;
try {
   rs = qexec.execSelect();
} catch (Exception e) {
   e.printStackTrace();
}

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ResultSetFormatter.outputAsJSON(outputStream, rs);
String json = new String(outputStream.toByteArray());
System.out.println(json);
								
 
7. SPARQL Endpoint에 DESCRIBE 질의하기
String queryString = "DESCRIBE <http://lod.nl.go.kr/resource/KAC201110203> " ; 

String service = "http://lod.nl.go.kr/sparql";
Query query = QueryFactory.create(queryString) ;
QueryExecution qexec = QueryExecutionFactory.sparqlService(service, query);
Model model = null;
try {
   model = qexec.execDescribe();
} catch (Exception e) {
   e.printStackTrace();
}
model.write(System.out, "TTL");
								
  • 저는 LODi입니다.
  • LODi에게 물어보세요.
  • 좋은 하루 되세요.
대화창버튼 대화창버튼 대화창버튼 대화창버튼