본문으로 건너뛰기

명세: 역량 질문과 ORSD

📍 현재 위치: 제1부 · 명세 — 라이프사이클의 첫 수. 단 하나의 클래스를 그리기 전에, 완성된 온톨로지가 답할 수 있어야 하는 것을 먼저 적어 둡니다. 이 장은 이 책의 나머지가 그 위에 세워지고 그것에 비추어 평가되는 요구사항 명세입니다.

온톨로지를 시작하는 흔한 방법은 편집기를 열고 클래스 이름을 짓기 시작하는 것입니다. 그것은 잘못된 방법이며, 그 이유를 첫 페이지에서 말해 둘 만합니다. 온톨로지는 세계를 기술한 것이 아닙니다 — 세계는 무한하고, 세포를 원자 단위까지 내려가 모델링하거나 조직도 단위까지 올라가 모델링해도 결코 끝나지 않습니다. 온톨로지는 목적을 위해 만들어진 도구이며, 그 목적은 질문에 답하는 것입니다. 그래서 1990년대 중반 이래 진지한 온톨로지 공학 방법론이라면 한결같이 지켜 온 규율은 동일합니다. 질문에서 출발하고, 그것을 적어 두고, 이후의 모든 모델링 선택을 그 질문 중 하나에 봉사하는지로 판단하는 것입니다 [1].

쉽게 말하면

집을 지을 때 벽돌부터 사지는 않습니다. 먼저 요구서(brief)에서 시작합니다. 침실은 몇 개인지, 누가 사는지, 절대 일어나서는 안 되는 일은 무엇인지(누수, 붕괴). 그런 다음 요구서는 설계도가 되고, 마지막에는 검사관이 완성된 집을 요구서에 비추어 — 방 하나하나 — 점검한 뒤에야 누군가 입주합니다. 역량 질문(competency question)은 온톨로지를 위한 그 요구서의 한 줄이고("이 세포 은행을 공유하는 배치가 무엇인지 알려 줄 수 있는가?"), ORSD는 요구서 전체이며, 이 책의 validate.py는 검사관입니다. 요구서의 모든 줄을 완성된 모델에 비추어 실행하고, 단 한 줄이라도 충족되지 않으면 빌드를 실패시킵니다. 요구사항이 먼저, 그다음 모델, 그다음 검사 — 결코 벽돌부터가 아닙니다.

온톨로지 공학 라이프사이클의 일곱 단계를 왼쪽에서 오른쪽으로 흐름으로 그린 도해 — 명세, 재사용, 개념화, 형식화, 구현, 검증, 유지보수 — 각각 둥근 모서리 상자이고 그 아래에 바이오프로세스 예시가 적혀 있습니다(역량 질문; BFO, IOF, OBO; 클래스와 관계; OWL 공리; 인스턴스와 ETL; SPARQL과 SHACL; FAIR와 버전 관리). 보라색 되돌림 루프가 검증에서 개념화로 거슬러 흐르는데, 이것은 23개 역량 질문이 모두 초록색으로 유지되는 SAMOD의 테스트 우선 반복입니다. 그리고 세 개의 띠가 어떤 방법론이 어떤 단계를 지배하는지 보여 줍니다 — NeOn은 명세부터 형식화까지, SAMOD는 개념화부터 검증까지, LOT는 구현부터 유지보수까지를 다스립니다. 이 책이 따르는 라이프사이클: NeOn이 초기 단계와 ORSD를 빚고, SAMOD가 중간의 테스트 우선 루프를 이끌며, LOT가 출판을 다스립니다 — 진행 중인 항체 캠페인이 모든 단계를 관통합니다. 저자가 AI의 도움을 받아 직접 제작한 그림입니다.

세 가지 방법론, 하나의 척추

