📚 시리즈
① 개념 — 온톨로지와 지식 그래프 첫걸음 (현재 글)
② 이해 — OntoBricks란
③ 구성 — 설정부터 공개까지
④ 데모 — GraphQL·자연어·MCP 질의
온톨로지(Ontology)는 이름부터 철학 용어처럼 낯섭니다. 이 시리즈는 온톨로지가 무엇이고 어디에 쓰는지를, Databricks 위에서 동작하는 OntoBricks로 직접 만들어 보며 이해하는 것이 목표입니다. 가상 금융그룹 데이터로 온톨로지를 설계하고, 지식 그래프를 만들고, 자연어로 질의하는 데까지 따라갑니다.
이 글에서는 다음 세 가지를 다룹니다.
- 온톨로지는 어떤 질문에 필요한가
- 시맨틱 레이어, 온톨로지, 지식 그래프는 무엇이고 어떤 관계인가
- 온톨로지의 구성 요소와 실제 모습
ℹ️ 이 시리즈의 회사·인물·상품은 모두 가상입니다.
1. 온톨로지는 어떤 질문에 필요할까요
LLM이 사내 데이터로 답하게 하려면 먼저 근거를 찾아야 합니다. 근거를 찾는 방법은 데이터의 형태와 질문의 성격에 따라 달라집니다.
| 데이터와 질문 | 주로 쓰는 도구 | 예 |
|---|---|---|
| 📄 비정형 문서에서 의미가 비슷한 내용 찾기 | 벡터 검색 (Vector Search) | "이 펀드의 환매 수수료 규정은?" |
| 🧮 정형 테이블에서 조회·필터·집계 | Text-to-SQL (Genie 등) | "지난달 판매액 상위 5개 상품은?" |
| 🔗 테이블 사이의 관계를 여러 단계 따라가거나, 관계의 규칙이 중요한 질문 | 지식 그래프 (의미는 온톨로지로 정의) | "도토리홀딩스가 직·간접적으로 지배하는 회사가 판매하는 1등급 상품은?" |
벡터 검색은 "비슷한 것"을 찾는 데 알맞고, Text-to-SQL은 테이블을 조합해 계산하는 데 알맞습니다. 관계를 따라가야 하는 질문은 성격이 다릅니다. 답하려면 테이블에 적혀 있지 않은 다음 세 가지를 알아야 합니다.
| 알아야 할 것 | 쉽게 말하면 |
|---|---|
| 관계의 뜻 | control 테이블의 한 줄(홀딩스 → 증권)은 "홀딩스가 증권을 지배한다"는 뜻입니다 |
| 관계를 이어 가는 규칙 | 홀딩스가 증권을 지배하고 증권이 자산운용을 지배하면, 홀딩스는 자산운용도 지배합니다. "직·간접"은 이렇게 끝까지 이어 간다는 뜻입니다 |
| 반대 방향 | "증권은 누구의 지배를 받나?"는 같은 관계를 거꾸로 읽은 질문입니다. 답은 홀딩스입니다 |
이것이 테이블 밖에 있는 관계의 의미와 규칙입니다. 이 의미를 한 번 정의해 두고 프로그램이 그대로 쓰게 하는 것이 온톨로지입니다. 이 시리즈는 이런 관계 질문을 다룹니다. 정형 테이블에서 출발해, 그 위에 온톨로지로 관계의 의미를 입히고, 지식 그래프로 만들어 질의합니다.
1.1 시맨틱 레이어, 온톨로지, 지식 그래프는 어떤 관계일까요
비슷한 말이 섞여 쓰이므로 먼저 정리합니다. 범위가 넓은 것부터 보면 다음과 같습니다.
| 개념 | 한 줄 정의 | 도토리금융그룹 예 |
|---|---|---|
| 시맨틱 레이어 | 원천 데이터와 이를 쓰는 도구(SQL, 대시보드, AI) 사이에서 테이블·컬럼 같은 기술 구조를 업무 용어·지표·관계로 정의해 두는 층 전체. 정의가 한 곳에 있으므로 어떤 도구로 조회하든 같은 뜻으로 쓰입니다 | "계열사 = 도토리홀딩스가 직·간접 지배하는 회사", "위험등급 1 = 가장 낮은 위험" |
| 온톨로지 | 그중 개념(클래스)·관계·규칙을 표준 형식(OWL)으로 정의한 것. 무엇이 있을 수 있는지를 정하는 설계도입니다 | "회사(Company)라는 클래스가 있다", "controls는 회사 → 회사 관계이고 전이된다" |
| 지식 그래프 | 온톨로지에 실제 데이터를 채운 것. 지금 무엇을 알고 있는지를 담습니다 | "도토리홀딩스 controls 도토리증권" |
시맨틱 레이어 (업무 의미 전체)
└─ 온톨로지 (개념·관계·규칙의 설계도)
└─ 지식 그래프 (설계도에 실제 데이터를 채운 것)
이 글에서는 2장에서 지식 그래프를, 3장에서 온톨로지를 차례로 봅니다. 설계도와 건물에 비유하면, 온톨로지가 설계도이고 지식 그래프가 그 설계도대로 지은 건물입니다.
Databricks에서는 이 층을 기능별로 나눠 맡습니다. 이름이 비슷해 헷갈리기 쉬우니 함께 정리해 둡니다.
| 층 | Databricks 기능 | 하는 일 |
|---|---|---|
| 시맨틱 레이어 중 지표 정의 | UC Metric Views (GA) | 매출 같은 지표와 차원을 한 번 정의해 대시보드·Genie가 같이 씁니다 |
| 자연어 질의를 위한 맥락 | Genie Ontology (Public Preview) | 테이블·쿼리·대시보드에서 업무 맥락을 자동으로 모아, Genie가 어떤 정의를 믿을지 고릅니다 |
| 관계·규칙의 형식 정의(온톨로지)와 지식 그래프 | OntoBricks (Databricks Labs) | 클래스·관계·규칙을 OWL로 정의하고, 테이블을 그래프로 만들어 추론·검증·질의합니다 |
이름에 '온톨로지'가 들어가도 Genie Ontology는 형식 온톨로지(OWL)가 아니라 맥락을 모으는 계층입니다. 이 시리즈가 다루는 것은 OntoBricks로 만드는 온톨로지와 지식 그래프입니다.
⚠️ OntoBricks는 Databricks 공식 제품이 아닙니다. Databricks Labs 프로젝트(github.com/databrickslabs/ontobricks)로, 탐색과 실험을 위해 공개된 오픈소스입니다. Databricks의 공식 지원(SLA)과 지원 티켓 대상이 아니며, 문제가 생기면 GitHub 이슈로 대응합니다. 버전도 빠르게 바뀝니다. 이 시리즈는 v0.8.1 기준입니다. 운영 환경에 쓰려면 이 점을 고려해야 합니다.
2. 지식 그래프: 사실을 주어·관계·대상으로 나누기
1장의 질문에 필요한 사실은 지배구조, 상품 마스터, 임원 명부 같은 테이블에 들어 있습니다. 이 사실을 관계 중심으로 다시 적으면 지식 그래프가 됩니다. 테이블의 행을 어떻게 그래프로 바꾸는지는 ②편에서 원리를, ③편에서 실제 화면으로 봅니다.
지식 그래프(Knowledge Graph)는 사실을 주어 – 관계 – 대상 세 조각으로 쪼개 저장합니다. 이 세 조각을 트리플(Triple)이라고 부릅니다.
| # | 주어 (Subject) | 관계 (Predicate) | 대상 (Object) |
|---|---|---|---|
| 1 | 🏢 도토리홀딩스 | controls (지배한다) |
🏢 도토리증권 |
| 2 | 🏢 도토리증권 | controls (지배한다) |
🏢 도토리자산운용 |
| 3 | 🏢 도토리자산운용 | sells (판매한다) |
📦 도토리글로벌테크펀드 |
| 4 | 📦 도토리글로벌테크펀드 | riskGrade (위험등급) |
🔢 1 |
| 5 | 👤 전유성 | executiveOf (임원이다) |
🏢 도토리증권 |
🏢 회사 · 👤 사람 · 📦 금융상품 · 🔢 값(숫자·문자) 1·2·3·5번은 대상이 다른 엔티티(노드 ↔ 노드)이고, 4번만 대상이 값(노드 ↔ 숫자)입니다. 이 구분은 3.1에서 객체 속성(Object Property)과 데이터 속성(Datatype Property)으로 다시 나옵니다.
이 표에서 쓰는 용어를 정리하면 다음과 같습니다.
| 용어 | 뜻 | 표에서 |
|---|---|---|
| 트리플 | 주어 – 관계 – 대상 한 줄 = 사실 하나 |
1~5번 행 각각 |
| 엔티티 | 이름(URI)을 가진 "것". 그래프의 노드 | 주어 자리 전부, 대상 자리 중 값이 아닌 것 |
| 값 | 숫자·문자·날짜. 엔티티가 아닙니다 | 4번 행의 1 |
| 관계 | 주어와 대상을 잇는 이름. 그래프의 엣지 | controls, sells, riskGrade, executiveOf |
🏢·👤·📦 아이콘은 엔티티의 종류를 나타냅니다. 이 종류를 클래스라고 부르며 3.1에서 다룹니다.
트리플을 이어 붙이면 그래프가 됩니다. 앞의 질문은 이제 "도토리홀딩스에서 controls를 한 번 이상 따라간 뒤, sells를 따라가 riskGrade = 1인 노드를 찾아라"라는 경로 탐색이 됩니다(1 → 2 → 3 → 4번 행). 관계 이름을 따라가기만 하면 되므로, 그래프에 사실이 들어 있는 한 답을 놓치지 않습니다.
그런데 트리플에는 사실만 들어 있습니다. "도토리홀딩스가 도토리증권을 controls한다"는 적혀 있지만, controls가 무슨 뜻이고 어떤 성질을 갖는지는 어디에도 없습니다.
controls를 두 번 따라간 관계도 "지배"로 볼 것일까요?controls의 주어로 사람이 올 수 있을까요?sells를 하는 회사는 자동으로 "금융회사"일까요?
이런 질문에 답하는 사실에 대한 규칙을 따로 적어 두어야 합니다. 그것이 온톨로지입니다.
3. 온톨로지: 지식 그래프의 설계도
한 문장으로 정의하면 이렇습니다.
📐 온톨로지는 "이 세계에 어떤 종류의 것이 있고, 그것들이 어떤 관계를 맺으며, 그 관계가 어떤 성질을 갖는지"를 프로그램이 해석할 수 있는 형식으로 정의한 것입니다.
데이터베이스 스키마와 비슷하지만 결정적인 차이가 하나 있습니다. 스키마는 데이터를 담는 틀이고, 온톨로지는 거기에 더해 새로운 사실을 이끌어 내는 규칙까지 담습니다. 추론과 검증은 ③편에서 OntoBricks 화면으로 직접 확인합니다.
3.1 온톨로지의 다섯 가지 구성 요소
| 구성 요소 | 영문 (OWL 용어) | 뜻 | 예시 |
|---|---|---|---|
| 클래스 | Class | 엔티티의 종류 | Company, Person, Product |
| 개체 | Individual | 클래스에 속한 구체적인 하나 (= 엔티티). rdf:type으로 클래스에 연결 |
도토리증권 rdf:type Company |
| 객체 속성 | Object Property | 엔티티와 엔티티 사이의 관계. 주어 쪽 클래스(domain)와 대상 쪽 클래스(range)를 정할 수 있음 | executiveOf: Person → Company |
| 데이터 속성 | Datatype Property | 엔티티와 값(문자열·숫자·날짜) 사이의 관계 | riskGrade |
| 상하위 관계 | rdfs:subClassOf |
클래스 사이의 "~의 일종" 관계 | FinancialCompany ⊂ Company |
domain/range는 RDB의 제약 조건과 달리 검사가 아니라 추론 규칙입니다.
📘 RDF (Resource Description Framework): W3C가 정한 데이터 표현 표준입니다. 모든 데이터를 2장에서 본
주어 – 관계 – 대상트리플로 나타내고, 모든 이름에 URI를 붙입니다. 관계형 모델이 모든 데이터를 표(행·열)로 나타내듯, RDF는 모든 데이터를 트리플로 나타냅니다.rdf:type처럼rdf:로 시작하는 이름이 RDF 표준 어휘이고,rdfs:subClassOf의rdfs:는 RDF에 클래스·상속 같은 스키마 어휘를 더한 RDFS(RDF Schema)를 뜻합니다.
📘 OWL (Web Ontology Language): RDF 위에 얹는 W3C 온톨로지 표준 언어입니다. 클래스와 관계, 그리고 관계의 성질(전이, 역관계 등)을 프로그램이 해석할 수 있게 적는 문법과 의미 규칙을 정해 둡니다. SQL이 관계형 데이터베이스의 표준 언어인 것처럼, OWL은 온톨로지의 표준 언어입니다. 위 표의 영문 용어도 OWL에서 쓰는 이름입니다.
3.2 TBox와 ABox
1장에서 정리한 설계도와 실제 데이터를 온톨로지 문서에서는 이렇게 부릅니다.
- TBox (Terminological Box): 개념의 정의. "Company라는 클래스가 있고, controls는 Company와 Company 사이의 관계다." → 스키마, 1장의 온톨로지(설계도)
- ABox (Assertional Box): 개별 사실. "도토리홀딩스는 도토리증권을 controls한다." → 데이터, 1장의 지식 그래프에 채워진 사실
이 구분은 이 시리즈 전체에서 가장 중요한 기준입니다. ②편에서 보겠지만, OntoBricks에서 LLM은 TBox 설계를 돕고, ABox는 테이블에서 SQL로 만듭니다.
3.3 실제 모습: 파일과 그림
온톨로지는 보통 Turtle(.ttl)이라는 텍스트 파일로 저장합니다. 트리플을 주어 관계 대상 .처럼 한 줄에 하나씩 적습니다. 예제 파일의 일부를 보면 다음과 같습니다(a는 rdf:type의 줄임입니다). 2장 끝의 질문(지배의 지배도 지배인가, 반대 방향은 무엇인가)에 대한 답도 이렇게 한 줄씩 적습니다.
# Company는 클래스다
fin:Company a owl:Class .
# controls는 전이 관계다 (지배의 지배도 지배)
fin:controls a owl:TransitiveProperty .
# controls의 주어는 회사다
fin:controls rdfs:domain fin:Company .
# isControlledBy는 controls의 반대 방향이다
fin:isControlledBy owl:inverseOf fin:controls .
# 도토리홀딩스는 도토리증권을 지배한다
fin:DotoriHoldings fin:controls fin:DotoriSecurities .
예제 온톨로지 전체를 도식화하면 다음과 같습니다.

