ds4th studyREPORT → PRESENTATION

Knowledge Graphs & LLMs in Action · Chapter 03

온톨로지로 첫
지식 그래프 만들기

임상 질문에서 HPO 그래프·질의·추론까지

발표자
태영
학습 범위
Chapter 3 · pp. 37–64
일시
2026-08-01
ds4th study

데이터를 연결했다고, 의미까지 연결된 걸까?

희귀질환 후보를 찾으려면 형식 통합보다 먼저 질문·표준 의미·연결 근거를 고정해야 합니다.

RAW INTEGRATION

형식만 맞춘 데이터

  • 같은 개념이 여러 이름으로 흩어짐
  • 같은 약어가 서로 다른 뜻을 가짐
  • 연결의 출처와 증거를 잃기 쉬움

ONTOLOGY-GROUNDED KG

질문에 답하는 지식

  • 표준 ID와 계층으로 의미 정렬
  • 질병–표현형 관계에 근거 보존
  • 직접 연결과 추론 경로를 구분

오늘의 질문 — 어떤 설계 순서가 그래프를 “저장소”에서 “검토 가능한 임상 지원 도구”로 바꾸는가?

ds4th study

질문에서 근거 있는 후보까지, 다섯 결정을 따라간다

도구 기능이 아니라 각 단계가 남겨야 할 검증 산출물을 중심으로 봅니다.

01

문제·의미

임상 질문과 HPO 참조 개념

02

모델·적재

RDF/LPG 선택과 두 원천 결합

03

질의·추론

후보 경로와 계층적 포함

마지막 결정 — 버전·주석·추론·임상 판단의 경계를 어디에서 검증할 것인가.

REPORT §1 · PROBLEM & DOMAIN

그래프보다 먼저 임상 질문을 고정한다

형식이 아니라 의미 이질성을 해결할 공통 좌표를 만든다

01
ds4th study

온톨로지는 서로 다른 표현을 같은 의미 좌표에 놓는다

동의어, 중의적 약어, 서로 다른 세분성이 HPO 표준 식별자와 계층을 거쳐 통합 질의 공간으로 정렬되는 구조
형식 통합 다음의 문제동의어는 같은 개념으로 모은다중의어는 문맥별 개념으로 나눈다세분성은 계층 관계로 보존한다
ds4th study

목표는 자동 진단이 아니라 검토 가능한 후보 탐색이다

같은 “당뇨병”도 질병과 표현형이라는 서로 다른 역할을 가질 수 있습니다.

PHENOTYPE

관찰 특징

HPO ID와 계층으로 표현한다.

DISEASE

질병 실체

OMIM 등 독립 식별자로 표현한다.

ANNOTATION

근거 있는 연결

출처·증거·빈도·작성일을 관계에 둔다.

RESULT

검토 후보

질병명만 아니라 경로와 근거를 반환한다.

모델의 출발점 — 임상의가 결과 화면에서 확인해야 할 연결과 근거가 노드·관계·속성을 결정합니다.

ds4th study

HPO는 ‘정의·계층’과 ‘연관·근거’를 따로 준다

hp.owl의 표현형 정의와 계층, phenotype.hpoa의 질병 표현형 연관과 근거가 표준 ID로 하나의 LPG에 결합되는 구조
두 원천, 두 책임hp.owl: ID·정의·동의어·계층phenotype.hpoa: 질병 연관·출처·증거표준 hpo_id가 결합 키
ds4th study

어느 파일에서 무엇이 정본인지 먼저 고정한다

두 원천은 형식뿐 아니라 변경 영향과 검증 단위가 다릅니다.

관점hp.owlphenotype.hpoa결합 시 확인
정본표현형 ID·정의·계층질병–표현형 주석hpo_id 매칭
근거개념의 작성·상호참조연관의 source·evidence관계별 보존
변경용어·계층의 추가·폐기주석·증거의 갱신같은 릴리스 조합
적재Neosemantics RDF importCypher LOAD CSV건수·결측·ID 감사