이 책은 프로세스를 새로 발명하지 않습니다. 이 분야가 실제로 쓰는 세 가지 온톨로지 공학 방법론을 따르며, 각각은 이 책의 나머지가 밟아 가는 라이프사이클의 서로 다른 구간을 다스립니다.

  • NeOn은 전체 형태와 요구사항 산출물을 제공합니다. NeOn 방법론은 온톨로지 구축을 하나의 경직된 폭포수가 아니라 유연한 시나리오들의 집합 — 명세, 기존 온톨로지와 자원의 재사용, 개념화, 형식화 — 으로 틀 짓고, 온톨로지 요구사항 명세 문서(Ontology Requirements Specification Document, ORSD)가 여기서 나옵니다 [2]. 제1부(이 부)와 제2부(재사용)가 NeOn의 몫입니다.
  • SAMOD — 온톨로지 개발을 위한 단순화된 애자일 방법론(Simplified Agile Methodology for Ontology Development) — 은 모든 모델링 장의 리듬을 제공합니다. "모델릿(modelet)"에 대한 작은 테스트 우선 반복 — 역량 질문을 쓰고, 그 조각을 모델링하고, 데이터에 비추어 테스트하고, 리팩터링하는 — 을 모델이 온전해질 때까지 되풀이합니다 [3]. 제3부부터 제6부까지가 SAMOD의 루프 위에서 돌아갑니다.
  • LOT — 링크드 오픈 텀스(Linked Open Terms) 방법 — 은 백엔드를 제공합니다. 완성된 어휘의 출판, 버전 관리, 재사용 우선 저작, FAIR 릴리스입니다 [4]. 제7부가 LOT의 몫입니다.

세 방법론은 모두 이 장이 여는 신념을 공유하며, 이는 Grüninger와 Fox의 창립 연구로 거슬러 올라가고 Ontology Development 101에서 입문자를 위해 성문화되었습니다. 온톨로지의 요구사항은 역량 질문으로 적히고, 모델은 그 질문에 답함으로써 검증된다는 것입니다 [1][5].

ORSD: 모델을 위한 요구사항 요구서

ORSD는 모델링에 앞서 합의되는 짧은 문서로, 온톨로지가 무엇을 위한 것인지를 고정합니다. 일곱 부분으로 이루어집니다. 다음은 이 책이 처음부터 끝까지 모델링하는 CHO 단클론 항체 프로세스를 위한 우리의 ORSD입니다.

1. 목적

하나의 바이오의약품 제조 캠페인 — 발견 표적에서 콜드체인 바이알까지 — 을 단일한, 기계가 행동에 옮길 수 있는 지식 그래프로 바꾸어, 계보·영향·품질 설계·릴리스 질문을 스프레드시트 고고학이 아니라 질의로 답할 수 있게 만드는 것입니다.

2. 범위

범위 내: 하나의 플랫폼 CHO mAb의 발견-에서-유통까지 경로 — 계통(derivedFrom), 핵심 공정 파라미터와 품질 속성 그리고 그 사이의 연결, 릴리스 명세와 그 게이트, 바이러스 제거 합산, 일련번호 부여와 봉쇄, 규제 물질 동일성, 그리고 조정된 원천 레코드의 출처입니다.

범위 밖(잊은 것이 아니라 명시한 것): 임상 및 환자 데이터; 재무와 일정; 실시간 공정 제어(그래프는 설정값을 문서화할 뿐 그것을 작동시키지 않습니다); 다제품 포트폴리오; 그리고 공장 벽을 넘어선 조직 간 연합 — 이는 평결이 누락이 아니라 진정한 한계로 다루는 부분입니다.

3. 의도된 최종 용도

계보 역추적; 리콜 영향 범위 산정; CPP→CQA 근본 원인 조사; 릴리스 검증; 바이러스 제거 검토; 포장 추적·추적성; FAIR 카탈로깅; 그리고 검색 증강 AI를 위한 접지(grounding)입니다.

4. 의도된 사용자

QA/QC 검토자, 제조 과학(MSAT) 조사자, 규제 제출 문서 작성자, 데이터 엔지니어와 온톨로지스트, 그리고 제8부에서 조사된 플랫폼·지식 그래프 벤더입니다.

5. 기능 요구사항 — 역량 질문 카탈로그

