상위 척추: 지속체, 발생체, 그리고 모두가 BFO 위에 쌓는 이유
📍 현재 위치: 제2부 · 재사용 — 이미 존재하는 것 위에 서는 첫걸음. 머리말은 한 걸음씩 쌓아 올리는 모델을 약속했습니다. 우리는 그 모델의 가장 꼭대기, 곧 이후의 모든 용어가 매달리게 되는 작은 범주 집합에서 출발합니다.
머리말은 거의 너무 쉬워 보이는 약속을 했습니다. 하나의 공유된 모델을 세우면 모든 시스템이 모든 노트를 하나의 이야기로 읽을 수 있다는 약속이었죠. 하지만 그 안에는 함정이 숨어 있습니다. 세포배양 팀이 자기들의 온톨로지를 만들고, 실험실이 자기들의 것을, 창고가 자기들의 것을 만들도록 내버려 둔다면, 우리는 이질성 문제에서 벗어난 것이 아니라 — 그것을 한 단계 위로 끌어올렸을 뿐입니다. 생물학자의 "공정"과 엔지니어의 "공정"은 BR-101과 Lot 26-001이 그랬던 것과 똑같이 점점 어긋날 것이고, 다만 이번에는 그 불일치가 모델 자체의 구조 속에 파묻혀, 훨씬 더 보기도 고치기도 어렵습니다.
그 해법은, 누구든 도메인 용어를 쓰기 전에, 가장 일반적인 종류의 대상이 도대체 무엇인지부터 합의하는 것입니다. 그 합의가 바로 상위 온톨로지(upper ontology)이며, 이번 장은 과학과 산업의 대부분이 정착한 바로 그 하나에 관한 이야기입니다.
사전을 쓰기 전에 먼저 품사가 필요합니다. "명사", "동사", "형용사"는 어느 특정 사전에 들어 있는 것이 아니라 — 모든 사전의 표제어가 그 아래로 떨어지는 범주이며, 바로 그래서 서로 다른 사람이 쓴 사전들도 여전히 호환됩니다. 상위 온톨로지(upper ontology)는 실재를 위한 품사입니다. 아무리 특수한 바이오공정 용어라도 그 안에 끼워 맞춰지는, 작고 도메인 중립적인 범주 집합 — 지속되는 것, 일어나는 것, 성질, 역할 — 이죠. 그것을 먼저 합의해 두면, 한 팀이 만든 Bioreactor와 다른 팀이 만든 CellCultureProcess는 서로 맞아떨어질 수밖에 없습니다.
이 장에서 다루는 내용
우리는 표준화된 상위 온톨로지인 기초 형식 온톨로지(Basic Formal Ontology, BFO)와, 그 가장 핵심을 떠받치는 단 하나의 구분 — 지속체(continuant)(지속되는 것)와 발생체(occurrent)(일어나는 것)의 구분 — 을 만납니다. 바이오공정의 일상적인 구성 요소들을 그 척추 위에 분류하고, 하나의 배치를 해부하여 BFO의 모든 범주가 한꺼번에 작동하는 모습을 보며, 그다음 한 단계 내려가 그 추상화를 제조에서 실제로 쓸 수 있게 만들어 주는 IOF 코어(IOF Core) 중간 계층으로 향합니다. 그리고 정직한 한계로 마무리합니다. 공유된 척추는 구조의 호환성을 보장할 뿐, 선택의 합의를 보장하지는 않는다는 것입니다.
상위 온톨로지란 무엇이며, 바이오공정에 왜 필요한가
이 책에서 말하는 온톨로지란, 한 도메인에 존재하는 대상의 종류와 그것들이 서로 어떻게 관계 맺는지를 명시적이고 기계가 읽을 수 있게 적은 어휘 체계입니다. 상위(upper)(또는 기초, foundational) 온톨로지는 — 생물학, 화학, 제조와 무관하게 — 모든 것이 그 아래로 떨어지는, 가장 일반적인 범주들로 이루어진 작고 도메인 중립적인 어휘 체계입니다 [1]. 거기에는 의도적으로 Bioreactor도 Antibody도 들어 있지 않습니다. 그 안에 들어 있는 것은 "생물반응기란 근본적으로 어떤 종류의 대상인가?" — 지속되는 객체 — 와 "발효란 어떤 종류의 대상인가?" — 전개되는 공정 — 라는 물음에 대한 답입니다. 모든 도메인 온톨로지를 같은 상위 범주 위에 세우면, 데이터 관리 책이 처음 논했던 그대로 그것들은 설계상 재사용 가능하고 결합 가능해집니다. 이번 장은 그 척추 자체를 보여 줍니다.
과학과 공학이 대체로 수렴한 상위 온톨로지가 바로 BFO, 곧 기초 형식 온톨로지(Basic Formal Ontology)입니다. 이것은 취미 삼아 만든 프로젝트도, 한 벤더의 발명품도 아닙니다. ISO/IEC 21838-2라는 국제 표준으로 발행되어, BFO를 적합한 최상위 온톨로지로 인증합니다 [1]. 그리고 그 설계 근거는 저자들이 책 한 권 분량으로 펼쳐 놓았습니다 [2]. 산업 온톨로지 파운드리(Industrial Ontologies Foundry)와 바이오제약 작업 그룹들이 최상위를 고를 때, 그들이 고른 것이 바로 이것입니다 — 그러니 BFO를 배우는 일은 여러분이 실제로 가져다 쓰게 될 제조 온톨로지들이 쓰여 있는 문법을 배우는 일입니다.
일을 해내는 단 하나의 구분: 지속체와 발생체
BFO의 핵심 수는 세상의 모든 것을 두 갈래로 가르는 것이며, 이 책의 거의 모든 모델링 결정은 어떤 대상이 그 선의 어느 쪽에 놓이는가로 거슬러 올라갑니다 [2].
지속체(continuant)는 부분을 얻고 잃으면서도 정체성을 유지한 채 전체로서 시간 속에서 지속되는 대상입니다. 세포, 생물반응기, 바이알, 원료의약품 한 배치, 그 배치의 순도, 어떤 용기가 "그 생산 반응기"로서 수행하는 역할 — 모두 지속체입니다. 그것들은 존재하는 매 순간 온전히 존재합니다. 지금 하나를 가리키고 한 시간 뒤에 다시 가리켜도, 여러분은 같은 전체를 가리키고 있는 것입니다.
발생체(occurrent)는 일어나는 대상입니다 — 시간 속에서 전개되며, 시간적 부분을 지니기 때문에 결코 한꺼번에 존재하지 않습니다. 세포 배양 운전, 단백질 A 포집 단계, 시료를 채취하는 행위, 제조 캠페인 전체 — 모두 발생체입니다. 탱크를 가리키듯 세포 배양 운전을 가리킬 수는 없습니다. 어느 한 순간에 여러분은 그것의 한 조각만을 붙잡을 뿐입니다.
이 구분은 추상적으로 들리지만, 사람들이 얼마나 자주 엉뚱한 쪽으로 모델링하는지를 알아차리는 순간 달라집니다. "배치"는 지속체입니다 — 물질이죠 — 하지만 그 배치를 만드는 일은 발생체입니다. 둘을 뭉뚱그리면, 여러분의 그래프는 하나의 생물반응기(지속되는 객체)가 지난달에 세 번의 서로 다른 발효(세 개의 별개 사건)를 진행했다고 말할 수 없습니다. 두 역할을 하나의 흐릿한 "배치" 개념이 떠맡고 있기 때문입니다. 이 둘을 따로 떼어 두는 것이야말로, 모델이 장비와 물질과 활동을 한꺼번에 정확하게 말할 수 있게 해 주는 일입니다.
지속체의 내부: 객체, 성질, 그리고 실현 가능자
지속체는 바이오공정이 끊임없이 활용하는 방식으로 다시 갈라집니다 [2]. 독립적 지속체(independent continuant)는 그 자체로 존재하는 대상입니다 — 생물반응기, 세포, 원료의약품 로트처럼 물질적 실체(material entity)가 그 예죠. 특정적 의존 지속체(specifically dependent continuant)는 오직 다른 무언가 안에 내속(inhere)함으로써만 존재하는 대상입니다. 이를테면 98.611 % 단량체 순도(제품 가운데 덩어리진 응집체가 아니라 온전한 단일 분자 항체로 남아 있는 비율 — 수치가 높을수록 좋습니다)와 같은 성질(quality)은 홀로 떠다닐 수 없고 반드시 어떤 로트의 순도여야 합니다. 또는 실현 가능한 실체(realizable entity) — 이 캠페인에서 어떤 용기가 생산 반응기 역할을 수행하는 것(언젠가 그만둘 수 있는 역할인) 같은 역할(role), 단백질 A 수지가 항체의 Fc 영역에 대해 갖는 친화성 — 항체가 실제로 있든 없든 지니는 성향 — 같은 성향(disposition), 바이러스 필터의 설계된 목적 같은 기능(function) — 도 그렇습니다. (이 공정 예시들 각각의 작동 원리 — 단백질 A 포집이 항체를 어떻게 결합하는지, 바이러스 필터가 바이러스를 어떻게 제거하는지 — 는 책 1의 포집 크로마토그래피와 바이러스 여과 장에서 다룹니다. 여기서 그것들은 범주의 예시일 뿐입니다.) 일반적 의존 지속체(generically dependent continuant)는 특이하면서도 중요한 것입니다. 여러 운반체를 넘나들며 복제될 수 있는 정보죠 — 레시피, 마스터 배치 기록, 규격, 분석 성적서가 그것입니다. 규격은 그것이 인쇄된 종이도, 그것을 띄운 화면도 아닙니다. 그것은 내용이며, BFO는 그 운반체들이 지니는(bear) 독립적인 대상으로 이를 모델링하게 해 줍니다.
객체, 성질, 정보라는 이 세 갈래의 구분은, 실제 질문에 답할 수 있는 모델과 그렇지 못한 모델을 가르는 차이입니다. "순도가 얼마인가?"는 어떤 로트에 내속하는 성질을 묻습니다. "규격이 요구하는 것은 무엇인가?"는 일반적 의존 지속체를 묻습니다. "그것은 어떤 용기였는가?"는 역할을 수행하는 독립적 지속체를 묻습니다. "배치"라는 한 단어가 이 셋을 모두 담을 수는 없습니다. BFO의 범주는 그것을 해냅니다.
그리고 규제 받는 공장에서 그 성질은 그저 아무 성질이 아닙니다. SEC(크기 배제 크로마토그래피, size-exclusion chromatography) %단량체는 크기 순도에 대한 제품의 핵심 품질 속성(critical quality attribute, CQA) — 제품의 품질, 안전성, 유효성을 보장하려면 그 값이 한계 안에 머물러야 하는 속성 — 이고, 어떤 로트가 출하될지(시장에 출시될지)를 결정하는 선 — SEC 단량체 95.0 % 이상 — 은 로트의 값이 대조되는 일반적 의존 지속체인 요구사항 규격(requirement specification)입니다. 그래서 "이 배치는 단량체 98.611 %다"라는 익숙한 사실 하나가 이미 척추 위에서 세 갈래로 갈라집니다. 곧 성질(로트에 내속하는 측정된 순도), 일반적 의존 지속체(규격 속의 합격 기준), 그리고 그 수치를 산출한 출하 시험이라는 발생체입니다. 실행 예제는 바로 이것을 담고 있습니다 — bp:AC-monomer(bp:specLow 95.0)가 제약하는 bp:MonomerPct-CQA, 그리고 bp:DS-001에 내속하는 값 98.611. (각 이름 앞의 prefix: — 우리의 지역 바이오공정 어휘를 가리키는 bp:, 아래에서 소개하는 공유 어휘를 가리키는 obo:와 iof: — 은 그저 긴 웹 주소, 곧 전체 IRI의 약칭이며, 이후의 모든 bp:/obo:/iof: 토큰도 이렇게 풀어 읽으면 됩니다.) 출하 게이트 장이 바로 그 선을 SHACL 제약으로 바꾸어 성질→규격→게이트의 호를 완성합니다.
이 범주들은 모호한 라벨이 아닙니다 — 각각은 안정적인 IRI(국제화 자원 식별자, Internationalized Resource Identifier — 용어에 이름을 붙이는 전 세계적으로 유일한 웹 주소)를 가진, 발행된 BFO 2020 용어이며, 정렬 파일은 모든 지역 클래스를 그중 하나에 고정합니다. 물질적 실체(material entity)는 obo:BFO_0000040, 성질(quality)은 obo:BFO_0000019, 공정(process)은 obo:BFO_0000015입니다. 실현 가능한 계열은 실현 가능한 실체(realizable entity)(obo:BFO_0000017) 아래의 세 형제 용어입니다. 곧 역할(role)(obo:BFO_0000023), 성향(disposition)(obo:BFO_0000016), 기능(function)(obo:BFO_0000034)이며 — 바로 그래서 수지의 결합 성향, 용기의 생산 반응기 역할, 바이러스 필터의 설계된 목적이 하나의 "속성" 칸으로 흐려지는 대신 각각 다른 칸에 놓입니다. 그 불투명한 숫자 IRI가 바로 핵심입니다. "역할" 같은 라벨은 언어와 팀 사이에서 흔들리지만, obo:BFO_0000023은 지상의 모든 BFO 기반 온톨로지에서 같은 식별자이므로, 둘 다 그것에 정렬한 두 시스템은 서로의 영어를 비교해 본 적조차 없이도 의미에 합의합니다.
이 장이 기대는 여섯 범주를, 각 지역 클래스가 고정하는 발행된 BFO 2020 IRI 및 그 범주에 떨어지는 바이오공정 예시와 함께 정리하면 다음과 같습니다.
| BFO 범주 | IRI | 선의 어느 쪽 | 바이오공정 예시 |
|---|---|---|---|
| 물질적 실체 | obo:BFO_0000040 | 지속체(독립적) | 배치 물질; 생물반응기 용기 |
| 성질 | obo:BFO_0000019 | 지속체(특정적 의존) | 로트의 단량체 순도 |
| 역할 | obo:BFO_0000023 | 지속체(실현 가능) | 용기의 생산 반응기 역할 |
| 성향 | obo:BFO_0000016 | 지속체(실현 가능) | 수지의 항체 결합 성향 |
| 기능 | obo:BFO_0000034 | 지속체(실현 가능) | 바이러스 필터의 설계된 목적 |
| 공정 | obo:BFO_0000015 | 발생체 | 세포 배양 운전 |
이후의 모든 장에서 "성질(obo:BFO_0000019)"이라고 말할 때, 그것은 이 행을 가리키는 것입니다.
바이오공정 구성 요소를 매단 BFO 척추: 왼쪽에는 지속되는 것(객체, 그것에 내속하는 성질, 그것이 수행하는 역할, 그것에 관한 정보), 오른쪽에는 일어나는 것(만들고 정제하는 공정).
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
하나의 배치 해부, 척추 위에 놓기
상위 온톨로지의 효용은 익숙한 대상 하나를 분해하여 그 안에서 BFO의 모든 범주가 모습을 드러내는 것을 지켜볼 때 가장 잘 보입니다. 우리는 이를 위해 — 이를테면 바이알이나 크로마토그래피 칼럼이 아니라 — 배치(batch)를 씁니다. 캠페인 전체에서 조용히 여섯 범주 모두에 한꺼번에 해당하는 단 하나의 실체이기 때문입니다. 곧 객체, 별개 객체인 장비, 공정, 성질, 역할, 정보가 모두 "배치"라는 한 단어 안에서 충돌하며, 바로 그래서 이것들을 뭉뚱그리는 일이 현장에서 가장 흔한 모델링 실수입니다. BATCH-2026-001을 봅시다 — 하나의 기록으로서가 아니라, 꼼꼼한 모델이 거기서 보는 별개 실체들의 무리로서 말입니다.
배치 물질(batch material) 그 자체 — 세포와 배양액, 그리고 나중에는 정제된 단백질 — 는 물질적 실체(material entity)이며 독립적 지속체입니다. 그것을 담았던 생산 생물반응기(production bioreactor) 역시 물질적 실체이지만, 다른 것입니다. 장비는 여러 배치에 걸쳐 지속되므로, 모델은 용기를 물질에 융합시켜서는 안 됩니다. 세포 배양 운전(cell-culture run) — 며칠에 걸친 성장과 생산 — 는 발생체(occurrent), 곧 공정이며, 배치 물질과 용기가 모두 그것에 참여합니다(participate in). 98.611 % 단량체 순도는 성질(quality)이며, 오직 원료의약품 로트에만 내속하고 다른 어디에도 내속하지 않는 특정적 의존 지속체입니다. 용기가 "이 캠페인의 생산 반응기"라는 지위를 갖는 것은 역할(role)이며, 그 기간 동안 지니고 있다가 벗어 버릴 수도 있는 실현 가능한 실체입니다. 그리고 이 모든 것을 규정한 마스터 배치 기록(master batch record)은 일반적 의존 지속체(generically dependent continuant)입니다 — 정보이고, 복제 가능하며, 어떤 인쇄물과도 구별됩니다.
하나의 배치는 동시에 여러 BFO 실체입니다: 물질(따로 떼어 둔 배양액과 용기), 공정(그것들이 참여하는 세포 배양 운전), 성질(로트에 내속하는 순도), 역할(용기가 무엇으로 쓰이고 있는지), 그리고 정보(그것을 규정한 기록).
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
이 규율이 우리에게 무엇을 안겨 주었는지 보십시오. 용기와 물질이 별개의 물질적 실체이기에, 그래프는 나중에 다른 배치가 같은 용기에서 진행되었다고 모순 없이 말할 수 있습니다. 세포 배양 운전이 둘 다 참여하는 발생체이기에, "이 일이 언제 일어났는가?"가 매달릴 곳이 생깁니다. 순도가 로트의 성질이기에, 그것이 빈 탱크에 잘못 주장될 수 없습니다. 상위 온톨로지는 사실을 추가한 것이 아닙니다. 모든 사실에 알맞은 종류의 거처를 주었고, 바로 그것이 모델이 커져 가는 동안에도 정직함을 유지하게 해 줍니다.
명시적으로 짚어 둘 가치가 있는 미묘한 지점이 하나 있는데, OWL과 SHACL이 일을 나누는 곳이 바로 여기이기 때문입니다. (OWL, 곧 웹 온톨로지 언어(Web Ontology Language)는 범주와 공리를 적는 언어이고, SHACL은 데이터 검증 규칙을 위한 동반 언어이며, 추론기(reasoner)는 그 공리들로부터 논리적 결론을 끌어내는 프로그램입니다. 클래스와 분류 체계 장과 출하 게이트 장이 이것들을 온전히 소개합니다 — 여기서는 그것들이 존재한다는 것만 알면 됩니다.) Batch가 지속체이고 CellCultureProcess가 발생체라고 말하는 것은 단순한 주석이 아닙니다 — 모델은 그것을 공리, 곧 bp:Batch owl:disjointWith bp:CellCultureProcess로 적습니다. 기술논리(description logic) 추론기(HermiT, ELK) 아래에서 그 공리는 한 노드를 둘 다로 유형 지정한 그래프를 논리적으로 비일관(inconsistent)하게 만듭니다. 추론기가 그것을 거부하죠. 하지만 실행 예제의 오프라인 검증기는 OWL-RL 폐포(closure)(owlrl)를 돌리고, OWL-RL은 의도적으로 owl:disjointWith에 작용하지 않습니다 — 그래서 검증 시점에 배치가 운전으로 유형 지정된 것을 실제로 잡아내려면, 프로젝트는 시끄럽게 실패하는 폐쇄 세계(closed-world) SHACL 가드(shapes.ttl의 bp:BatchNotProcessShape)를 더합니다. 이것은 모든 도입자가 결국 마주치는 실질적 분업입니다. 곧 OWL disjointness 공리는 일관성을 위해 DL 추론기가 검사하고, SHACL은 같은 방화벽을 데이터 검증 규칙으로 강제합니다. 역량 질문 CQ-23은 바로 그 가드가 발화함을 증명하기 위해 존재하며, 출하 게이트와 역량 질문 장이 그 실을 이어받습니다.
이 배치 하나를 실행 예제의 트리플로 적으면, 서로 다른 BFO 종류들로 펼쳐집니다 — 하나의 물질적 실체, 용기를 위한 별도의 물질적 실체, 그것이 지니는 역할, 그리고 배치를 산출하면서 용기 안에서 일어나는 발생체가 그것입니다. 아래의 각 줄은 RDF 트리플입니다 — 주어(subject), 그다음 술어(predicate)(관계), 그다음 목적어(object) — 터틀(Turtle) 표기법으로 적혀 있으며, 여기서 a는 "~이다(is a)"를 뜻하고, ;는 같은 주어에 대한 또 다른 진술을 이어 가며, ^^xsd:float는 값을 십진수로 태그합니다. 나머지는 줄 안의 주석이 설명합니다.
# instances.ttl — one batch, its vessel, and its run, each a different BFO kind.
bp:BATCH-2026-001 a bp:Batch ; # a material entity (independent continuant), typed once
bp:derivedFrom bp:SEED-001 ;
bp:participatesIn bp:CCP-001 ; # ...that participates in an occurrent
bp:monomerPct "98.611"^^xsd:float . # ...and records a quality VALUE (a datatype-property shortcut)
bp:BR-101 a bp:ProductionBioreactor ; # the vessel — a SEPARATE material entity
bp:hasRole bp:BR-101-role . # ...bearing a realizable role
bp:BR-101-role a bp:ProductionReactorRole . # a role (realizable entity)
bp:CCP-001 a bp:CellCultureProcess ; # the run — an occurrent (process)
bp:occursIn bp:BR-101 ; # ...that occurs in the vessel
bp:hasOutput bp:BATCH-2026-001 . # ...and outputs the batch material
올라가기 전에 짚어 둘 정직한 솔기가 하나 있습니다. 위 본문은 98.611 % 순도를 로트에 내속하는 성질이라 부르지만, 실행 그래프는 그것을 데이터형 속성 리터럴(bp:monomerPct)로 기록할 뿐, 아직 로트가 지니는 독립된 성질 개체로는 두지 않습니다. 그것은 거의 모든 실무 온톨로지가 취하는 실용적 지름길입니다 — 리터럴은 구상화된(reified) 개체보다 저장하고 질의하기가 더 쌉니다 — 그리고 이는 형식화 장이 의도적으로 내리는 바로 그 얼마나 깊이 모델링할 것인가? 판단으로, 거기서는 완전히 구상화된 성질을 그 지름길과 나란히 보여 줍니다. 범주는 맞습니다. 인코딩은 선택일 뿐입니다.
같은 세 갈래의 구분이 공장 데이터 시스템이 깔끔하게 적재되게 해 주는 것이기도 합니다. BR-101에서 나오는 히스토리언 태그 스트림 — 몇 초마다 표본 추출되는 온도, pH, 용존 산소 — 은 운전도 아니고 용기도 아닙니다. 그것은 지속체에 내속하는 성질 트레이스입니다(동반 파일은 이를 bp:Trace-BR101-Temp a bp:Quality로 모델링합니다). 그 운전을 규정한 MES 배치 기록은 일반적 의존 지속체로, 실행 기록 화면과 보관된 PDF에 걸쳐 복제됩니다. 그리고 운전 자체인 bp:CCP-001은 타임스탬프가 실제로 속하는 발생체입니다. from-the-wire-to-the-graph와 오픈소스 지식 그래프 장의 OPC UA 및 히스토리언 로더가 와이어 데이터를 RDF로 바꿀 때, 바로 이것이 그들이 데이터를 매다는 척추입니다. 곧 트레이스는 성질이 되고, 기록은 정보 산물이 되며, 시간은 탱크가 아니라 공정에 붙습니다. 바로 그 와이어-투-그래프 매핑은 ISA-95와 OPC UA 정보 모델을 기초적 척추 위에 다시 표현한 것입니다. ISA-95의 설비 계층은 독립적 지속체 갈래에, 그 공정 세그먼트는 발생체 갈래에, B2MML 배치 기록은 일반적 의존 지속체 갈래에 떨어집니다 — 데이터 관리 책의 의미적 상호운용성 장이 네 표준을 네 개의 사일로가 아니라 하나의 질의 가능한 그래프로 바꾼다고 논하는 바로 그 다리입니다.
학습 모델이 그 아래에 척추를 원하는 이유
그래프를 정직하게 유지하는 바로 그 규율이, 그래프를 머신러닝 모델이 대조되는 그라운드 트루스(ground truth)로 쓸 수 있게 만들어 줍니다 — ML/AI 책이 여는 실이자 이 책이 AI의 그라운드 트루스로서의 온톨로지에서 닫는 실이지요. 모델은 답의 모양을 배울 뿐, BATCH-2026-001에 관해 무엇이 참인지는 배우지 못합니다. 모든 사실 아래에 알맞은 종류의 거처를 두면, 학습 시스템이 필요로 하는 세 가지가 척추에서 거저 따라 나옵니다.
첫째, 지속체/발생체 구분 자체가 정직한 검증 폴드입니다. bp:derivedFrom 계보 간선이 척추 위의 타입 부여된 관계(하나의 물질적 실체를 그것이 비롯된 부모 물질에 잇는)이기에, 공유된 세포 은행까지 거슬러 올라가는 (bp:derivedFrom)+ 걷기는 어떤 로트들이 독립적 관측이 아닌지를 정확히 복원합니다 — 하나의 WCB-CHO-001에서 나온 형제 배치들은 별개의 추출이 아니라 거의-쌍둥이입니다. 그 걷기가 배치 하나 빼기(leave-one-batch-out)(또는 세포 은행 하나 빼기) 분할의 그룹 키이며, 책 5의 데이터 장이 기본값으로 삼고 모델과 검증 장이 GroupKFold와 중첩 교차검증으로 바꾸는 규율입니다. 로트의 계보를 추적하는 그래프와 정직한 학습/시험 경계를 정의하는 그래프는 같은 그래프입니다. 척추를 틀리게 두는 것 — 용기와 물질을 융합하여 "배치" 하나가 한 탱크의 세 번 재사용에 걸쳐 조용히 펼쳐지게 하는 것 — 이야말로 행 단위 분할이 검토를 빠져나가고 모델이 환상의 점수를 보고하게 되는 길입니다.
둘째, 성질 범주는 모델이 헐벗은 부동소수점 대신 추론할 수 있는, 타입 부여되고 단위를 지닌 특징입니다. BR101.Feed.PV = 0.40으로 도착하는 히스토리언 태그는 의미적으로 벙어리입니다. 같은 측정값이 단위와 계보를 지닌 채 BATCH-2026-001의 생산 단계에 내속하는 공급률 성질로 척추 위에 떨어지면, 그것은 공급 일탈이 응집체 일탈을 설명하는지 묻기 위해 모델이 실제로 쓸 수 있는 특징이 됩니다. 그 분류가 특징을 검색 가능하게 만드는 것이며, 이는 프런티어 조사가 목록화하는 AI 준비성 작업의 핵심 전부입니다.
셋째 — 그리고 이것이 짚어 둘 가치가 있는 검증의 역설인데 — 추론된 그래프와 학습된 모델은 서로 다른 것을 검사하며, 진지한 파이프라인에는 둘 다 필요합니다. SHACL 출하 게이트(bp:BatchNotProcessShape와 출하 게이트 장이 짓는 규격 셰이프)는 부분 그래프가 모델이나 검색 증강 LLM에 건네지기 전에, 그것이 완전하고 제대로 타입 부여되어 있음 — 모든 로트에 그 bp:derivedFrom 부모가 있고, 모든 CQA에 그 값이 있음 — 을 인증합니다. 셰이프를 통과하지 못하는 그래프가 바로, 유창한 모델이 학습 기억으로부터 기꺼이 채워 넣을, 텅 비었거나 잘못 라벨링된 입력입니다. SHACL은 모델이 자신만만하게 대규모로 그것을 잡아내기 전에 당신이 먼저 잡아내는 방법입니다. 모델은 사실 위에 유창함을 공급하고, 오직 이 척추 위에 그라운딩된 그래프만이 사실을 공급합니다 — 그리고 오직 척추만이 그래프가 주장하는 의미를 갖게 합니다. 그라운드 트루스로 다시 진술된 구조 대 실질 구분이지요.
척추에서 공장으로: IOF 코어 중간 계층
BFO는 직접 모델링하기에는 의도적으로 너무 추상적입니다 — 거기에는 Equipment도 Material도 없고, 오직 object와 process만 있습니다. 그 얇은 꼭대기에서 실제로 쓸 수 있는 제조 어휘 체계로 건너가는 다리가 중간 계층(mid-level) 온톨로지이며, 산업 분야에서 그것이 바로 IOF 코어(IOF Core)입니다. 산업 온톨로지 파운드리가 발행한, 모든 제조 도메인이 공유할 수 있는 BFO 기반 개념 집합 — 장비, 물질, 공정, 역량, 그리고 그것들 사이의 관계 — 이죠 [5]. IOF는 다시 OBO 파운드리(OBO Foundry)를 명시적으로 본떠 만들어졌습니다. OBO 파운드리는 조율되고 원칙에 기반한 온톨로지 구축이 대규모로 작동함을 입증한 생명과학 공동체로, 수십 개의 생의학 온톨로지가 상위 기반과 설계 규칙을 공유하기에 서로 겹치는 대신 맞물립니다 [3].
그래서 이 스택은 세 단을 가지며, 오픈소스 책의 지식 그래프 장은 그 모두를 올라갑니다. 맨 위에 BFO(어떤 종류의 대상인가), 가운데에 IOF 코어(일반 제조), 맨 아래에 바이오제약 도메인 온톨로지(Bioreactor, MasterRecipe, CellLine)가 있죠. 우리의 지역 bp: 네임스페이스는 네 번째 단입니다 — 도메인 온톨로지를 다시 발명하는 대신 그것에 위로 정렬되는, 사이트 특화적인 작은 어휘 체계죠. 각 단은 바로 위의 단을 특화하므로, 추론기 아래에서 bp:Batch는 자신의 IOF 유형(IOF 물질적 산물(material artifact))과 BFO 유형(독립적 지속체인 물질적 실체(material entity))을 물려받으며, 그것이 보장하는 모든 호환성을 함께 얻습니다. "물질적 실체"라는 이름의 IOF 클래스가 글자 그대로 존재하는 것은 아닙니다 — 그 용어는 BFO의 것이고, IOF 단이 기여하는 것은 물질적 산물(material artifact), 제조 공정(manufacturing process), 장비 일부(piece of equipment) 따위입니다.
각각 바로 위의 단을 특화하는 네 단: 중립적인 상위 온톨로지, OBO 파운드리를 본뜬 산업용 중간 계층, 바이오제약 도메인, 그리고 그것에 위로 정렬되는 지역 어휘 체계 — 그래서 지역 클래스가 호환성을 거저 물려받습니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
이 네 단은 비유가 아닙니다 — 그것은 말 그대로 정렬 파일이 주장하는 바입니다. 각 지역 bp: 클래스는 실재하고 발행된 상위 용어의 하위 클래스임을 스스로 선언하므로, bp:Batch는 자신이 IOF 물질적 산물이고 BFO 물질적 실체임을 주장합니다. 출처에 관한 단서 하나: 이 IRI들은 검증되었지만 모두 한곳에서 확인한 것은 아닙니다 — BFO와 OBO 용어는 EBI 온톨로지 룩업 서비스(OLS4)에 대조했고, IOF 용어는 GitHub에 발행된 IOF 릴리스에 대조했습니다. OLS가 IOF를 호스팅하지 않기 때문입니다. 각 IRI는 살아 있고 역참조 가능합니다.
# align.ttl — local vocabulary aligned UP to BFO 2020 + IOF Core + IOF biopharma (verified IRIs).
@prefix bp: <https://example.org/bioproc#> .
@prefix obo: <http://purl.obolibrary.org/obo/> .
@prefix iof: <https://spec.industrialontologies.org/ontology/construct/> .
bp:Material rdfs:subClassOf obo:BFO_0000040 . # BFO 'material entity'
bp:Process rdfs:subClassOf obo:BFO_0000015 . # BFO 'process'
bp:CellCultureProcess rdfs:subClassOf iof:ManufacturingProcess . # IOF Core mid-level
bp:Batch rdfs:subClassOf iof:MaterialArtifact . # IOF Core
bp:CaptureChromatography rdfs:subClassOf iof:CaptureStep . # IOF biopharma unit op
bp:CellLine rdfs:subClassOf iof:CellLine . # IOF biopharma material
bp:Quality rdfs:subClassOf obo:BFO_0000019 . # BFO 'quality'
bp:InformationArtifact rdfs:subClassOf iof:InformationContentEntity .
쓰인 관계에 주목하십시오. 모든 간선은 rdfs:subClassOf이며, 결코 owl:equivalentClass나 owl:sameAs가 아닙니다. bp:Batch는 IOF 물질적 산물의 특수화(specialization)이지 그것의 동의어가 아닙니다 — 동등성을 주장하면 과잉 약정이 되어, 추론기가 어디에 있든 모든 IOF 물질적 산물이 우리의 배치 중 하나라고 결론짓도록 강요하게 됩니다. 포섭(subsumption)은 정직하고 더 약한 주장이며, 그것이야말로 우리에게 필요한 상호운용성의 전부입니다. 하류의 IOF 인식 도구는 공유된 상위 클래스에서 맞춰 보면 되고, 우리의 지역 말단은 그 도구의 세계로 거슬러 새어 나가지 않습니다.
각 정렬 줄은 어떻게 쓰였는가. 위의 두 간선 — bp:Batch rdfs:subClassOf iof:MaterialArtifact와 bp:CellCultureProcess rdfs:subClassOf iof:ManufacturingProcess — 은 어림짐작으로 쓴 것이 아닙니다. 각각은 짧고 반복 가능한 배치(placement) 절차의 산출물이며, 이는 제1부의 역량 질문 레시피에 대응하는 재사용 단계의 절차입니다. bp:Batch에 대해 끝까지 적용해 보면 다음과 같습니다.
- 척추를 가르는 단 하나의 물음을 던진다: 그것은 지속되는가, 아니면 일어나는가? 한 배치의 배양액은 여러분이 가리키는 매 순간 온전히 거기 있습니다. 전개되지 않죠. 그러므로 그것은 발생체가 아니라 지속체입니다 — 첫 번째 갈림길이자, 대부분의 배치 오류가 틀리는 바로 그 지점입니다.
- 지속체라면, 세 가지 의존 종류 중 어느 것인지 묻는다. 그것은 그 자체로 존재하는가(독립적), 오직 다른 무언가에 내속함으로써만 존재하는가(특정적 의존), 아니면 복제 가능한 정보인가(일반적 의존)? 배치는 그 자체로 존재합니다 — 곧 독립적 지속체, 즉 물질적 실체입니다 — 반면 그 순도는 그것에 내속할 것이고(특정적 의존), 그 배치 기록은 복제 가능할 것입니다(일반적 의존).
bp:CellCultureProcess는 이 갈림길을 일찌감치 빠져나갑니다. 그것은 일어나므로 발생체(공정)이고, 의존 물음은 아예 생기지 않습니다. - 배치를 영어 라벨이 아니라 발행된 IRI에 고정한다. 위 표에서 BFO 2020 용어를 읽어 내고 — 물질적 실체(material entity)는
obo:BFO_0000040— 그것이 살아 있는지 확인합니다(BFO/OBO 용어는 OLS4에, IOF 용어는 GitHub 릴리스에 대조합니다. OLS가 IOF를 호스팅하지 않기 때문입니다). - 이미 존재하는 가장 구체적인 단에서 BFO → IOF → 도메인 → bp 스택을 따라
rdfs:subClassOf를 주장한다.bp:Batch를 곧장 BFO에 잇는 대신, BFO 기반을 이미 지니고 있는 중간 계층 용어 —iof:MaterialArtifact(그 자체로 BFO 물질적 실체 아래의 IOF 물질적 산물) — 에 붙입니다. 그러면 임포트 시에 간선 하나가 사슬 전체를 사 줍니다. 가장 구체적인 단이 없는 곳에서는(맨iof:Specification은 없음), 유의어를 주조하는 대신 가장 가까운 실재 용어(iof:RequirementSpecification)로 내려가고 그 간극에 플래그를 답니다.
이 네 가지 물음을 견뎌 내는 배치는 정확히 하나의 칸에 떨어지고 그 위의 모든 것을 거저 물려받습니다. bp:CellCultureProcess에 같은 절차를 돌리면 1단계의 "그것은 일어난다"에서 멈추고 iof:ManufacturingProcess에 고정됩니다.
짚어 둘 가치가 있는 간극이 하나 있는데, 대부분의 도입이 바로 여기서 걸려 넘어지기 때문입니다. rdfs:subClassOf iof:MaterialArtifact를 주장하면 다른 팀의 IOF 인식 도구가 맞춰 볼 수 있는, 실재하고 공유된 IRI를 얻게 됩니다 — 하지만 그것만으로는 추론기가 bp:Batch를 BFO 물질적 실체라고 결론짓게 하지 못합니다. iof:MaterialArtifact에서 BFO로 올라가는 사슬은 IOF 온톨로지 안에 들어 있고, 정렬 파일은 그것을 적재하지 않기 때문입니다. 그 주장을 추론으로 바꾸려면 IOF 코어를 owl:imports해야 하며 — IOF 코어는 그 자체로 BFO 2020을 임포트합니다 — 그러면 추론기가 여러분의 용어를 스택 전체를 거쳐 분류하고 그에 비추어 일관성을 검사합니다. BFO(그리고 그것이 기반을 이루는 OBO/IOF 스택)는 공개 라이선스로 배포되므로, 그것을 임포트하고 재배포하는 데 라이선스 비용이 들지 않습니다 — 바로 그래서 "이미 존재하는 것 위에 서는" 일이 실제로 공짜인 것이며, 재사용 조사는 라이선스와 임포트 비용을 명시적인 선정 기준으로 따져 봅니다.
IOF는 코어 이상이기도 합니다. 그것은 도메인 모듈들을 함께 제공하며, 바이오제약(biopharma) 모듈은 생각보다 충실합니다. 공개된 릴리스(Release_202602)에 직접 비추어 감사해 보면, 이 모듈은 바이오제약 모듈 전반에 걸쳐 171개 클래스를 정의하고 — 전부 Released로 표시되어 있으며(잠정[provisional]이 아닙니다) — 그중 44개가 단위공정 클래스, 17개가 품질 설계 기반(Quality-by-Design, QbD) 파라미터 클래스이며(여기에 장비·물질·레시피 용어가 더해집니다), 실행 예제는 그중 20개를 재사용합니다. 곧 실행 예제가 소비하는 27개의 별개 IOF 클래스는 7개 코어 + 20개 바이오제약이며, align.ttl에 기록되어 있습니다. 바로 그 감사가 표준 장과 the-ontologies-in-use가 인용하는 단일 진실 출처이므로, 세 장의 수치가 일관되게 유지됩니다. 그래서 실행 예제는 내부 전체에 걸쳐 실재하고 검증된 IOF 용어를 새로 주조하는 대신 재사용합니다. 장비와 레시피에는 iof:Bioreactor, iof:ChromatographyColumn, iof:MasterRecipe를, 단위공정에는 iof:CaptureStep, iof:ViralClearance, iof:ViralInactivation, iof:ViralFiltration, iof:PolishingProcess, iof:DrugProductFormulationProcess를, 세포주와 그것이 유래한 클론에는 iof:CellLine과 iof:ClonedCellLine을, QbD 골격에는 iof:QualityAttribute, iof:ProcessParameter, 그리고 정상운전범위(NOR)·입증가능허용범위(PAR) 표현 — QbD가 각 공정 파라미터 둘레에 정의하는 운전 창 — 을 씁니다.
IOF에 정착된 용어가 정말로 없는 곳에서는, 정렬이 그 간극을 덮어 가리지 않고 정직하게 둡니다. 맨 iof:Specification 클래스는 없으므로(그래서 bp:Specification은 iof:RequirementSpecification에 정렬합니다), 그리고 충전·마감(fill-finish)이나 무균충전, 동결건조 클래스는 아예 없으므로 bp:FillFinishProcess는 플래그가 달린 지역 클래스로 남습니다. 실행 예제는 둘 다 합니다 — align.ttl은 IOF 바이오제약 용어를 재사용하고, 동반 파일 bioproc-imports.ttl은 실제 owl:imports를 담습니다 — 그러면서도 오프라인 검증기는 외부 스택을 가져오지 않고도 증명할 수 있는 범위로 한정해 둡니다. 정직한 한 줄 요약: 정렬은 공유 어휘를 거저 안겨 주지만, 온톨로지 간 추론은 임포트해야 비로소 얻습니다.
관계 또한 척추의 일부다
상위 온톨로지는 대상의 종류뿐 아니라 그것들 사이의 관계도 표준화하며, 그것을 제대로 하는 일은 그에 못지않게 중요합니다. 생의학 공동체는 일찍이 관계 온톨로지(Relation Ontology, RO)에 이를 적어 두며, 일부이다(part of), 참여한다(participates in), 참여자로 가진다(has participant), 관한 것이다(is about), 유래한다(derives from) 같은 관계도 클래스만큼 신중하게 정의되어야 하며 그렇지 않으면 두 온톨로지가 "일부이다"를 서로 다른 두 의미로 쓰게 된다고 주장했습니다 [4]. BFO는 중추가 되는 관계들을 공급합니다. 지속체는 발생체에 참여하고(배치가 세포 배양 운전에 참여), 성질은 지속체에 내속하며(순도가 로트에 내속), 역할은 공정에서 실현됩니다(is realized in). 그 중추 관계 하나하나는 정렬이 고정하는 실재하는 RO 또는 BFO 용어이지 헐거운 영어가 아닙니다. 곧 참여한다(participates in)는 obo:RO_0000056, 참여자로 가진다(has participant)는 그 역인 obo:RO_0000057, 산출물로 가진다(has output)는 obo:RO_0002234, 내속한다(inheres in)는 BFO 2020 관계 obo:BFO_0000197, 실현된다(realized in)는 obo:BFO_0000054, 일어난다(occurs in)는 obo:BFO_0000066입니다. 우리의 일꾼 derivedFrom — 머리말에서 나온 계보 간선 — 은 이 중추 위에 깔끔하게 얹히는 도메인 관계로, 하나의 물질적 실체를 그것이 비롯된 부모 물질에 잇습니다. 그것은 rdfs:subPropertyOf obo:RO_0001000('유래한다')으로 선언되고, 비롯됨은 진정으로 연쇄 가능하므로 owl:TransitiveProperty로도 선언됩니다(A가 B에서 유래하고 B가 C에서 유래하면, A는 C에서 유래합니다) — 그것이 바로 하나의 SPARQL(RDF 그래프를 위한 질의 언어) (bp:derivedFrom)+ 걷기가 — 여기서 +는 "이 간선을 한 번 이상 따라가라"는 뜻입니다 — 원료의약품 로트의 물질 계보 전체를 세포 은행(캠페인 전체가 거슬러 유래하는, 동결 보관된 세포 원종)까지 거슬러 복원하게 해 주는 것이며, 역량 질문 CQ-01과 계보 장의 뒤에 있는 질의입니다. 그것을 명확한 정의와 함께 한 번 선언해 두는 것이야말로, derivedFrom, madeFrom, comesFrom이 아무도 교차 질의할 수 없는 세 개의 반쪽짜리 유의어로 불어나는 것을 막아 줍니다.
미해결 과제: 공유된 척추는 필요조건일 뿐 충분조건은 아니다
이 모든 것을 "BFO를 채택하면 의미 문제가 해결된다"로 읽고 싶어집니다. 그렇지 않으며, 그 간극은 정확히 짚어 둘 가치가 있습니다. 공유된 상위 온톨로지는 독립적으로 만들어진 두 온톨로지가 구조적으로 호환됨을 보장합니다 — 둘 다 공정이 발생체이고 순도가 성질이라는 데 동의한다는 것이죠. 하지만 같은 공장을 마주한 두 모델러가 같은 선택을 하리라는 것은 보장하지 않습니다. 한 사람은 "수확(harvest)"을 공정으로 모델링하고, 다른 사람은 그 결과로 생기는 물질로 모델링할 수 있으며, 둘 다 BFO에 적합하면서도 여전히 서로 맞아떨어지지 않을 수 있습니다. 구조의 호환성은 내용의 합의가 아닙니다. 실행 예제는 바로 이 갈림길을 축소판으로 보여 줍니다. 이 책은 정제된 수확물(clarified harvest)인 bp:CLAR-001을 물질적 실체(포집으로 흘러가는 정제된 배양액)로, 그것을 산출하는 별도의 bp:HARV-001을 공정으로 모델링합니다 — 하지만 완벽히 BFO에 적합한 동료라면 "수확"을 공정만으로 모델링하고 물질은 전혀 붙이지 않을 수도 있으며, 두 그래프 모두 모든 일관성 검사를 통과하면서도 솔기에서는 맞아떨어지기를 거부할 것입니다. 척추는 불가능한 것을 금지할 뿐, 그저 다른 것을 입법하지는 않습니다.
더 나쁘게도, 이 추상화에는 이 분야가 공공연히 논쟁하는 실질적인 비용이 따릅니다. 모든 실체를 척추 위에 올바르게 분류하는 데는 진정한 온톨로지 전문성이 필요합니다 — 지속체/발생체의 선은 이론에서는 날카롭지만 실무에서는 미끄럽습니다("배치"는 물질인가, 기록인가, 진행 자체인가? 정직한 답은 "세 개의 서로 다른 실체"이며, 이는 대부분의 프로젝트가 예산을 잡는 것보다 더 많은 작업입니다). 과잉 모델링은 그 나름의 실패입니다. 사소한 모든 것이 역할과 성향으로 분해된 그래프는 쓸 수 없게 됩니다. 그러므로 상위 척추는 토대일 뿐 완성된 건물이 아닙니다. 그것은 비호환성과 조용한 오류의 전체 범주를 미리 막아 줍니다 — 그것만으로도 큰일이죠 — 하지만 같은 클래스를 고르고, 유용한 깊이에서 모델링을 멈추는 규율은 여전히 인간의 실천으로 남으며, 이 책은 모델 거버넌스와 최종 평가에서 그 문제로 되돌아옵니다. BFO는 어떤 종류의 대상이 존재하는지는 알려 주지만, 여러분의 동료가 수확을 여러분과 똑같은 방식으로 모델링했다고는 알려 주지 못합니다.
왜 중요한가
이 책의 이후 모든 장은 새로운 실체에 이름을 붙입니다 — 표적, 설계 공간, 크로마토그래피 풀, 출하 규격 — 그리고 그 하나하나가 이 척추 위에 놓이게 됩니다. 그 작업을 하는 이유는 지렛대 효과입니다. BFO에 고정된 용어는 단 하나의 맞춤 어댑터 없이도 지상의 모든 다른 BFO 기반 온톨로지와 상호운용 가능하며, 이는 FAIR 원칙의 약속 전체를 구조로 구현한 것입니다. 척추를 건너뛰면, 한 프로젝트 안에서만 작동하고 다른 어디서도 작동하지 않는 어휘 체계를 얻게 됩니다 — 사적인 방언의 함정을, 더 값비싼 재료로 다시 지은 셈이죠.
실제 현장에서는
BFO의 도달 범위는 희망 사항이 아닙니다. 그것은 OBO 파운드리 생의학 온톨로지의 상당 부분 아래에 깔린 상위 온톨로지이고, ISO/IEC 표준이며, 산업 온톨로지 파운드리가 제조를 위해 — 이 책이 모델링하는 것과 같은 단일클론항체 라인을 겨냥한 바이오제약 온톨로지를 포함하여 — 선택한 기반입니다 [1][5]. 실무에서 여러분이 날것의 BFO에 대고 실체를 손으로 분류하는 일은 드뭅니다. 이미 그 일을 해 둔 도메인 온톨로지를 가져다 쓰고, 정렬을 검사해 줄 수 있는 Protégé 같은 편집기에서 지역 용어를 저작하죠. 척추는 일상적인 사용에서는 대체로 보이지 않습니다 — 글을 쓰는 동안 품사가 보이지 않는 것과 똑같이, 모든 문장에 존재하지만 문법적으로 무언가 잘못되었을 때에야 비로소 눈에 띕니다.
핵심 용어
- 상위(기초) 온톨로지(upper / foundational ontology) — 가장 일반적인 범주들로 이루어진 작고 도메인 중립적인 어휘 체계로, 도메인 온톨로지들이 그 위에 쌓아 호환성을 유지함.
- 기초 형식 온톨로지(Basic Formal Ontology, BFO) — 과학과 산업 전반에서 쓰이는 표준화된 상위 온톨로지(ISO/IEC 21838-2).
- 지속체(continuant) — 전체로서 시간 속에서 지속되며 존재하는 매 순간 온전히 존재하는 실체(세포, 용기, 로트, 순도, 역할).
- 발생체(occurrent) — 일어나며 시간 속에서 전개되고 시간적 부분을 지니는 실체(발효, 포집 단계, 캠페인).
- 독립적 지속체 / 물질적 실체(independent continuant / material entity) — 생물반응기나 원료의약품 로트처럼 그 자체로 존재하는 대상.
- 특정적 의존 지속체(specifically dependent continuant) — 오직 다른 무언가에 내속함으로써만 존재하는 성질(단량체 순도)이나 실현 가능한 실체(역할, 성향, 기능).
- 일반적 의존 지속체(generically dependent continuant) — 레시피, 마스터 배치 기록, 규격, 분석 성적서처럼 복제 가능한 정보.
- IOF 코어(IOF Core) — 도메인 온톨로지가 특화할 수 있도록 공유 개념(장비, 물질, 공정)을 공급하는 BFO 기반 중간 계층 제조 온톨로지.
- OBO 파운드리(OBO Foundry) — 조율되고 원칙에 기반한 온톨로지로 산업용 대응물에 영감을 준 생명과학 공동체.
- 관계 온톨로지(Relation Ontology, RO) — 관계(일부이다, 참여한다, 유래한다)가 온톨로지 전반에서 같은 의미를 갖도록 클래스만큼 신중하게 정의하려는 노력.
- IRI(국제화 자원 식별자, Internationalized Resource Identifier) — 용어에 이름을 붙이는 전 세계적으로 유일한 웹 주소로, 두 시스템이 영어 라벨을 비교하는 대신 같은 IRI를 가리킴으로써 의미에 합의함.
- SEC(크기 배제 크로마토그래피, size-exclusion chromatography) — 분자를 크기로 분리하는 분석법. SEC %단량체는 온전한 단일 분자 제품의 비율을 보고함.
- SPARQL — RDF 그래프를 위한 질의 언어.
(predicate)+경로는 관계를 한 번 이상 따라 걷습니다. - 그라운드 트루스(ground truth, AI를 위한) — 학습 모델이 닻을 내리는 검증되고 분류된 사실. 여기서는 지식 그래프와 그 아래의 BFO 척추로, 유창한 모델이 공급하지 못하는 실질을 공급함.
- 배치 하나 빼기 / 그룹화 분할(leave-one-batch-out / grouped split) — 한 배치의 모든 행을 학습 또는 시험에 온전히 두는 검증 방식. 독립적이지 않은 형제 로트를 찾아내는 계보
(bp:derivedFrom)+걷기가 정직한 학습/시험 폴드의 그룹 키가 됨.
다음 이야기
이제 우리는 척추를 갖추었습니다. 모든 용어가 매달리는 범주들과 그것들을 잇는 관계들이죠. 다음 장 클래스, 관계, 공리: 어휘 체계 짓기는 상위 범주에서 실제 저작 행위로 내려갑니다 — Batch 클래스, derivedFrom 관계, 그리고 헐거운 어휘 체계를 추론기가 검사하고 확장할 수 있는 무언가로 바꿔 주는 공리를 정의하죠. 우리는 어떤 종류의 대상이 존재하는가에서 그것을 어떻게 적어 두는가로 옮겨 갑니다.