용어 정리
지식 그래프와 온톨로지에서 같은 것을 다르게 부르는 용어들을 한 곳에 정리합니다.
지식 그래프와 온톨로지는 같은 대상을 다른 이름으로 부르는 경우가 많습니다.
이유는 간단합니다 — 두 분야가 서로 다른 커뮤니티에서 발전했기 때문입니다.
지식 그래프 / Property Graph
Neo4j 등 그래프 DB 업계에서 쓰는 용어.
실무·엔지니어링 중심.
온톨로지 / RDF
W3C 시맨틱 웹 학계에서 쓰는 용어.
학술·표준 중심.
같은 "카카오라는 회사"를 표현하더라도,
Property Graph에서는 노드(Node)라 부르고,
온톨로지에서는 인스턴스(Instance) 또는 개체(Individual)라 부릅니다.
가리키는 것은 같고, 이름만 다릅니다.
가장 핵심적인 용어들을 현실 세계 → Property Graph → 온톨로지 순서로 대응시킨 표입니다.
| 현실 세계 | Property Graph (Neo4j / PART 1) |
온톨로지 / RDF (OWL / PART 2) |
공통 용어 |
|---|---|---|---|
| "카카오"라는 회사 | 노드 (Node) | 인스턴스 (Instance) = Individual, ABox 요소 |
개체 (Entity) |
| "회사"라는 분류 | 라벨 (Label) | 클래스 (Class) = TBox 요소 |
타입 (Type) |
| "근무하다"라는 연결 | 관계 (Relationship) = 엣지 (Edge) |
Object Property = Predicate (술어) |
관계 (Relation) |
| "설립연도: 2014" | 속성 (Property) = 노드의 key-value |
Data Property = 리터럴 값 연결 |
속성 (Attribute) |
| "카카오-근무-홍길동" | 경로 / 패턴 Cypher 패턴 매칭 |
트리플 (Triple) 주어-술어-목적어 |
사실 (Fact) |
| 전체 지식 구조 | 그래프 (Graph) | 온톨로지 (Ontology) = TBox + ABox |
지식 그래프 (KG) |
| 구조/스키마 정의 | 제약조건 (Constraint) 인덱스, 유일성 |
TBox / 스키마 클래스 계층, 제약조건 |
스키마 (Schema) |
| 질의(검색) | Cypher GQL (ISO 표준) |
SPARQL W3C 표준 |
질의 언어 |
"홍길동이 카카오에서 근무한다"는 사실을 두 세계에서 각각 어떻게 표현하는지 봅시다.
Property Graph (Neo4j / Cypher)
(:사람 {name: "홍길동"}) -[:근무]-> (:회사 {name: "카카오"})
사람, 회사 = 라벨 (Label)
홍길동, 카카오 = 노드 (Node)
근무 = 관계 (Relationship)
name: "홍길동" = 속성 (Property)
온톨로지 (RDF / Turtle 문법)
:홍길동 rdf:type :사람 .
:카카오 rdf:type :회사 .
:홍길동 :근무 :카카오 .
사람, 회사 = 클래스 (Class / TBox)
홍길동, 카카오 = 인스턴스 (Instance / ABox)
근무 = Object Property
:홍길동 :근무 :카카오 = 트리플 (Triple)
같은 사실, 다른 문법.
두 방식 모두 "홍길동은 카카오에서 일한다"는 동일한 지식을 표현합니다.
구현 방식과 용어가 다를 뿐, 핵심 아이디어는 같습니다.
Entity vs Node vs Instance
Entity(개체)는 현실 세계의 대상을 가리키는 일반 용어입니다.
이걸 Property Graph에 넣으면 Node(노드),
온톨로지에 넣으면 Instance(인스턴스)라고 부릅니다.
셋 다 같은 것을 가리킵니다. 맥락에 따라 이름만 달라지는 겁니다.
Label vs Class
둘 다 "이 개체의 종류가 무엇인가?"에 대한 답입니다.
Neo4j에서 :사람이라는 Label을 붙이는 것과,
온톨로지에서 사람이라는 Class를 정의하는 것은 같은 역할입니다.
차이점: 온톨로지의 Class는 계층 구조(사람 → 직장인 → 개발자)와
제약조건(직장인은 반드시 소속 회사가 있어야 한다)을 표현할 수 있습니다.
Relationship vs Object Property
둘 다 "두 개체를 연결하는 의미 있는 선"입니다.
Neo4j의 -[:근무]-> 관계(Relationship)와
온톨로지의 :근무 Object Property는 같은 역할입니다.
차이점: 온톨로지에서는 역관계(근무 ↔ 고용), 추이성(A의 상사 → B의 상사 → C의 상사)
같은 논리적 성질을 Property에 선언할 수 있습니다.
Property vs Data Property
둘 다 "개체에 붙는 구체적인 값"입니다.
Neo4j 노드의 {name: "홍길동", age: 30} 속성(Property)과
온톨로지의 :홍길동 :나이 30 Data Property는 같은 역할입니다.
차이점: 온톨로지의 Data Property는 값의 데이터 타입(정수, 문자열, 날짜)을
스키마 수준에서 엄격하게 제한할 수 있습니다.
TBox vs ABox
이건 온톨로지에만 있는 구분입니다. Property Graph에는 이 개념이 없습니다.
TBox (Terminological Box) — "세상의 구조"를 정의
"사람이라는 클래스가 있고, 회사와 근무 관계를 맺을 수 있다"
ABox (Assertional Box) — "구체적인 사실"을 기록
"홍길동은 사람이고, 카카오에서 근무한다"
비유하면 TBox = 설계도, ABox = 실제 데이터입니다.
| 현실 세계에서의 의미 | Property Graph (PART 1) | 온톨로지 (PART 2) |
|---|---|---|
| 구체적인 대상 | Node (노드) | Instance (인스턴스) |
| 대상의 분류 | Label (라벨) | Class (클래스) |
| 대상 간 연결 | Relationship (관계) | Object Property |
| 대상의 특징/값 | Property (속성) | Data Property |
| 하나의 사실 | 패턴 (Pattern) | Triple (트리플) |
| 전체 지식 | Graph (그래프) | Ontology (온톨로지) |
이 표를 기억해두세요.
앞으로 PART 1(Neo4j)과 PART 2(온톨로지)를 배울 때,
"이건 저쪽에서 뭐라고 부르더라?" 싶을 때 이 페이지로 돌아오면 됩니다.