기능 요구사항이 역량 질문입니다. 23개가 있으며, 답하는 질문에 따라 묶여 있습니다. 각각은 책 전반에서 쓰이는 안정적인 식별자(CQ-01CQ-23)를 지니며, 그리고 — 이것이 이 장 전체의 요점인데 — 각각은 실행 가능합니다. 즉 SPARQL 질의, SHACL 게이트, 또는 추론기 검사로 매핑되고, validate.py가 그것을 합격/불합격 테스트로 실행합니다(다음 장이 실제 결과를 보여 줍니다).

그룹CQ모델이 답해야 하는 질문
계보(Lineage)CQ-01임의의 하류 물질이 주어졌을 때, 그것은 어떤 물질들로부터 임의의 깊이로 유래하는가?
CQ-03원료의약품 로트의 기원 생물반응기 배치는 무엇이고, 그 릴리스 단량체 값은 얼마인가?
영향(Impact)CQ-02워킹 세포 은행이 주어졌을 때, 캠페인 전체에서 그것으로부터 내려온 물질은 무엇인가?
CQ-04완제의약품 로트가 실패할 때, 어떤 다른 제품이 그 계보를 공유하는가(세포 은행을 통한 형제)?
궤적(Trajectory)CQ-05각 정제 단계에서 공정 중 HMW-응집체 값은 얼마인가(품질이 어디서 바뀌었는가)?
QbDCQ-06어떤 공정 파라미터가 주어진 핵심 품질 속성에 영향을 주는가?
CQ-07CPP에서, 그 affectsQuality 연결과 그것을 실현한 런을 거쳐, 릴리스된 DS 로트까지 — 그 사슬이 해소되는가?
릴리스(Release)CQ-08릴리스된 물질 로트는 모든 필수 CQA에 대해 정확히 하나의 규격 내 값을 지니는가?
CQ-09릴리스된 로트는 통제된 집합의 상태와 함께, 귀속 가능하게 서명되어 있는가?
CQ-10완제품 로트는 완제 특유의 기준(무균, 외관, 충전 부피)을 충족하는가?
CQ-11규격 외 로트는 정확히 실패하는 경로에만, 그 외에는 어디에도 표시되지 않는가?
바이러스(Viral)CQ-12각 직교 제거 단계의 검증된 LRV는 얼마이고, 합산된 총 제거량은 얼마인가?
포장(Packaging)CQ-13주어진 패키지 안에 전이적으로 봉쇄된 일련번호 부여 단위는 무엇인가?
CQ-14봉쇄가 계통과 구별되어 유지되는가?
출처(Provenance)CQ-15두 원천 시스템 레코드가 owl:sameAs 과병합 없이 하나의 큐레이션된 결정으로 조정되는가?
CQ-16ISO IDMP 규제 동일성이 릴리스 게이트가 검증한 바로 그 노드에 부착되는가?
특성 규명(Characterization)CQ-17워킹 세포 은행이 완전히 특성 규명되어 세포 은행 게이트에 부합하는가?
CQ-18워킹 세포 은행이 검증된 계대 한계 이내인가?
단위(Units)CQ-19저장된 모든 수량이 단위를 지니는가 — 맨숫자가 없는가?
CQ-20세포주는 어떤 숙주 생물에서, 안정적인 NCBI Taxon IRI로, 그 산물을 발현하는가?
구조(Structural)CQ-21세포 배양 런은 어떤 용기에서 일어났는가(장비가 배치 물질과 분리되어 있는가)?
CQ-22장거리 전이적 derivedFrom 간선이 추론되는가, 그리고 장비가 BFO 물질 존재로 추론되는가?
CQ-23disjointness 가드가 심어 둔 혼동(프로세스로 유형이 정해진 Batch, 또는 생물반응기로 유형이 정해진 Batch)을 잡아내는가?

6. 비기능 요구사항

어떤 단일 질문과도 무관하게 모델이 가져야 하는 품질: 접지됨(모든 클래스가 BFO 아래에 자리함); 재사용 우선(공개 온톨로지에 정렬하고, 진정으로 로컬한 것만 새로 발행); 오프라인 검증 가능(validate.py는 네트워크가 필요 없음); 결정 가능(모델이 OWL 2 프로파일 안에 머무름 — derivedFrom에 대한 전이성 제약이 가짜가 아니라 실제로 지켜짐); 진실됨(책의 모든 스니펫은 로드 가능한 데이터셋의 실제 발췌); 이중 언어(EN/KO 출판); 그리고 출판 시 FAIR입니다.