데이터 계약 — “latest를 읽었다”가 아니라 어떤 스냅샷 조합을 어떤 규칙으로 결합했는지 남깁니다.

REPORT §2 · TECHNOLOGY CHOICE

표현 모델은 사용자 질문에서 선택한다

RDF와 LPG의 우열이 아니라 관계 메타데이터 요구를 비교한다

02
ds4th study

RDF도 관계의 근거를 표현한다 — 구조와 비용이 다르다

RDF n항 관계, 명명 그래프, RDF-star, LPG 관계 속성이 한 질병 표현형 주석의 출처 작성자 날짜를 다르게 표현하는 비교
같은 주장, 네 모델n-ary: Annotation 개념 추가named graph / RDF-star: 문장 맥락LPG: 개별 관계의 키–값
ds4th study

같은 사실 하나를 적는데, 문법은 네 개가 필요하다

OMIM:222100HP:0410050 연결의 근거는 PMID:9357814” — 이 한 문장을 적고 다시 꺼내는 방법입니다.

// ① N항 관계 — 근거를 담을 노드를 새로 만든다
_:Annotation :forDisease        OMIM:222100 ;
             :phenotypicFeature HP:0410050 ;
             :source            PMID:9357814 .

// ② 명명 그래프 — 문장을 봉투에 넣고 봉투에 적는다
:G1 { OMIM:222100 :hasPhenotypicFeature HP:0410050 }
:G1 :source PMID:9357814 .

// ③ RDF-star — 문장 자체를 주어로 삼는다
<<OMIM:222100 :hasPhenotypicFeature HP:0410050>> :source PMID:9357814 .

// ④ LPG — 관계 안에 그냥 적는다
(d)-[:HAS_PHENOTYPIC_FEATURE { source: "PMID:9357814" }]->(p)

꺼낼 때의 차이

LPG만 우회가 없다

  • 중간 노드를 먼저 찾고 나서 근거를 읽음 — 모델이 한 단계 깊어짐
  • 봉투 안을 확인하고 봉투 밖을 다시 조회 — 주석 28만 건이면 봉투 28만 개
  • 가장 읽기 좋지만 엔진이 지원해야 쓸 수 있음
  • 관계에 이름 붙이고 속성 읽으면 끝 — 3줄

선택의 근거 — “LPG가 RDF보다 낫다”가 아닙니다. 주석마다 근거가 다르다는 이 장의 요구가 관계 속성을 필수로 만들었을 뿐입니다.

ds4th study

이 사례는 RDF 원천 위에 LPG 애플리케이션 모델을 얹는다

온톨로지 표현은 입력에서, 관계 중심 탐색은 앱 모델에서 활용합니다.

관점RDF 계열LPGChapter 3
기본 표현전역 식별 트리플노드·고유 관계·속성HPO는 RDF/OWL
관계 근거n-ary·named graph·RDF-star관계 키–값앱은 LPG
강점교환·연합·의미·추론경로·관계 속성·질의n10s로 일부 결합
경계모델·엔진 지원 복잡성OWL 의미 전부를 자동 보존하지 않음필요한 계층을 검증

선택 질문 — 임상의가 특정 연결의 출처·증거·날짜를 얼마나 직접 비교해야 하는가?

REPORT §3 · BUILD & OPERATE

적재는 의미 계약의 구현이다

파일을 넣는 순서보다 각 단계가 남길 검증 산출물을 추적한다

03
ds4th study

임상 질문에서 검증된 질의까지 일곱 단계를 닫는다

임상 질문, 두 HPO 원천 이해, RDF LPG 선택, 온톨로지 적재, 주석 적재, 정제 점검, 질의와 추론이 이어지는 파이프라인
CRISP-DM을 산출물로질문·원천·모델 선택을 먼저온톨로지와 주석 적재를 분리정제 후 대표 질의로 검증
ds4th study

