기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[RDF4J] 설치 및 사용법
Java/RDF&Jena

[RDF4J] 설치 및 사용법

2021. 5. 4. 15:10
반응형
1. RDF4J 설치 방법

 

https://rdf4j.org/download/#rdf4j-35 링크 접속

 

 

1) RDF4J 3.6.3 SDK를 다운로드

2) 압축 파일 해제

3) .war 파일 Eclipse로 Import

 

 

 

 

2. Tomcat Server 8.0 설치

현재 테스트한 톰캣 버전은 8.0.36 버전이다.

 

 

# 톰캣 서버에  꼭 rdf4j-server와 rdf4j-workbench 2개의 .war 파일이 동작해야 정상적으로 동작한다.

 

 

3. RDF4J 서버와 워크벤치 가동

http://localhost:8080/rdf4j-workbench/ 링크를 통해 워크벤치 웹페이지에 접속해본다.

 

 

위 워크벤치에서 Repository를 자유롭게 생성할 수 있고, Repository에 RDF와 같은 Triple을 업로드하여 조회, 관리 기능을 사용할 수 있게 된다.

 

 

 

 

4. RDF4J 서버에 RDF 파일 추가

Workbench에서 Modify – Add 를 선택하면 RDF파일을 업로드 할 수 있는 화면이 나오는데, 여기서 파일을 선택하면 자동적으로 Base URI, Context가 설정된다.

 

 

 

5. FilePath 설정

기본적으로 응용 프로그램이 Windows에서 'LocalService'사용자 계정으로 실행되는 경우의 디렉터리는 “C:\Documents and Settings\LocalService\Application Data\RDF4J\”로 설정된다.

 

http://localhost:8080/rdf4j-server/system/overview.view 에 접속해서 Repository의 경로를 확인할 수 있다.

 

 

# Tomcat 실행시 Arguments의 설정에 -Dorg.eclipse.rdf4j.appdata.basedir=“경로”를 입력해주면 해당 경로로 Repository가 설정된다.

 

 

 

6. 라이브러리 설정

Java측에서 RDF4J Server로 Select하거나 Create 등 제어, 조회를 할 때 위와 같은 라이브러리가 요구된다.

기본적으로 rdf4j-xxxx-.3.0.jar과 같은 3.0 버전을 이용할 때에 정상적으로 작동했다.

또한 server와 connect할 때에 uri와 repository를 통해서 접근하기 때문에 추가적으로 httpclient-4.5.2, httpcore-4.4.14, commons-logging-1.2의 라이브러리가 필요했다.

 

RDF4J는 Maven Project 기반을 권장하고 있어서, pom.xml에 Dependency를 사용해도 된다.

하지만 위와 같은 요구되는 라이브러리를 빠짐없이 사용해야만 정상적으로 RDF4J API를 사용할 수 있다.

 

 

 

7. AddFile
import java.io.File;
import java.io.IOException;

import org.eclipse.rdf4j.RDF4JException;
import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.http.HTTPRepository;
import org.eclipse.rdf4j.rio.RDFFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public static void main(String[] args) { 
Logger logger = LoggerFactory.getLogger(AddFile.class);
logger.info("Hello World");

long startTime = System.currentTimeMillis();

String rdf4jServer = "http://localhost:8080/rdf4j-server/";
String repositoryID = "test1";
Repository repo = new HTTPRepository(rdf4jServer, repositoryID);

RepositoryConnection con = null;

File file = new File("D://DumpEarth20130604.rdf");
String baseURI = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";

try {
con = repo.getConnection();
con.add(file, baseURI, RDFFormat.RDFXML);
} catch (RDF4JException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
con.close();
repo.shutDown();
}

long endTime = System.currentTimeMillis();
System.out.println("### Run Time : " + (endTime - startTime) / 1000.0 + "sec");
System.out.println("### Finish");
}

 

AddFile의 코드에서 Import되는 패키지는 위와 같다.

 

정상적으로 실행이 될 경우 위와 같은 출력물이 나온다.

 

 

 

8. AddFile(2)

 

임의로 지정했던 temp_repository 저장소에 test2라는 repository를 생성하고,

 

Workbench를 확인해보면 RDFFile이 정상적으로 들어간 것을 확인할 수 있다.

 

 

 

9. SelectQuery
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.query.BindingSet;
import org.eclipse.rdf4j.query.QueryLanguage;
import org.eclipse.rdf4j.query.TupleQuery;
import org.eclipse.rdf4j.query.TupleQueryResult;
import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.http.HTTPRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(SelectQuery.class);
logger.info("Hello World");

String rdf4jServer = "http://localhost:8080/rdf4j-server/";
String repositoryID = "test1";
HTTPRepository repo = new HTTPRepository(rdf4jServer, repositoryID);

try (RepositoryConnection con = repo.getConnection()) {
String queryString = "SELECT ?s ?p ?o WHERE { ?s ?p ?o }";
TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);

try (TupleQueryResult result = tupleQuery.evaluate()) {

while (result.hasNext()) {
BindingSet bindingSet = result.next();

// System.out.println(bindingSet);

Value s = bindingSet.getValue("s");
Value p = bindingSet.getValue("p");
Value o = bindingSet.getValue("o");
//
System.out.println("=====");
System.out.println(s);
System.out.println(p);
System.out.println(o);
System.out.println("=====");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
repo.shutDown();
}
}

 

Select Query도 Jena와 동일하게 SPARQL문법을 사용하여 해당 RDF Server에 등록된 RDF 파일을 조회할 수가 있다.

 

 

 

 

반응형
저작자표시 변경금지 (새창열림)

'Java > RDF&Jena' 카테고리의 다른 글

[Ontology] 온톨로지란? 시맨틱 웹의 기초  (0) 2020.03.30
Jena TDB CRUD 사용  (0) 2020.03.27
[Jena] Apache Jena TDB란?  (0) 2020.03.27
[RDF] Parse error: Bad character in IRI(space) 해결 방법  (0) 2020.03.27
[Jena] Apache Jena Fuseki 리눅스 설치 방법  (0) 2020.03.27
    'Java/RDF&Jena' 카테고리의 다른 글
    • [Ontology] 온톨로지란? 시맨틱 웹의 기초
    • Jena TDB CRUD 사용
    • [Jena] Apache Jena TDB란?
    • [RDF] Parse error: Bad character in IRI(space) 해결 방법
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바