| 요소 | 뜻 |
|---|---|
| 파란 상자 영역 (TBox) | 클래스와, 클래스 사이에 정의한 관계(domain → range) |
| 굵은 빈 화살표 | subClassOf (금융회사는 회사의 일종) |
| 노란 영역 (ABox) | 실제 엔티티와 값, 그 사이의 사실 |
| 엔티티 안의 회색 글씨 | rdf:type (이 엔티티는 저 클래스에 속합니다. 예: rdf:type 회사) |
도토리증권, 도토리자산운용, 도토리글로벌테크펀드에는 rdf:type 글씨가 없습니다. 파일에 적지 않았기 때문입니다. 이런 빈칸은 추론기가 domain/range 같은 규칙으로 채웁니다.
4. 정리
| 질문 | 답 |
|---|---|
| 온톨로지는 언제 필요한가요? | 테이블 사이의 관계를 여러 단계 따라가거나, 관계의 규칙(전이·역관계)이 중요한 질문에 필요합니다. 문서 검색은 벡터 검색, 단순 조회·집계는 Text-to-SQL이 맞습니다 |
| 시맨틱 레이어·온톨로지·지식 그래프의 관계는? | 시맨틱 레이어(업무 의미 전체) 안에 온톨로지(개념·관계·규칙의 설계도)가 있고, 온톨로지에 실제 데이터를 채운 것이 지식 그래프입니다 |
| 지식 그래프란? | 사실을 주어 – 관계 – 대상 트리플로 저장한 그래프입니다 |
| 온톨로지란? | 지식 그래프의 설계도(TBox)입니다. 클래스, 개체, 객체·데이터 속성, 상하위 관계로 구성되고, 관계의 domain/range와 전이·역관계 같은 성질을 정합니다 |
| 스키마와 무엇이 다른가요? | 데이터를 담는 틀에 더해, 규칙으로 새 사실을 추론합니다 (예: 지배의 지배는 지배 → 간접 지배) |
| 실제로는 어떤 모습인가요? | RDF·OWL 표준으로 정의하고 Turtle(.ttl) 파일로 저장합니다 |
다음 글 ② 이해에서는 이 과정을 Databricks 위에서 해 주는 OntoBricks를 살펴봅니다. 온톨로지를 설계하고(Design), UC 테이블에 매핑하고(Map), 추론·검증하고(Reason), AI 에이전트에 제공하는(Serve) 네 단계가 어떻게 동작하는지, 그리고 그 가운데 LLM이 맡는 부분은 어디까지인지 확인합니다.
참고
- OntoBricks: https://ontobricks.org/ · https://github.com/databrickslabs/ontobricks
- W3C OWL 2 Primer: https://www.w3.org/TR/owl2-primer/
- W3C RDF 1.1 Turtle: https://www.w3.org/TR/turtle/
'Databricks > Semantic Layer' 카테고리의 다른 글
| Metric View로 만드는 시맨틱 레이어 — 지표를 한 번 정의하고 어디서나 같은 숫자로 (0) | 2026.10.18 |
|---|---|
| OntoBricks로 이해하는 온톨로지 ③ 구성 — 설정부터 공개까지 (0) | 2026.10.15 |
| OntoBricks로 이해하는 온톨로지 ② 이해 — OntoBricks란 (0) | 2026.10.15 |
| OntoBricks로 이해하는 온톨로지 ④ 데모 — GraphQL·자연어·MCP 질의 (0) | 2026.10.15 |
댓글