7. 사전 용어집(Pre-glossary)

모델링에 앞서 고정해 두는 소수의 용어로, 두 저자가 하나의 대상에 두 단어를 만들어 내지 않도록 합니다: Material, Equipment, Quality, Process, Information Artifact, Process Parameter; 관계 derivedFrom, affectsQuality, occursIn, contains; 그리고 도메인 용어 CQA, CPP, 세포 은행 계층(RCB/MCB/WCB), LRV, 릴리스 상태입니다.

테스트가 되는 요구사항: 실행 가능한 ORSD

역량 질문을 산문으로 적는 것이 통상적인 관행입니다. 이 책은 한 걸음 더 나아가 그것을 기계 판독 가능하고 실행 가능한 산출물로 만듭니다 — 테스트할 수 없는 요구사항은 신뢰할 수 없는 요구사항이기 때문입니다. 위의 카탈로그는 examples/platform/ontology/cq-catalog.json에 바이트 단위로 그대로 미러링되어 있으며, 거기서 각 역량 질문은 자신에게 답하는 산출물과 그것이 산출해야 하는 결과를 명명합니다:

{
"id": "CQ-04",
"group": "impact",
"question": "When a drug-product lot fails, which other drug products share its lineage (siblings via the shared cell bank)?",
"query": "CQ-04.rq",
"graph": "raw",
"check": { "type": "equals", "var": "affected", "values": ["DP-001", "DP-002"] }
}

세 종류의 산출물이 23개 질문에 답하며, 그 구분 자체가 각 도구가 무엇을 위한 것인지에 대한 교훈입니다:

  • SPARQL 질의가 대부분에 답합니다(17개 파일, queries/CQ-01.rqqueries/CQ-21.rq) — 행 수, 결과 집합, 매칭된 행, 또는 합산된 열을 검사하는 SELECT이거나, 불리언을 검사하는 ASK입니다.
  • SHACL 게이트가 닫힌 세계의 질문(CQ-08, CQ-10, CQ-11, CQ-17)에 답합니다 — 질의가 던질 수 없는 완전성 및 규격 내 질문인데, "무언가가 빠져 있는가?"는 존재하는 트리플에 대한 질문이 아니기 때문입니다.
  • 추론기 검사가 구조적 질문(CQ-22)에 답합니다 — OWL-RL 폐쇄가 장거리 계보와 장비 유형 부여를 실제로 추론했다는 것입니다.

validate.py는 카탈로그를 읽고, 모든 항목을 실행하고, 역량 질문마다 합격/불합격 한 줄을 출력하며, 단 하나라도 실패하면 0이 아닌 값으로 종료합니다. 이제 요구사항 문서와 테스트 스위트는 같은 파일입니다. 이후 어느 장이 클래스나 간선을 추가할 때, 관련 CQ-XX가 여전히 통과하기 전에는 성공을 주장할 수 없습니다 — 이것이 바로 SAMOD의 테스트 우선 루프이며, 선의가 아니라 스크립트로 강제됩니다. 다음 장은 그 테스트가 실행되는 대상 데이터셋을 소개하고, 전체 표가 초록색인 모습을 보여 줍니다.

미해결 과제: 요구서는 판단이지 증명이 아니다

ORSD는 모델을 규율하지만, 옳은 질문이 선택되었음을 보증하지는 못합니다. 역량 질문 카탈로그는 무엇이 중요한가에 대한 주장으로, 어려운 경우들이 알려지기 전에 사람이 내린 것입니다 — 그리고 23개 질문에 모두 답하는 모델이라도, 아무도 적어 둘 생각을 못 한 24번째 질문에는 여전히 쓸모없을 수 있습니다. 범위는 영원한 실패 양식입니다. 벽에 부딪힌 모든 조사자는 "딱 하나만 더" 존재를 원하고, 규율 없이 자라는 ORSD는 그것이 막으려던 경계 없는 모델이 되어 버립니다. 그래서 ORSD는 온톨로지 자체와 동일한 변경 통제 아래에 있는 살아 있는 문서입니다. 새 역량 질문이 제안되고, 정당화되며, 자신의 테스트와 함께 받아들여지거나 이유와 함께 거부됩니다. 실행 가능한 카탈로그는 그 거부를 정직하게 만듭니다 — cq-catalog.json에 없는 질문은 모델이 답하기로 약속하지 않은 질문이며, 그렇다고 소리 내어 말합니다.

