티스토리 뷰
TDB는 RDF 저장과 질의를 위한 Jena의 컴포넌트이다.
Open Source이기에 성능 테스트를 위해 사용해 보았다.
※ 기초 지식
DataSource - 하나의 Default Graph과 n개의 Named Graph들로 구성되는 Graph 들의 집합
Dataset - DataSource와 유사하지만 데이터의 add, delete가 불가능하며 read만 가능
Graph - Triple들의 집합(Triple/Node), 모든 Model은 Graph로 변경이 가능
Model - Statement들의 집합 (Resource/Literal/Property/Class)
Jena API에서는 두 개의 레이어로 구성되어 있다.
(lower 레이어는 Graph 클래스, upper 레이어는 Model 클래스)
TDBLoader는 3가지 방식의 로딩 매커니즘을 제공한다.
1. DatasetGraphTDB
N-Quads 형식의 데이터를 로딩
2. GraphTDB
Triples 형식의 데이터를 로딩
3. Model
Models 형식의 데이터를 로딩 ( 1,2 번에 비해 효율적이지 않다고 스펙에 나옴)
1. DatasetGraphTDB Test
DatasetGraphTransaction dst = TDBMaker.createDatasetGraphTransaction(conn.directory);
DatasetGraphTDB dsg = dst.getBaseDatasetGraph();
dst.begin(ReadWrite.WRITE);
TDBLoader.load(dsg, file.getAbsolutePath(), true);
dst.close();
dsg.close();
N-Quads, TriG, N-Triple형식의 데이터를 로딩하여 Index를 잡는다.
Index 패턴은 SPO, POS, OSP 3개의 패턴으로 생성한다.
* N-Quads는 N-Triples의 확장으로
<Subject> <Predicate> <Object> <Context> .
와 같은 형식이다.
주어진 Statement의 출처를 나타내는 Context를 추가적으로 가진다.
2. GraphTDB Test
DatasetGraphTransaction dst = (DatasetGraphTransaction)TDBFactory.createDatasetGraph(conn.directory) ;
GraphTDB g = (GraphTDB) dst.getGraph(Node.createURI(graphName));
dst.begin(ReadWrite.WRITE);
TDBLoader.load(g, file.getAbsolutePath(), true);
dst.close();
g.close();
Turtle, N-Triple 형식 데이터 로딩 테스트는 완료, 다른 형식은 로딩해 보지 않음
Index 패턴은 GSPO, GPOS, GOSP, SPOG, POSG, OSPG 6개의 패턴으로 생성한다.
3. Model Test
일반적으로 Model에 데이터를 불러들여 로딩하는 방식으로
테스트는 해보지 않음
테스트 해본 결과
다양한 형식(NQuads, TriG, Turtle, N_Triple 등)의 데이터를 로딩하여 사용해 볼 수 있겠다.
속도면에서는 백만단위까지는 그럭저럭 로딩이 수월하나
천만단위가 넘어가는 대용량 데이터의 로딩은
Index를 생성하는 과정에서 상당한 시간이 걸린다.
약 6 GByte 정도의 데이터(8800만건의 트리플)의 Index를 생성하는데
NQuads 형식은 2일 이상이 소요되고
Triple형식은 4일 이상이 소요되는 것 같다.
'O:::Jena 다루기' 카테고리의 다른 글
O_6. Jena TDB에 Select하기 (0) | 2019.12.16 |
---|---|
O_5. Triple 단위를 Statement 단위로 변경하기 (0) | 2019.12.13 |
O_4. TDB 에 적재된 내용 확인 (0) | 2019.12.11 |
O_3. Jena LARQ Test (0) | 2013.01.23 |
O_1. SPARQL 실행 (0) | 2012.12.05 |
- Total
- Today
- Yesterday
- pyvis
- TDB
- stardog
- 장고
- 지식그래프
- 타임리프
- neosemantics
- sparql
- 사이퍼
- 그래프 데이터베이스
- Linked Data
- Ontology
- 스프링부트
- RDF
- rdfox
- Neo4j
- Knowledge Graph
- RDF 변환
- django
- TopBraid Composer
- TBC
- networkx
- Thymeleaf
- 온톨로지
- cypher
- 지식 그래프
- LOD
- 트리플
- 트리플 변환
- property graph
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |