3분
OWL→LPG 매핑 7조
Neo4j 시작하기
OWL→LPG 매핑 7조
Neo4j 시작하기 > Neo4j 시작하기
학습 목표
- 개념 설계를 프로퍼티 그래프로 옮기는 규칙을 적용한다
- 다중 라벨이 주는 이득과 그 대가를 안다
OWL→LPG 매핑 규칙 — 설계도를 공사 언어로
앞 모듈들의 온톨로지는 OWL식 개념 설계(클래스·오브젝트 프로퍼티·데이터 프로퍼티)입니다. Neo4j는 LPG(Labeled Property Graph — 라벨 붙은 노드, 타입 있는 관계, 속성)입니다. 변환 규칙 7조를 확정합니다.
| # | 온톨로지 (OWL식) | Neo4j (LPG) | 예시 |
|---|---|---|---|
| 1 | 클래스 | 노드 라벨 | (:Vessel) |
| 2 | 클래스 계층(subClassOf) | 다중 라벨 (인스턴스에 상위 라벨 병기) | (:Container:ReeferContainer) |
| 3 | 인스턴스 | 노드 | (:Vessel {imoNumber: "9074729"}) |
| 4 | 오브젝트 프로퍼티 | 관계 타입 | -[:MAKES_CALL]-> |
| 5 | 데이터 프로퍼티 | 노드/관계 속성 | {atb: datetime(...)} |
| 6 | 유효기간 있는 사실(패턴 B) | 관계 속성 {from, to} | -[:OPERATES {from, to}]-> |
| 7 | 열거형·코드값 | 속성 값 + L2 검증 | imdgClass: "3" |
규칙 2가 실전에서 가장 유용합니다
MATCH (c:Container)는 냉동·위험물 컨테이너를 자동 포함합니다 — 상위 클래스 질의가 공짜입니다.
대신 대가가 있습니다. 라벨 계층 자체는 DB에 없습니다. ReeferContainer가 Container의 하위라는 사실은 Neo4j가 모릅니다. 그래서 스펙 문서가 계층의 유일한 진실 원천입니다. 앞 모듈에서 말한 "코드가 아니라 문서가 온톨로지다"의 LPG판 의미가 이것입니다.
공간·시간 타입
Berth·Port의 position은 point({latitude, longitude})로, 모든 시각은 datetime()(타임존 포함)으로 저장합니다 — 시공간 KG의 재료를 DB 타입 수준에서 확보합니다.
항만은 국제 도메인이므로 저장은 UTC, 표시만 KST로 하는 원칙을 권합니다.
RDF 가 필요해지면
대외 표준 연동(링크드데이터 발행 등)으로 RDF 형태가 필요해지는 시점이 오면 neosemantics(n10s) 플러그인으로 LPG↔RDF 변환 경로를 열 수 있습니다. v1은 LPG 단독으로 갑니다 — 이것도 필요 전 선행 설계 방지입니다.