왜 중요한가

요구사항에서 출발하는 것이 온톨로지를 유한하고, 테스트 가능하고, 신뢰할 수 있게 유지하는 길입니다. ORSD가 없으면 "모델이 완성되었는가?"에는 답이 없고 "모델이 옳은가?"에는 테스트가 없습니다. ORSD가 있으면 둘 다 validate.py를 실행하고 23줄을 읽는 것으로 환원됩니다. 이 책의 이후 모든 장은 자신이 봉사하는 역량 질문을 가리킴으로써 자신의 클래스와 공리를 정당화합니다 — 그리고 그럴 수 없다면, 그 내용은 모델에 속하지 않습니다. 그것이 공학적으로 만들어진 온톨로지와 그저 쌓여 굳은 어휘의 차이입니다.

현실 세계에서는

역량 질문 규율은 학계의 전설이 아닙니다. 그것은 산업이 실제로 채택하는 방법론들의 척추입니다. NeOn의 ORSD 템플릿은 유럽 온톨로지 프로젝트 전반에서 쓰이고 표준 요구사항 산출물로 가르쳐집니다 [2]; SAMOD의 테스트 우선 루프는 애자일 소프트웨어 팀이 이미 일하는 방식을 반영하며, 그래서 공학 조직으로 깔끔하게 전이됩니다 [3]; 그리고 LOT는 명시적으로 산업 온톨로지 개발을 위해 만들어졌고 표준 기구와 대기업에서 재사용 가능한 어휘를 출판하는 데 쓰입니다 [4]. 여전히 드문 것은 — 그리고 이 책이 주장하는 것은 — 역량 질문을 실행 가능하게 만들어, 요구사항과 회귀 스위트가 결코 어긋나지 않게 하는 것입니다.

핵심 용어

  • 역량 질문(Competency question, CQ) — 완성된 온톨로지가 답할 수 있어야 하는 질의로, 모델링 전에 작성됩니다; 요구사항의 단위이자, 여기서는 테스트의 단위이기도 합니다.
  • ORSD(온톨로지 요구사항 명세 문서, Ontology Requirements Specification Document) — 온톨로지의 목적, 범위, 사용자, 용도, 기능 요구사항(CQ 카탈로그), 비기능 요구사항, 사전 용어집을 고정하는 합의된 요구서.
  • NeOn 방법론 — 시나리오 기반 온톨로지 공학 방법; ORSD와 제2부가 따르는 재사용 프로세스의 출처.
  • SAMOD — 온톨로지 개발을 위한 단순화된 애자일 방법론; 각 모델링 장이 돌리는 테스트 우선 "모델릿" 루프.
  • LOT(Linked Open Terms) — 재사용 가능한 어휘의 요구사항 → 구현 → 출판 → 유지보수를 위한 산업 지향 방법.
  • 실행 가능한 역량 질문(Executable competency question)cq-catalog.json에서 SPARQL 질의, SHACL 게이트, 또는 추론기 검사에 묶여, validate.py가 합격/불합격 테스트로 실행하는 CQ.

이것이 이끄는 곳

요구서가 작성되고 실행 가능해졌습니다. 다음 장 러닝 예제와 증명 하니스는 이후 모든 장이 모델링하는 단 하나의 단클론 항체 캠페인, 그것을 담는 데이터셋 파일들, 그리고 이 23개 역량 질문 카탈로그를 23개 통과 테스트의 표로 바꾸는 하니스를 소개합니다 — 이 책 전체가 지켜 내도록 지어진 초록색 기준선입니다.