각 적재 명령 뒤에 ‘무엇이 보존됐나’를 묻는다

성공 로그만으로는 의미·주석·추론이 보존됐는지 알 수 없습니다.

CONSTRAINT

ID 유일성

URI·질병 ID·표현형 ID 중복을 거부한다.

ONTOLOGY

계층 보존

SUBCLASSOF 방향과 건수를 확인한다.

ANNOTATION

주석 보존

원천 행·관계·근거 속성의 대응을 본다.

CLEANUP

필요 정보 유지

추론·감사에 쓸 노드까지 지우지 않는다.

품질 질문 — 입력 행 하나가 그래프의 어떤 assertion으로 남았는지 역추적할 수 있어야 합니다.

ds4th study

한 행은 한 건의 감사 가능한 주장으로 남아야 한다

HPOA 한 행을 파싱하고 ID로 매칭해 관계를 생성하고 증거를 풍부화한 뒤 건수와 근거를 점검하는 생애주기
구현의 핵심 경계결측 필드는 조건부로 설정증거 코드는 설명과 URL로 풍부화관계 MERGE가 주석을 합치지 않는지 확인
ds4th study

형식이 다른 두 파일은 결국 이 두 줄에서 만난다

온톨로지는 URI(…/obo/HP_0410050), 주석 파일은 콜론 표기(HP:0410050). 그냥 두면 영영 만나지 않습니다.

// 책 3.17 — 온톨로지 노드에 '주석 파일과 같은 모양'의 id 를 만든다
MATCH (n:Resource)
WHERE n.uri STARTS WITH "http://purl.obolibrary.org/obo/HP"
SET n:HpoPhenotype,
    n.id = coalesce(n.id,
      replace(apoc.text.replace(n.uri,'(.*)obo/',''), '_', ':'))

// 책 3.20 — 그 id 로 TSV 의 두 열과 맞물린다
MATCH (dis:HpoDisease)   WHERE dis.id = row[0]  // OMIM:222100
MATCH (phe:HpoPhenotype) WHERE phe.id = row[3]  // HP:0410050
MERGE (dis)-[:HAS_PHENOTYPIC_FEATURE]->(phe)

이것이 의미 통합의 실체

표준 ID가 공통 언어다

  • 3.17이 URI 앞부분을 잘라내고 _:로 바꿔 같은 언어를 쓰게 만듭니다
  • coalesce 덕분에 여러 번 실행해도 안전합니다
  • 3.20은 그 값으로 두 노드를 찾아 선을 잇습니다
  • RDF/XML과 TSV라는 전혀 다른 형식이 여기서 하나의 그래프가 됩니다

같은 파일을 세 번 읽는 이유 — 노드를 만들고(3.19), 선을 잇고(3.20), 그 선에 근거를 붙입니다(3.22). 관계를 만들려면 양쪽 노드가 먼저 있어야 합니다.

ds4th study

책의 결과와 현재 실행 결과가 다른 이유를 설명할 수 있어야 한다

원자료·교재·실습 코드를 대조해 여섯 가지 재현 경계를 확인했습니다.

DATA DRIFT

899,558은 기준값

교재 2025-02 적재 건수이며 2026-06-23 latest와 같지 않다.

ANNOTATION LOSS

쌍 단위 MERGE

같은 질병–표현형 쌍의 여러 근거가 덮일 수 있다.

STAGE DEPENDENCY

정제 뒤 실패

Listing 3.18은 최종 정제 뒤 같은 형태로 실행하면 실패한다.

QUERY SIDE EFFECT

읽기 질의의 MERGE

Listing 3.21은 미바인딩 관계를 만들 수 있어 MATCH로 고친다.

RESULT SUBSET

화이트리스트 ≠ SKIP

교재 3.28과 소스 3.31은 결과 제한 방식이 달라 출력이 다르다.

LISTING MAP

교재 ↔ 소스 +3

study.toml 전수 대응표가 리스팅 정본이다.

재현성 — 릴리스 URL·체크섬·적재 단계·질의 버전을 결과와 함께 저장합니다.

ds4th study

추정이 아니라 직접 돌려 본 숫자입니다

학습 노트북 03_chapter_guide.ipynb로 Neo4j 5.26.28에서 전 과정을 실행한 결과입니다.

926,450

적재된 트리플
교재 실행값 899,558 → 16개월 사이 약 2.7만 건 증가

284,994

질병–표현형 관계
표현형 20,413개 · 질병 12,956개 · SUBCLASSOF 24,378개

약 8분

책 3.22 한 단계
28만 5천 관계에 FOREACH 8개를 배치 없이 실행 (496초)

따라 하기 전에 — 교재는 Neo4j Enterprise 기준입니다. Community 에디션에서는 책의 첫 명령 CREATE DATABASE hpo가 실패합니다(멀티 DB 미지원). 기본 neo4j DB를 쓰면 학습에는 지장이 없습니다. 전체 재구축은 9분 남짓 — 시연 중에 실행하지 마세요.

REPORT §4–5 · QUERY & REASONING

그래프는 관찰을 후보 경로로 바꾼다

직접 연결과 계층으로 도출한 포함을 분리해서 읽는다

04
ds4th study

공유 표현형 수는 후보 조사 순서를 만든다

제1형 당뇨병 등 다섯 표현형과 질병 후보를 연결하고 공유 특징 수 5, 3, 2 순으로 정렬하는 구조
교재 2025-02 스냅샷다섯 입력 표현형의 연결을 모은다겹치는 특징 수로 후보를 정렬한다경로의 source·evidence를 다시 검토한다
ds4th study

다섯 표현형의 겹침 수를 집계하고 이름으로 동률을 푼다

count(nodes)는 주석 경로 수이며 진단 확률이 아닙니다.

MATCH (phe:HpoPhenotype)
WHERE phe.label IN [
  "Growth delay", "Large knee",
  "Sensorineural hearing impairment", "Pruritus",
  "Type I diabetes mellitus"
]
WITH phe
MATCH path=(dis:HpoDisease)
  -[:HAS_PHENOTYPIC_FEATURE]->(phe)
UNWIND dis AS nodes
RETURN dis.id AS disease_id,
       dis.label AS disease_name,
       collect(phe.label) AS features,
       count(nodes) AS num_of_features
ORDER BY num_of_features DESC, disease_name
LIMIT 5
5/5

Odontochondrodysplasia 2 …

OMIM:619269 · 다섯 주석 경로
3/5

Holoprosencephaly 12 …

OMIM:618500 · 세 주석 경로
2/5
3-methylglutaconic aciduria VIII · OMIM:614700Alobar holoprosencephaly · OMIM:616192Alpha-thalassemia/mental retardation, X-linked · OMIM:602782

빠진 것 — 희귀도·부정 소견·발현 시점·증거 질·환자 맥락은 이 단순 랭킹에 포함되지 않습니다.

ds4th study

같은 질의를 지금 돌리면 2위 이하가 바뀝니다

코드는 한 글자도 바뀌지 않았습니다. HPOA 스냅샷만 2025-02 → 2026-06-23으로 바뀌었습니다.

노트북 재실행 · HPOA 2026-06-23

동률 3건이 3개 공유

  • 5 · OMIM:619269 — 변화 없음
  • 3 · OMIM:618500 — 변화 없음
  • 3 · OMIM:621585 Mendez-Johnson syndrome — 신규
  • 3 · OMIM:256500 Netherton syndrome — 신규
  • 2 · OMIM:617248 3-methylglutaconic VIII — 번호 변경

세 가지를 읽습니다 — ① 진단 결론(1위)은 견고합니다. ② 3개 공유가 1건에서 3건으로 늘어 “2위가 도드라진다”는 인상 자체가 사라집니다. ③ 질병 식별자조차 고정된 상수가 아닙니다.

ds4th study

계층은 하위 표현형의 주석을 상위 범주 질의에 포함한다

갑상선 생리 이상, 갑상선기능저하증, 갑상선종에서 내분비계 이상 상위 범주로 향하는 자식에서 부모 방향의 SUBCLASSOF 관계와 상위 범주 질의 포함 구조
직접 사실 + 암시적 포함질병은 하위 표현형에 직접 주석SUBCLASSOF 저장 방향은 자식→부모상위 범주에서 역방향으로 1–3단계를 탐색
ds4th study

더 넓은 결과가 더 정확한 결과는 아니다

추론의 가치는 누락을 줄이는 데 있고, 위험은 범위와 설명 경로에 있습니다.

관점직접 연결계층 추론화면에 남길 것
범위명시된 질병–표현형 주석하위 표현형을 상위 범주에 포함direct / inferred
가치정확한 provenance 검토계층 때문에 숨은 후보 회수원 주석·전체 경로
위험계층 의미를 놓쳐 누락관련성 약한 후보 증가깊이·규칙·HPO 버전
부재주석이 없을 수 있음하위 개념이 불완전할 수 있음없음 ≠ 거짓

설명 가능성 — 어떤 하위 표현형과 계층 경로 때문에 포함됐는지 사용자에게 보여줍니다.

ds4th study

깊이를 정하는 순간 절반을 못 보고, 계층이 바뀌면 결과도 바뀝니다

노트북이 HP:0000818(내분비계 이상) 아래를 직접 세어 본 결과입니다.

256

깊이 *1..3 하위 표현형
책 3.27이 실제로 보는 범위

474

깊이 무제한 하위 표현형
n10s.inference.nodesInCategory가 보는 범위 — 임의로 정한 깊이는 절반을 가린다

깊이 4

Transient neonatal diabetes mellitus
책 표 3.3에 실제로 나오는 항목인데 *1..3으로는 못 찾는다

더 중요한 발견 — 책 표 3.3이 “내분비계 이상의 하위”로 굵게 강조한 Hyperglycemia는 현재 HPO에서 대사 이상 쪽으로 재분류되었습니다. 코드도 데이터도 그대로인데 의미 구조가 바뀌어 추론 결과가 달라진 것입니다. 재현하려면 주석 릴리스뿐 아니라 온톨로지 릴리스도 고정해야 합니다.

REPORT §6–7 · VALIDATE & DECIDE

신뢰도는 가장 짧은 미검증 구간에서 무너진다

원천부터 사용자 검토까지 네 게이트를 닫는다

05
ds4th study

원천·의미·적재·사용을 따로 검증한다

원천, 의미, 적재, 사용의 네 검증 게이트를 통과하고 실패하면 이전 단계로 돌아가며 사람의 검토로 이어지는 구조
네 개의 실패 위치릴리스와 컬럼이 맞는가ID와 계층 의미가 맞는가주석 건수가 보존됐는가후보와 진단을 구분하는가
ds4th study

“근거를 열어볼 수 있어야 한다”는 이미 만들 수 있는 질의다

교재 §3.4 연습문제 — 3.26에 관계 속성을 더해 보세요. 달라지는 건 한 군데뿐입니다.

MATCH (phe:HpoPhenotype)
WHERE phe.label IN $features
MATCH (dis:HpoDisease)
  -[rel:HAS_PHENOTYPIC_FEATURE]->(phe)
WITH dis, count(DISTINCT phe) AS matched,
  collect({
    feature:  phe.label,
    evidence: rel.evidenceName,
    source:   rel.source,
    url:      rel.url,
    curator:  rel.createdBy,
    date:     rel.creationDate
  }) AS grounds
RETURN dis.id, dis.label, matched, grounds
ORDER BY matched DESC
5/5

OMIM:619269 Ondontochondrodysplasia 2

다섯 특징이 모두 같은 논문 하나에서 — PMID:32101163 · Published clinical study · probinson (2021-06-20)
3/5

OMIM:618500 Holoprosencephaly 12

근거가 섞여 있다 — 1건은 논문(PMID:31006513), 2건은 OMIM 텍스트를 기계가 파싱한 Inferred from electronic annotation

겹침 수가 감추는 것 — 같은 “3개 일치”라도 근거의 무게가 다릅니다. 관계에 rel이라는 이름 하나를 붙였을 뿐인데 이 차이가 보입니다. §2.2에서 LPG를 고른 결정이 값을 치르는 지점입니다.

ds4th study

이 장의 결과는 진단이 아니라 검토 가능한 후보 생성이다

기술적으로 재현된 경로도 실제 임상 의사결정의 안전성과 유효성을 자동 증명하지 않습니다.

SCOPE

교육용 개념 증명

HPO 위에서 질의와 계층 추론이 작동하는 방식을 보여준다.

DATA GOVERNANCE

EHR·동의·권한 부재

실제 환자 수집, 비식별화, 접근 통제는 이 장의 범위 밖이다.

CLINICAL CONTEXT

부정·시점·빈도 부재

부정 표현형, 발현 시점, 환자군별 빈도를 단순 겹침 수가 반영하지 않는다.

ACCOUNTABILITY

검증·규제·책임 부재

임상 검증과 규제 준수, 최종 판단 책임은 별도 절차로 남는다.

후보명+원 주석·추론 경로+데이터 버전임상의 검토≠ 진단 확정

안전 원칙 — 질병명만 내보내지 말고 원 주석·추론 경로·데이터 버전을 함께 보여준 뒤 사람의 검토로 넘깁니다.

ds4th study

온톨로지와 그래프는 질문에 필요한 만큼만 쓴다

기술 이름보다 문제의 모양과 운영 책임으로 도입 여부를 판단합니다.

GOOD SIGNAL

도입 가치가 커진다

  • 동의어·중의어·세분성 통합 오류가 큼
  • 관계 경로와 provenance가 답의 근거
  • 계층으로 검색 누락을 줄여야 함
  • 릴리스·매핑·품질 소유자가 있음

WARNING SIGNAL

다른 접근이 단순하다

  • 단일 시스템의 고정 코드만 사용
  • 테이블 필터·집계로 충분
  • 분류체계가 불안정하고 정확 일치만 요구
  • 질병명만 반환하고 검토 책임자가 없음

최소 파일럿 — 대표 질문 3개, 고정 HPO 스냅샷, 주석 보존 모델, 직접/추론 분리 화면으로 시작합니다.

ds4th study

세 질문으로 우리 시스템의 책임을 드러낸다

용어 암기보다 설계 결정을 말할 수 있는지 확인합니다.

Q1

우리 데이터의 “같은 개념”은 누가 승인하고 버전 관리하는가?

Q2

한 관계에 여러 근거가 있을 때 어떤 모델로 모두 보존할 것인가?

Q3

추론으로 포함된 후보의 원 주석과 계층 경로를 어떻게 설명할 것인가?

토론 — 가장 답하기 어려운 질문이 지금 설계에서 가장 짧은 미검증 구간입니다.

ds4th studyQUESTION → EVIDENCE

THREE TAKEAWAYS

그래프의 완성은 적재 성공이 아니라 검토 가능한 근거다

01

질문이 모델을 고른다

임상의의 대표 질문과 오류 비용에서 노드·관계·속성을 도출합니다.

02

온톨로지가 의미를 고정한다

표준 ID·동의어·계층으로 여러 원천을 같은 질의 공간에 둡니다.

03

근거 경로가 신뢰를 정한다

주석·버전·직접/추론 경로를 남기고 최종 판단은 사람에게 둡니다.

Q&A