본문으로 건너뛰기

형식화: 공리, 제약, 그리고 프로파일의 한계

📍 현재 위치: 제4부 · 형식화 — 개념적 클래스와 관계를 추론기가 실제로 작동시키는 형식적 OWL 2 공리로 바꿉니다. 방법론은 SAMOD이며, 그 테스트 우선 루프는 각 공리가 우리가 돌릴 수 있는 역량 질문에 봉사할 때에만 자리를 얻는다고 말합니다.

분류 체계(taxonomy)는 명사들을 위아래로 늘어놓은 목록입니다. 온톨로지는 명사들의 목록에, 기계가 그것들 위에서 추론하게 해 주는 규칙을 더한 것입니다 — 그리고 이 장은 다른 모든 것이 거기에 매달리는 모델의 일부, 즉 세포 은행 계통과 mAb(단클론 항체, monoclonal antibody) 캠페인의 정제 계보에 대해 그 규칙이 작성되는 곳입니다. 우리는 클래스와 분류 체계관계와 계보에서 이미 개념화된 클래스와 관계 — WorkingCellBank과 그 마스터·연구 계층, 얼린 바이알에서 바이알에 담긴 의약품 완제품까지 내려가는 derivedFrom 사슬 — 를 가져와, 그것들에 이빨을 달아 주는 OWL 2(웹 온톨로지 언어, Web Ontology Language) 공리를 더합니다: 서브클래스 상속, 타이핑 규칙으로서의 정의역과 치역, 계통을 위한 전이성, 이중 입력된 출처 기록을 잡아내는 함수형 속성, 세포 은행 완전성을 위한 존재 및 기수 제약, 그리고 배치 추적성 — 어떤 로트든 그 계보를 거슬러 세포 은행까지 따라가, 리콜 범위를 잡고 감사하는 능력 — 을 망가뜨리는 범주 오류를 막는 disjointness입니다. (이 제조 용어들이 낯설다면 — 세포 은행, 얼린 바이알, 시드 트레인, 생물반응기, Protein A 포획, 연마, UF/DF, 원료의약품 대 의약품 완제품 — 제1권이 세포에서 바이알까지의 물리적 사슬 전체를 평이한 언어로 짚어 갑니다: 바이오의약품이란 무엇인가엔드 투 엔드 바이오프로세싱 개요를 보십시오.) 또한 우리가 원하지만 가질 수 없는 단 하나의 규칙 — 전이성에 대한 프로파일 한계 — 과도 마주치며, 이를 정직하게 이름 붙입니다. 제조 그래프의 뿌리에서 그것을 못 본 척하는 것이야말로, 모델이 조용히 신뢰할 수 없게 되는 길이기 때문입니다.

쉽게 말하면

빵집의 사워도우 스타터는 모든 빵 덩어리의 조상이고, 주방 검사관은 매번 요청받지 않아도 상시 규칙을 집행합니다: "모든 워킹 단지는 정확히 하나의 마스터 단지에서 내려온다"(함수형 속성), "단지는 결코 빵을 굽는 오븐이기도 하지 않다"(disjointness), "이 빵이 저 단지에서 왔고 저 단지가 마스터에서 왔다면, 이 빵은 마스터에서 온 것이다"(전이성), "품질 검사 기록이 하나 이상 없는 워킹 단지는 선반을 떠날 수 없다"(기수). 클래스와 인스턴스는 형태와 사물을 줍니다. 공리(axiom)는 기계가 계보 전체를 스스로 검사하고 확장하게 해 주는 상시 규칙이어서 — 추론기는 누가 중간 고리를 일일이 적어 두지 않아도 어떤 빵이든 그 스타터까지 추적할 수 있습니다. 다만 한 가지 규칙, 즉 계보가 결코 순환하지 않는다는 규칙만큼은 검사관이 이 언어로 표현할 수 없으므로 — 우리는 그것을 두 번째 검사관 — SHACL, 셰이프 제약 언어(Shapes Constraint Language, 셰이프 검증 언어) — 에게 넘기고, 그 사실을 소리 내어 밝힙니다.

질문에서 출발하라

공리는 장식이 아닙니다. 각각은 실제 세포 은행, 실제 배치, 실제 계보에 대해 역량 질문(competency question)을 답할 수 있게 만들기 위해 여기 있습니다. 이 장을 지배하는 CQ는 넷이며, 각각은 그 구조적 표면 뒤에 제조 질문을 품고 있습니다. CQ-22는 장거리 전이적 derivedFrom 간선이 추론되는지, 그리고 장비가 BFO(기초 형식 온톨로지, Basic Formal Ontology) 물질 존재로 추론되는지를 묻습니다 — 이는 그래프가 누구의 손으로도 간선을 단언하지 않고 원료의약품 DS-001을 워킹 세포 은행까지 거슬러 추적할 수 있는가?를 형식적으로 묻는 방식입니다. CQ-23은 disjointness 가드가 심어 둔 혼동을 잡아내는지 묻습니다 — 순진한 다중 출처 적재가 "배치는 곧 런이다" 또는 "배치는 곧 생물반응기다"라는, 계통을 조용히 망가뜨리는 두 오류를 몰래 들여올 수 있는가? CQ-17은 워킹 세포 은행이 세포 은행 게이트에 부합하도록 충분히 특성 규명되었는지 묻습니다 — 이 은행은 실제로 캠페인에 투입해도 안전한가: 동일성, 무균성, 바이러스 안전성, 유전적 안정성이 모두 기록에 있는가? 그리고 CQ-18은 은행이 검증된 계대 한계 안에 있는지 묻습니다 — 세포가 너무 오래 자라서 생산성이나 산물 품질이 표류했을 수 있는가? 이 넷을 붙들어 두십시오. 아래의 모든 공리 블록은 그중 하나를 가리키며, 각각은 품질 부서(출하를 담당하는 품질 관리/QA 기능)가 그러지 않으면 스프레드시트 고고학으로 답해야 할 질문입니다.

이 장이 설치하는 일곱 공리 계열과, 각각을 궁극적으로 집행하는 주체는 산문보다 표로 붙들어 두기가 더 쉽습니다. 지금 한 번 지도로 읽고, 마지막에 다시 체크리스트로 읽으십시오:

공리 계열대상(속성 / 클래스)OWL 구문봉사하는 CQ집행 주체
서브클래스 / 타이핑derivedFrom, 출하 속성rdfs:subClassOf, rdfs:domain/rdfs:rangeCQ-22OWL-RL 폐쇄
전이적 등뼈derivedFrom, contains, hasTemporalPartowl:TransitivePropertyCQ-22OWL-RL 폐쇄
함수형 / 중복 제거createdBy, hasHostOrganism, hasCloneowl:FunctionalProperty출처 무결성전체 DL 추론기
존재 제약CellLineowl:someValuesFromCQ-17전체 DL 추론기
한정 기수WorkingCellBankowl:minQualifiedCardinalityCQ-17SHACL 세포 은행 게이트
disjointness 가드Material/Equipment, Batch/CellCultureProcess, RCB/MCB/WCBowl:disjointWith, owl:AllDisjointClassesCQ-23SHACL (owlrl은 로깅하지만 파이프라인이 버린다)
프로파일 한계(쓸 수 없는 그 하나)derivedFrom 비순환성비반사적/비대칭 — 금지됨계보 비순환성SHACL / ETL 관례

맨 오른쪽 열이 이 장의 조용한 논지입니다: 공리는 의도를 서술하지만, 이 그래프 위에서는 세 개의 서로 다른 엔진(실행 가능한 파이프라인이 탑재하는 오픈소스 OWL-RL 규칙 추론기, Protégé의 HermiT 같은 더 무거운 전체 DL 추론기, 그리고 SHACL 셰이프 검증기)이 실제로 선을 지키며, 그중 어느 것인지를 아는 것이 스스로를 방어하는 모델과 그저 그래 보이기만 하는 모델 사이의 차이입니다.

요구사항에서 공리를 어떻게 쓰는가. 역량 질문이 짧고 반복 가능한 규율로 저작되는 것(명세CQ-04를 네 단계로 따라갑니다)과 꼭 마찬가지로, OWL 공리도 그러합니다 — 그리고 두 절 아래에 등장하며 CQ-23을 뒷받침하는 Batch owl:disjointWith CellCultureProcess 가드에 대해, 그것을 한 번 공개적으로 해 보일 가치가 있습니다:

  1. 제약을 먼저 말로 서술하라. 배치는 런에서 나온 물리적 물질이지, 결코 런 자체가 아니다. 공장 현장에서는 둘 다 "BATCH-2026-001"이라는 이름을 공유하며, 바로 그 때문에 순진한 다중 출처 적재가 둘을 융합합니다 — 그러니 이 제약은 가상이 아니라 실재하고 되풀이되는 실패입니다.
  2. 그것을 말하는 OWL 구문을 고르라. 두 클래스는 상호 배타적인 형제bp:Batch는 물질 존재, bp:CellCultureProcess는 BFO 프로세스 — 이므로, 구문은 서브클래스 고리나 기수가 아니라 (이항 쌍에 대한) owl:disjointWith입니다. 구문을 고르는 것은 보장의 형태를 고르는 것입니다: disjointness는 "어떤 개체도 둘 다일 수 없다"를 단언하며, 그것이 바로 금지하려는 융합입니다.
  3. 실제 IRI(전역 고유 식별자)에 대고 그것을 쓰라. bp:Batch owl:disjointWith bp:CellCultureProcessbioproc.ttl의 한 줄로, 질문이 이미 이름 붙인 용어를 사용합니다.
  4. 그것이 뒷받침하는 CQ에 이름 붙이고 누가 집행할지 정하라. 그것은 CQ-23을 뒷받침합니다. 전체 DL(서술 논리, description-logic) 추론기라면 두 클래스 모두로 유형 지어진 노드를 곧장 비일관적이라고 보고하겠지만 — 실행 가능한 파이프라인은 OWL-RL로 추론하며, OWL-RL은 그 충돌을 드러내지 않고 로깅하므로(아래 OWL-RL이 집행하는 것 참조), 집행하는 산물은 닫힌 세계의 SHACL bp:BatchNotProcessShape이고, validate.pyguards_catch 시나리오는 그 혼동을 심어 두고 셰이프가 비부합을 보고할 때에만 통과합니다. 추론기냐 SHACL이냐를 정하는 것이 이 그래프 위에서 어떤 공리든 저작하는 마지막 단계이며, 위의 일곱 계열 표가 그 선택을 하나하나 기록합니다.

그 네 단계 움직임 — 말, 구문, IRI, 집행자 — 이 아래의 모든 공리 블록이 쓰인 방식입니다. 이 장의 나머지는 전이성, 함수형 속성, 제약, 그리고 프로파일 한계에 걸쳐 똑같은 절차를 되풀이한 것입니다.

형식화: 규칙으로서의 서브클래스와 정의역/치역

가장 값싼 공리가 실제 일을 합니다. rdfs:subClassOf는 한 클래스가 다른 클래스의 일종이라고 말하므로, 부모에 대해 참인 어떤 사실이든 상속됩니다 — bp:WorkingCellBank rdfs:subClassOf bp:CellBank rdfs:subClassOf bp:Material을 선언하면 워킹 은행은 자동으로 derivedFrom 간선과 출하 상태를 지닐 수 있는 물질이 되며, 그 제약은 일반 클래스에서 한 번만 서술됩니다. 정의역과 치역은 그다음 한 속성이 무엇을 연결할 수 있는지를 고정하며, 이는 문서가 아니라 규칙입니다: 간선을 단언하면 추론기가 그 양 끝을 타이핑합니다.

# bioproc.ttl — derivedFrom: a transitive object property with domain and range as typing rules.
bp:derivedFrom a owl:ObjectProperty , owl:TransitiveProperty ;
rdfs:label "derived from" ;
rdfs:domain bp:Material ; rdfs:range bp:Material ;
skos:definition "Relates a material to the parent material it originated from; transitive, so lineage is inferable to any depth." .

bp:derivedFrom의 치역이 bp:Material이기 때문에, BATCH-2026-001 derivedFrom X라고 쓰면 X가 물질임이 추론됩니다 — 그래서 다중 출처 적재 중에 운영자 ID나 용기가 부모 자리에 끼어들고 그것이 이미 bp:EquipmentPerson으로 선언되어 있다면, 아래의 disjointness가 그래프를 모순되게 만들어 그 잘못된 간선이 계보를 조용히 오염시키는 대신 잡히게 됩니다. 느슨한 간선이 타이핑된 간선이 되고, 타이핑은 제품의 규제 수명 동안 유지되어야 하는 계통에서 첫 번째 방어선입니다.

이것은 또한 고전적인 정의역/치역 함정이며, 이름 붙일 가치가 있습니다: rdfs:range는 잘못된 객체를 거부하지 않고 재타이핑합니다. BATCH-2026-001 derivedFrom Analyst-AB를 단언해도 추론기는 항의하지 않으며 — 열린 세계 가정 아래에서 추론기는 치역을 위반할 제약이 아니라 적용할 타이핑 규칙으로 다루므로, 그 분석가가 bp:Material임을 조용히 추론하고, 거부되지 않은 진술을 오류가 아니라 참일 수도 있는 것으로 가정합니다. 그 오류가 시끄러워지는 것은 오직 bp:Material이 사람, 용기, 또는 런이 이미 속한 범주와 disjoint로 선언되었기 때문입니다. 그 모순이 바로 disjointness 가드가 그다음에 잡아내는 것입니다. 치역 단독이 아니라 추론과 disjointness가 함께 문을 닫습니다.

형식화: 전이적 등뼈 — 그리고 프로파일의 한계

전이성은 이 책에서 가장 값진 단 하나의 공리입니다. 디지털 스레드의 약속 전부 — 어떤 로트든 그 세포 은행까지 추적하고, 어떤 리콜이든 그 후손들로 범위를 잡는 것 — 가 그 위에 놓여 있기 때문입니다. bp:derivedFrom에 붙은 owl:TransitiveProperty는 어떤 추론기에게든 POLpool-001 derivedFrom VFpool-001이고 VFpool-001 derivedFrom VIpool-001이면 POLpool-001 derivedFrom VIpool-001임을 — 그리고 한 홉 한 홉 이어가 DS-001 derivedFrom WCB-CHO-001이고 위로 연구 은행 RCB-CHO-001까지임을 알려 줍니다. 직접 부모 간선만 서술됩니다: 시드 트레인이 은행에서 나오는 첫 간선을, 생물반응기가 그다음을, 포획·연마·UF/DF가 나머지를 깝니다. 이 단계들 각각 — 시드 트레인, 생산 생물반응기, 포획연마 크로마토그래피, 그리고 UF/DF — 은 제1권에서 설명하는 물리적 단위 조작이며, 여기서는 계보 위의 한 노드일 뿐입니다. 이 실행 예제의 계보는 열한 개 물질 깊이이므로, DS-001의 열한 조상은 누구도 단 하나의 장거리 고리를 단언하지 않아도 도달됩니다 [1]. 이것이 바로 계보 질문이 원료의약품에서 얼린 바이알까지 의미의 단 한 홉으로 닿게 해 주는 것입니다 — 세포 은행은 제조 계통이 시작되는 곳이고, 전이성은 그 시작을 하류 어디에서든 도달 가능하게 만드는 것입니다.

포장 위계는 bp:contains로, 캠페인 수준 occurrent는 bp:hasTemporalPart로 평행하게 다뤄집니다 — 세 개의 전이적 속성이 저마다 다른 도달 범위를 추론 가능하게 만들며, 담음(containment)을 계보에서 의도적으로 분리한 것 자체가 하나의 모델링 약속입니다:

# bioproc.ttl — two more transitive properties; containment is deliberately NOT lineage.
bp:hasTemporalPart a owl:ObjectProperty , owl:TransitiveProperty ; rdfs:label "has temporal part" ;
rdfs:domain bp:Process ; rdfs:range bp:Process ;
skos:definition "Relates a campaign-level occurrent to the sub-processes it spans." .
bp:contains a owl:ObjectProperty , owl:TransitiveProperty ; rdfs:label "contains" ;
rdfs:domain bp:Package ; rdfs:range bp:Material ;
skos:definition "The packing containment hierarchy (carton contains vials, case contains cartons, pallet contains cases). DELIBERATELY NOT a sub-property of derivedFrom: containment is mutable and is not lineage." .

저 마지막 주석은 실제 바이오프로세스 작업을 하고 있습니다. 바이알은 카톤에 담기지만, 카톤은 바이알이 온 곳이 아닙니다 — 포장은 가변적이고 되돌릴 수 있으며, 계통은 영구적이고 방향이 있습니다. 둘을 한데 접으면 재포장 사건이 파생인 척할 수 있게 되어, 전이성이 계산하기 위해 존재하는 바로 그 리콜 범위를 오염시킵니다. bp:containsderivedFrom 등뼈에서 떼어 두는 것이, 모델이 "현재 같은 상자에 들어 있음"과 "에서 내려옴"을 혼동하기를 거부하는 방식입니다.

이제 우리가 원하지만 쓸 수 없는 규칙입니다. 우리는 bp:derivedFrom비반사적(irreflexive)(어떤 물질도 자기 자신에서 파생되지 않음)이고 비대칭(asymmetric)(DS-001이 세포 은행에서 파생되면 세포 은행은 DS-001에서 파생되지 않음)이기를 바랍니다 — 이 둘을 합치면 계보의 순환이 표시되는 모순이 되어, 하나의 도메인 사실, 즉 계보 간선은 오직 시간상 뒤쪽, 더 이른 물질을 향해서만 가리킨다는 사실의 형식적 서술이 됩니다. 그러나 bp:derivedFrom은 이미 전이적이고, 전이적 속성은 비단순(non-simple)합니다. OWL 2 DL의 단순 역할(simple role)에 대한 전역 제약 — DL의 결정 가능성을 지키는 SROIQ 논리의 구조적 제약 — 은 bp:derivedFrom 같은 비단순 속성이 owl:IrreflexivePropertyowl:AsymmetricProperty를 함께 지니는 것을 금지합니다. 그렇게 하면 온톨로지가 OWL 2 DL 자체의 바깥으로, 더 이상 종료가 보장되지 않는 영역으로 나가기 때문입니다 [2]. 소스 파일은 이 제약을 숨기지 않고 인라인으로 서술합니다:

# bioproc.ttl — the profile constraint, stated where derivedFrom is defined.
# NB: bp:derivedFrom is owl:TransitiveProperty, so OWL 2 DL FORBIDS also typing it asymmetric or
# irreflexive (a non-simple property may not carry those) — lineage acyclicity is therefore a SHACL/
# convention guarantee, not an OWL one. This is a real profile constraint, called out in the chapter.

그래서 계보의 비순환성은 여기서 OWL의 보장이 아닙니다. derivedFrom 사슬이 시간상 뒤로 흐른다는 것은 제조가 어떻게 작동하는지에 관한 도메인 사실이며 — 배치는 자기 자신의 조상이 될 수 없습니다 — 우리는 이를 SHACL과, 간선이 오직 더 이른 물질만 가리킨다는 ETL 관례로 집행합니다. 그 한계에 이름을 붙이는 것은 엄밀하게 모델링하는 일의 일부이지 거기에 붙은 각주가 아닙니다 — 명세가 비기능 요구사항 중에 결정 가능성을 나열한 것은 바로 이 절충이 거짓으로 꾸며지지 않고 존중되게 하기 위해서였습니다. 종료하지 않는 추론기는 출하 결정이 의존하는 그래프 위에서 쓸모없는 것보다 더 나쁘기 때문입니다.

형식화: 중복 제거를 위한 함수형 속성

함수형 속성(functional property)은 주어당 최대 하나의 값을 가집니다 — 그리고 세포주 영역에서 "최대 하나"는 논리적 진실이기 이전에 생물학적 진실입니다. 세포주는 정확히 하나의 형질주입 사건으로 만들어지고, 워킹 은행은 정확히 하나의 선택된 클론에서 내려오며, 세포주는 자신의 산물을 정확히 하나의 숙주 종에서 발현합니다. 세포주 관계 중 셋이 owl:FunctionalProperty를 지니며, 각각은 추론 작업을 합니다: 두 값을 단언하면 추론기는 그것들이 동일한 개체와 owl:sameAs라고 결론짓는데, 이는 한 세포주의 이력을 두 개의 모순된 계통으로 쪼개기 전에 이중 입력된 출처 기록을 잡아내는 내장 중복 제거입니다 [1].

# bioproc.ttl — functional object properties: at most one value per subject.
bp:hasHostOrganism a owl:ObjectProperty , owl:FunctionalProperty ; rdfs:label "has host organism" ;
rdfs:domain bp:Material ; rdfs:range bp:HostOrganism . # functional: a line/bank has exactly one host
bp:hasClone a owl:ObjectProperty , owl:FunctionalProperty ; rdfs:label "has clone" ;
rdfs:domain bp:CellBank ; rdfs:range bp:Clone . # functional: a bank descends from one clone
bp:createdBy a owl:ObjectProperty , owl:FunctionalProperty ; rdfs:label "created by" ;
rdfs:domain bp:CellLine ; rdfs:range bp:Transfection . # functional: a line is created by one transfection

createdBy 함수형 속성은 또한 형질주입을 occurrent로 모델링하여 실제 물질 입력과 출력을 갖게 합니다 — TF-001CONSTRUCT-mAb-A(항체 유전자를 담은 발현 벡터)를 입력으로 받아 CELLLINE-001을 출력으로 산출합니다 — 조작된 벡터를 숙주 세포에 도입해 생산 세포주를 만드는 세포주 개발의 물리적 행위가 제1권의 주제입니다. 세포주는 한 사건 안에서 만들어집니다. 그 사건을 문자열 속성이 아니라 프로세스로 유지하는 것이, 나중에 그래프가 "이 세포주는 어떻게 만들어졌는가?"를 — "그것이 무엇인가?"만이 아니라 — 답할 수 있게 해 줍니다. 그리고 함수형 공리는 그 답이 단일 값임을 보장하므로, 모든 후손 배치의 출처는 분기가 아니라 단 하나의 형질주입으로 귀결됩니다.

아래 세포 은행 제약과의 대조는 의도적이며, 그 자체가 하나의 모델링 결정입니다: bp:hasCharacterization은 함수형이 아닙니다. 워킹 은행은 네 가지 특성 규명 결과 — 동일성, 무균성, 바이러스 안전성, 유전적 안정성 — 를 지니므로 "최대 하나의 값"은 명백히 틀린 것이고, 거기서 올바른 공리는 최대치가 아니라 최소 기수입니다. 출처 고리에는 함수형을, 증거 고리에는 최소-기수를 고르는 것은 똑같은 판단을 정반대 방향으로 두 번 내리는 것이며, 둘 중 어느 하나를 거꾸로 잡는 것이 바로 이 장이 끝에서 다루는 "정확히 하나여야 하는데 하나 이상으로 남겨진 기수" 실패입니다.

형식화: 제약 — 존재 및 한정 기수

서브클래스 고리는 분류 체계를 만들지만, 클래스 제약(class restriction)은 추론기가 집행할 수 있는 필요조건을 만듭니다. 둘이 세포주 영역을 닻으로 붙들고 CQ-17을 뒷받침합니다. 존재 제약(owl:someValuesFrom)은 모든 세포주가 어떤 형질주입의 출력이라고 말합니다 — 형질주입된 적 없는 세포주는 잘못된 것이며, 이는 조작된 생산 세포주가 정의된 유전적 기원을 가져야 한다는 모델의 주장입니다. 한정 최소-기수 제약은 모든 워킹 세포 은행이 올바른 클래스의 특성 규명 결과를 하나 이상 지닌다고 말합니다 — "은행이 특성 규명되었는가?"의 형식적 쌍둥이이며, 이는 은행이 GMP 캠페인의 씨앗이 될 자격이 있는지를 가르는 질문입니다.

# bioproc.ttl — class axioms (full DL; owlrl acts on a subset, a HermiT/ELK reasoner on all).
# Necessary condition: every cell line is the output of some transfection (existential restriction).
bp:CellLine rdfs:subClassOf [ a owl:Restriction ;
owl:onProperty bp:createdBy ; owl:someValuesFrom bp:Transfection ] .
# A working cell bank must bear at least one characterization result (qualified min-cardinality).
bp:WorkingCellBank rdfs:subClassOf [ a owl:Restriction ;
owl:onProperty bp:hasCharacterization ;
owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onClass bp:CharacterizationResult ] .

제약이 요구하는 특성 규명은 일반적인 완전성 필드가 아니라, 규제 당국이 세포 기질에 기대하는 네 가지 증거 뒷받침된 quality이며, 각각은 별개의 재앙을 막습니다: 동일성/인증(identity / authentication) 결과(은행이 당신이 생각하는 그 세포주임), 무균성/마이코플라스마(sterility / mycoplasma) 결과(오염 생물 없음), 외래 인자/바이러스 안전성(adventitious-agent / viral safety) 결과(산물까지 살아남는 바이러스 없음), 그리고 유전적 안정성(genetic stability) 결과(은행화 이후에도 세포주가 여전히 올바른 항체를 발현함). 이 중 어느 하나라도 빠진 워킹 은행은 안전하게 배치의 씨앗으로 삼을 수 없는 은행입니다.

넷 각각은 체크박스가 아니라 알아볼 수 있는 검사 배터리입니다. 동일성/인증(identity / authentication)은 유전자 지문 분석(STR 또는 SNP 프로파일링, 수십 년간 교차오염된 세포주를 폭로한 바로 그 법의학 도구)으로 은행이 조작된 CHO(중국 햄스터 난소, Chinese Hamster Ovary) 세포주이고 그 외 아무것도 아님을 확인합니다. 무균성/마이코플라스마(sterility / mycoplasma)는 약전 무균 시험(USP <71>)과 마이코플라스마 분석(USP <63>)을 짝짓습니다 — 마이코플라스마는 0.2 마이크론 필터가 걸러내지 못하는 조용한 오염원입니다. 외래 인자/바이러스 안전성(adventitious-agent / viral safety)은 in-vitro 및 in-vivo 외래 인자 스크리닝과 레트로바이러스 평가(TEM 입자 계수, 감염성)이며, 이는 하류의 저-pH 유지와 나노여과 장벽이 완성하는 ICH Q5A 안전성 논증의 세포 기질 절반입니다. 유전적 안정성(genetic stability)은 은행화 및 생산 수명 주기의 끝에서도 세포주가 여전히 올바른 전이유전자 서열과 카피 수를 지니고 있음을 확인합니다. 최소-기수 제약은 각각 하나 이상이 기록에 있어야 한다고 말하며, 각 결과가 입증하는 것은 GMP 세포 기질에 대한 ICH Q5A/Q5B/Q5D 기대입니다.

이것들은 열린 세계 가정 아래의 필요조건입니다: 특성 규명이 하나도 기록되지 않은 워킹 은행은 모순이 아니라 "불완전"하며 — 추론기는 그 빈틈을 지어내지 않습니다. 누락된 바이러스 안전성 결과를 완전한 실패로 바꾸고 — 실행 가능한 파이프라인에서 CQ-17을 답하는 — 닫힌 세계 게이트는 SHACL의 출하/세포 은행 셰이프입니다.

실행 예제 위에서 작동하는 공리: 계보 사슬을 따라 인스턴스 DS-001, POLpool-001, VFpool-001이 왼쪽에서 오른쪽으로 단언된 직접 derivedFrom 간선(실선)으로 이어지고, 그것들을 가로질러 전이적-속성 공리로 표지된 추론된 derivedFrom 간선(점선)이 호를 그리며, DS-001 노드는 monomerPct 98.611 타입 리터럴 값을 지니고, 별도의 CellCultureProcess 노드가 다른 색 띠에 놓여 Batch와의 사이에 disjointWith 막대가 그어져 추론기가 잡아낼 모순을 표시하며, 각 간선에는 그것을 지배하는 공리 — 전이, 정의역과 치역, 데이터타입 속성, disjointWith — 가 태그로 붙어 있습니다. 작동하는 공리: 단언된 직접 derivedFrom 간선(실선)은 추론기가 전이성으로 장거리 고리(점선)를 추론하게 하고, 정의역과 치역은 양 끝을 타이핑하며, BatchCellCultureProcess 사이의 disjointness 막대는 "배치는 런이 아니다"를 집행되는 규칙으로 바꿉니다. 저자가 AI의 도움을 받아 직접 제작한 그림입니다.

형식화: disjointness — 추적성을 지키는 범주 가드

disjointness는 배치 추적성을 망가뜨리는 바로 그 혼동을 잡아냅니다 — 그리고 그것들은 가상이 아닙니다. 프로세스 히스토리안과 재고 시스템에서 동시에 끌어오는 순진한 다중 출처 적재는, 셋 모두가 공장 현장에서 같은 이름을 공유하기 때문에, 물질(배치)을 장비(그것을 담았던 생물반응기)와, 또는 프로세스(그것을 생산한 발효 런)와 일상적으로 융합시킵니다. 모델의 최상단에서 BFO 범주들은 쌍별 disjoint로 선언되고, 그 하류에 두 개의 구체적 가드가 자리합니다: 배치는 결코 그것을 생산한 런이 아니며(continuant/occurrent 가드), 물질은 결코 그것을 담았던 용기가 아닙니다(material/equipment 가드) [3].

# bioproc.ttl — disjointness: the continuant/occurrent and material/equipment guards, plus the tier guard.
bp:Material owl:disjointWith bp:Process , bp:Equipment , bp:Quality , bp:RealizableEntity , bp:InformationArtifact .
bp:Process owl:disjointWith bp:Quality , bp:RealizableEntity , bp:InformationArtifact , bp:Equipment .
bp:Batch owl:disjointWith bp:CellCultureProcess .
# A bank belongs to exactly one tier: the three tiers are pairwise disjoint.
[] a owl:AllDisjointClasses ; owl:members ( bp:ResearchCellBank bp:MasterCellBank bp:WorkingCellBank ) .

owl:disjointWith는 이항 경우(MaterialEquipment, BatchCellCultureProcess)를 처리하고, owl:AllDisjointClasses는 세 세포 은행 계층을 하나의 간결한 공리로 처리하여 한 은행이 연구이자 워킹일 수 없게 합니다. 계층 가드는 관료적 정돈이 아닙니다 — RCB / MCB / WCB 위계는 각 계층이 서로 다른 출하 질문에 답하기 때문에 존재하며, 조용히 "둘 다"인 은행은 연구 등급의, 특성 규명이 덜 된 분취액이 출하 준비된 워킹 은행으로 통하게 만들 것입니다. 한 IRI에 두 disjoint 유형을 단언하면 전체 DL 추론기는 그래프가 비일관적이라고 보고합니다 — 이것이 바로 CQ-23이 심어 둔 혼동에 맞서 검사하는 것입니다. 계보의 뿌리에서 배치, 그것을 만든 런, 그리고 그것을 담았던 용기 사이의 차이는 추적 가능한 실타래와 자신만만한 거짓말 사이의 차이이기 때문입니다.

두 가드가 안전한 것은 바로 그것들이 분리하는 범주가 조상과 후손이 아니라 형제이기 때문입니다: bp:Materialbp:Equipment는 각각 rdfs:subClassOf obo:BFO_0000040(BFO 물질 존재(material entity), 독립적 continuant)이므로, 둘을 owl:disjointWith로 선언하는 것은 물질 존재를 "처리되는 것"과 "처리하는 것"으로 나누되 그것들이 공유하는 부모와 모순되지 않습니다. continuant/occurrent 가드는 더 깊이 자릅니다 — bp:Batch는 물질 존재이고, bp:CellCultureProcessobo:BFO_0000015 프로세스(process)(occurrent)이므로 — 그 disjointness는 BFO에서 가장 근본적인 분할을 다시 서술합니다. 배치는 그 런에 참여(participates in)합니다(obo:RO_0000056, "참여한다"); 그것은 결코 런의 시간적 부분이 아닙니다. 그것이 "배치는 그것을 만든 런이 아니다"의 형식적 내용입니다.

이 가드들이 금지하는 혼동은 온톨로지의 진기한 사례가 아니라 — 공장 데이터 표준이 이미 같은 선을 긋는 바로 그 이음매이며, 그래서 그것들을 무시하는 다중 출처 적재는 모든 배치가 남기는 데이터 그림자(data shadow)를 오염시킵니다. 표준 모델은 이미 물질, 장비, 활동을 별개의 객체 클래스로 유지합니다: ISA-95(IEC 62264)는 물질 로트(material lot)장비(equipment) 요소를 별개의 것으로 정의하고, ISA-88/B2MML(표준의 배치 객체를 XML로 직렬화한 것)은 MaterialActual이 그 Equipment가 아닌 배치 기록을 나르며, OPC UA 정보 모델은 용기 노드를 그것을 통해 흐르는 로트와 따로 유형 짓습니다. disjointness 공리는 소스 시스템이 명목상 붙들고 있지만 통합 이음매에서 잃어버리는 구별 — 히스토리안의 용기 태그 BR101과 MES 물질 로트 BATCH-2026-001이 캠페인 이름을 공유한 채 도착하는 그곳 — 의 형식적 재서술입니다. bp:Material/bp:Equipment/bp:Process를 이 표준 객체 모델에 정렬하는 것 — 그래프를 ISA-95와 BFO에 닻 내리는 의미적 상호운용성 작업 — 이, 전송 형식이 관례로만 분리한 것을 그래프에서 가드가 잡아내게 해 주는 것입니다.

OWL-RL이 집행하는 것 — 그리고 집행하지 않는 것

여기에는 모델이 출하 결정에 대해 정직한지를 가르는 경계가 있습니다. 실행 가능한 파이프라인은 전체 DL 추론기가 아니라, 경량 규칙 기반 프로파일인 OWL-RL로 추론합니다. OWL-RL은 전이적 폐쇄와 정의역/치역 타이핑을 계산합니다 — 그래서 CQ-22의 장거리 계보(DS-001WCB-CHO-001RCB-CHO-001에 닿는 것)와 "장비는 BFO 물질 존재다"가 그것에서 곧바로 떨어집니다. owlrl 라이브러리는 OWL-RL disjointness 규칙(cax-dw, cax-adc)을 실제로 구현합니다 — 그것은 Batch/CellCultureProcess와 세포 은행 계층의 충돌을 탐지하고 비일관성 오류로 로깅합니다 — 그러나 그것을 폐쇄 그래프 안의 owl:Nothing이 아니라 오직 자신의 오류 로그(err:ErrorMessage 항목)에만 드러내며, 우리의 validate.py는 그 로그를 결코 읽지 않습니다. 그리고 OWL-RL은 열린 세계 가정 아래에서 추론하므로, 한정 기수 제약은 누락된 특성 규명을 결코 플래그할 수 없습니다 — 결과가 하나도 기록되지 않은 은행은 위반이 아니라 불완전입니다. 그래서 실행 가능한 파이프라인에서 disjointness 충돌과 완전성 빈틈은 둘 다 닫힌 세계의 SHACL 가드로 잡히고, 전체 DL 추론기(Protégé의 HermiT/ELK)라면 disjointness 충돌을 곧장 비일관성으로 보고할 것입니다:

# shapes.ttl — the closed-world guards that catch what OWL-RL does not (the runnable CQ-23 catch).
bp:BatchNotProcessShape a sh:NodeShape ;
sh:targetClass bp:Batch ;
sh:not [ sh:class bp:CellCultureProcess ] ;
sh:message "A Batch (material/continuant) must not also be a CellCultureProcess (occurrent)." .

bp:MaterialNotEquipmentShape a sh:NodeShape ;
sh:targetClass bp:Material ;
sh:not [ sh:class bp:Equipment ] ;
sh:message "A Material (batch/lot/pool) must not also be Equipment (a persisting vessel)." .

분업이 바로 핵심입니다: OWL 공리는 DL 추론기를 위한 의도를 서술하고, SHACL 셰이프는 네트워크 없는 검증기에서 실제로 그 혼동을 잡아냅니다 [4]. 멜빵에 허리띠까지 — 그리고 현장에서 실제로 버텨 주는 것은 허리띠입니다. 실행 가능한 게이트야말로 품질 부서가 그날의 데이터에 대고 실제로 돌리는 것이기 때문입니다. 우리가 disjointness 공리를 여기서 서술하는 것은 형식화가 범주 가드를 선언하는 곳이기 때문이며, 그것을 그날의 적재에 대한 적색-또는-녹색 평결로 바꾸는 실행 가능한 SHACL 게이트는 출하 게이트와 SHACL의 전체 주제입니다. 이 장을 로, 그 장을 어떻게 시끄럽게 실패하는가로 다루십시오.

QbD 연결: 품질 속성에 영향을 주는 프로세스 파라미터

모든 공리가 계보를 지키는 것은 아닙니다. 가장 값진 것 중 하나는 개발 지식을 기록합니다. 프로세스 개발 팀이 확립하려 가장 애쓰는 연결 — 이 핵심 프로세스 파라미터가 저 핵심 품질 속성에 영향을 준다 — 은 구조적으로 보면 또 하나의 저작된 객체 속성입니다. bp:affectsQualitybp:ProcessParameter에서 bp:QualityAttribute로 가며, 일단 선언되면 그러지 않았다면 산문 개발 보고서에 머물렀을 사실이 질의 가능한 간선이 됩니다:

# bioproc.ttl — the Quality-by-Design link as an authored relation.
bp:affectsQuality a owl:ObjectProperty ;
rdfs:label "affects quality" ;
rdfs:domain bp:ProcessParameter ; rdfs:range bp:QualityAttribute ;
skos:definition "The Quality-by-Design link: a critical process parameter affects a critical quality attribute." .

bp:FeedRate bp:affectsQuality bp:MonomerPct-CQA를 단언하면, 낮은 단량체 결과를 쫓는 조사자는 나중에 그래프에 "어떤 파라미터가 단량체 순도에 영향을 주는가?"라고 물어 독서 과제가 아니라 답을 얻을 수 있습니다. 정의역/치역 타이핑은 그 간선을 정직하게 유지합니다 — 오직 파라미터만 영향을 줄 수 있고, 오직 속성만 영향을 받을 수 있으므로 — 그래서 프로세스 개발에서 가장 값진 지식은 계보 등뼈와 똑같은 기계 검증 가능한 규율을 물려받습니다.

이 간선을 짐작이 아니라 품질 설계 기반(Quality-by-Design) 주장으로 만드는 것 — 품질 설계 기반이란 제어되는 각 프로세스 파라미터를, 문서화된 설계 공간 안에서 그것이 움직이는 제품 품질 속성과 연결하는 체계적이고 위험 기반의 개발 접근법입니다 — 은, 양 끝이 단언이 아니라 문서화된 평가에 의해 핵심적(critical)이라는 점입니다. 공급 속도가 핵심 프로세스 파라미터(CPP)인 것은 위험 순위 매기기(ICH Q9)가 그것을 표시했고 실험 계획법 연구가 그것을 입증된 범위 밖으로 움직이면 산물 품질이 바뀜을 보였기 때문이고, 단량체 순도가 핵심 품질 속성(CQA)인 것은 응집이 미용상 속성이 아니라 환자 안전 속성이기 때문입니다 — ICH Q11이 생명공학 원료의약품에 대해 성문화한 CQA/CPP/설계 공간 틀 그대로입니다 [7]. 모델은 그 구별을 명시적으로 지닙니다 — bp:hasCriticalitybp:FeedRate를 CPP로, bp:MonomerPct-CQA를 CQA로 유형 지을 수 있게 합니다 — 그래서 affectsQuality 간선은 설계 공간 작업의 형식적 잔여물입니다: 그 파라미터가 제어되는 것은 설계 공간이 한정하는 속성을 그것이 움직이기 때문입니다. 핵심성 타이핑 없이 간선만 단언하면 상관관계를 기록하지만, 둘 다 단언하면 검토자가 CPP에서 CQA로, 다시 허용 기준으로 추적할 수 있는 관리 전략 결정 — 의약품 품질 시스템(ICH Q10)이 제품 수명주기 전반에 걸쳐 유지하도록 만들어진 관리 전략 — 을 기록합니다 [8].

형식화: 출하 속성이 어디에 범위 지정되는가, 그리고 왜

한 가지 미묘한 공리 선택은 가까이 들여다볼 가치가 있습니다. 물리기 전까지는 보이지 않기 때문입니다: 출하 속성의 범위입니다. 배치는 그 부모로 가는 bp:derivedFrom 간선을 지니지만, 출하 속성 — bp:releaseStatus, bp:monomerPct, bp:hmwPct, bp:cexMainPct — 은 그 정의역이 bp:Batch가 아니라 상위 클래스bp:Material로 설정된 채 선언됩니다. 그 넓이는 의도된 것입니다. 실제로 출하 상태와 SEC 단량체 결과를 지니는 로트는 생물반응기 배치가 아니라 원료의약품과 의약품 완제품 로트 — DS-001과 바이알에 담긴 DP-001 — 이며, 이것들 역시 bp:Material입니다. 원료의약품 DS-001releaseStatus "PASS", monomerPct 98.611, hmwPct 1.287, cexMainPct 70.686을 지닙니다. 이 속성들을 bp:Batch로 좁게 범위 지정했다면 출하된 모든 로트를 배치로 잘못 유형 지정하여, disjointness 가드가 지키는 바로 그 continuant 구별을 무너뜨렸을 것입니다. bp:Material로 범위 지정함으로써, 출하 결과를 단언하면 주어가 물질로 유형 지정되고 출하된 로트는 누가 배치이기를 강요하지 않아도 속성을 상속받습니다. 스키마는 일부러 넓으며, 그 넓이는 출하 게이트가 무엇을 표적으로 삼을 수 있는지에 하류 결과를 갖는 공리 결정입니다.

평가: 공리가 질문을 벌어들이다

validate.pybioproc.ttl + align.ttl + instances.ttl을 파싱하고, OWL-RL 폐쇄를 적용하며, 역량 질문 카탈로그를 돌리고, SHACL 검증을 수행합니다 — 그리고 폐쇄가 형식화가 그 패를 드러내는 곳입니다:

# Real output from validate.py (owlrl OWL-RL closure + SHACL over the running example).
[1] parsed 2120 triples (bioproc + align + instances)
[2] reasoned: 2120 -> 7137 triples after OWL-RL closure
CQ-22 structural PASS transitive lineage + equipment-is-material inferred
CQ-23 structural PASS Batch-as-process and Batch-as-bioreactor both caught

2120에서 7137 트리플로의 도약(각 트리플은 주어-술어-목적어 진술입니다)은 실제 캠페인 위에서 폐쇄가 구조적 작업을 하는 것입니다: 전이적 derivedFrom이 누구도 단언하지 않은 장거리 계보를 제조해 내고 — DS-001이 워킹 은행 WCB-CHO-001과 연구 은행 RCB-CHO-001 모두에 전체 열한 개 물질 사슬을 가로질러 닿으며 — 장비는 BFO 물질 존재로 추론됩니다. 그것이 CQ-22, 통과이며, 디지털 스레드가 어떤 로트든 그 얼린 바이알까지 추적할 수 있다는 형식적 증명입니다. 두 disjointness 가드는 심어 둔 혼동을 거부합니다(conforms False가 SHACL의 평결 — 실행 가능한 포착 — 인 것은 validate.pyowlrl의 비일관성 로그를 들여다보는 대신 SHACL 가드에 의존하기 때문입니다): "배치는 런이다"와 "배치는 생물반응기다" 오류가 둘 다 잡힙니다. 그것이 CQ-23, 통과입니다. CQ-17CQ-18은 세포 은행 게이트와 계대-한계 ASK로 답해집니다: WCB-CHO-001은 자신의 네 가지 특성 규명 — 동일성, 무균성, 바이러스 안전성, 유전적 안정성 — 을 지니고, 계대 수 8로 검증된 한계 40 이내입니다. 넷 모두 성립하며, 우리가 쓸 수 없었던 단 하나의 공리는 거짓으로 꾸며지지 않고 문서화되어 있습니다.

40은 지침에서 뽑아낸 둥근 숫자가 아니라, 이 세포주의 검증된 in-vitro 세포 연령 한계(limit of in-vitro cell age)입니다 — 유전적 안정성 및 생산 일관성 연구(ICH Q5B/Q5D)가 세포를 일상적 생산 범위 너머로 의도적으로 노화시키고도 여전히 올바른 항체를 올바른 품질로 발현함을 보인 계대입니다. CQ-18(은행이 한계 안에 있는가?)과 CQ-17의 유전적-안정성 특성 규명은 따라서 같은 보장을 두 번 본 것입니다: 한계가 의미 있는 것은 안정성 연구가 그것을 인증했기 때문이고, 계대 수가 감사 가능한 것은 그것이 그래프가 기록하는 시드 트레인을 통해 단조적으로 누적되기 때문입니다 — 계대 2의 RCB, 5의 MCB, 8의 워킹 은행, 12의 진탕 플라스크 시드, 16의 시드 생물반응기 — 매 홉이 세대를 더하지만 아직 검증된 천장에 가까운 것은 없습니다.

미해결 과제: 일관된 모델도 살아 있는 뿌리를 여전히 오인식할 수 있다

모든 공리는 추론기가 지켜야 하는 약속이며, 그것은 양날입니다. 풍부하게 제약된 온톨로지는 계산적으로 비싸지거나, 추론이 더 이상 안정적으로 종료하지 않는 결정 가능 OWL 2 프로파일 밖으로 발을 디딜 수 있습니다 [5] — 위의 전이성-프로파일 한계가 구체화한 바로 그 위험입니다. 기술은 정확히 중요한 오류를 잡을 만큼만 공리화하는 것입니다 — 이 그래프의 경우 계보를 오염시키는 범주 오류와 세포 은행 완전성 빈틈 — 그 이상은 아닙니다.

그러나 더 깊은 한계는 추론기가 모델이 일관적(consistent)임을 증명할 뿐, 결코 올바름(correct)을 증명하지 못한다는 것입니다. 방향이 뒤집힌 derivedFrom, 잊혀서 "배치는 런이다" 오류가 빠져나가게 한 disjointness, "정확히 하나"여야 하는데 "하나 이상"으로 남겨진 기수 — 이 모든 것은 완벽하게 일관적이고 완벽하게 틀렸습니다. 그리고 이 특정 그래프의 뿌리에서 일관과 올바름 사이의 빈틈은 생물학적인 것이 됩니다. 세포주는 살아 있습니다: 세대를 거치며 돌연변이하고 표류하는 세포의 집단이어서, 계대 60의 은행은 계대 5의 은행과 유전적으로 동일하지 않으며, 그 어떤 owl:sameAs나 제약도 둘이 "같은 존재"인지를 답할 수 없습니다. 공리는 WCB-CHO-001WCB-CHO-001이라고, 움직이는 집단 위의 안정적인 IRI라고 가정합니다 — 특성 규명으로 한정된 유용한 허구이지, 식별자가 암시하는 또렷한 동일함이 아닙니다.

더 나쁘고 역사적으로 실재하는 것은 오인식(misidentification)입니다: 세포주는 수십 년 동안 생명과학 전반에 걸쳐 혼동되고 교차오염되어 왔습니다. 제조 뿌리 노드에서 그것은 가능한 한 최악의 오류입니다. 완전한 확신을 가지고 단언되고, derivedFrom을 통해 모든 후손 배치로 전파되며, 그 어떤 하류 데이터 무결성도 그것을 잡아내지 못하기 때문입니다 — 모든 하류 사실이 잘못 식별된 뿌리에서 올바르게 유래됩니다. 논리는 정합성을 검사하지 진리를 검사하지 않으며, 바로 그래서 형식화는 생성된 산물이 아니라 검토되고 거버넌스된 인간 실천으로 남고 — 그래서 그래프의 뿌리는 궁극적으로 온톨로지가 기록할 수는 있어도 결코 인증할 수 없는 습식 실험실 인증에 놓입니다.

추론된 그래프는 모델이 학습하는 그라운드 트루스다

이 장의 공리들은 모델이 요구사항 명세서에서부터 명세된 한 가지 용도, 즉 머신러닝의 그라운딩에 조용히 핵심적입니다. 동반 권 바이오제조를 위한 머신러닝과 AI는 그 의존성을 명시합니다 — 온톨로지에 그라운딩된 지식 그래프는 유창한 모델이 딛고 서야 하는 검증된 그라운드 트루스입니다. 언어 모델은 구조를 공급하고 그래프는 실체를 공급하기 때문입니다. 위 공리 중 셋이야말로 그래프를 그럴듯해 보이는 것이 아니라 신뢰할 수 있는 학습 원천으로 만드는 것이며, 각각은 바이오공정 ML의 알려진 실패 양식에 대응합니다.

첫째, SHACL로 검증된 그래프를 학습셋으로. 출하를 게이트하는 바로 그 닫힌 세계 셰이프 — bp:BatchNotProcessShape, 세포 은행 최소-기수 게이트 — 는 서브그래프가 모델에 건네지기 의 적합성 검사로도 이중 역할을 합니다: 모든 로트가 bp:derivedFrom 부모를, 모든 CQA가 타입 부여된 값을, 모든 워킹 은행이 네 가지 특성 규명을 지니거나, 아니면 그 서브그래프는 모델이 그러지 않으면 학습 기억으로 자신만만한 지어냄을 채워 넣을 텅 빈, 절반만 적재된 입력으로서 거부됩니다. 셰이프를 통과하지 못하는 그래프는 생성형 AI에 관한 ML 장이 경고하는, 유창하고 틀린 답을 대규모로 만들어 내는 바로 그 잘못 라벨링된 입력입니다. disjointness와 기수 가드는 모델보다 먼저 그것을 잡아내는 방법입니다.

둘째, 공리는 특징 계약이자 누수 경계입니다. 모델이 이 그래프의 인스턴스 위에서 학습할 때 — 계보와 프로세스 특징으로부터 출하 결과를 예측할 때 — 독립성의 단위는 공리가 명시하는 바로 그것입니다: bp:Batch와 그것을 derivedFrom한 로트들은 세포 은행, 배지 로트, 캠페인을 공유하므로 독립적인 표본이 아닙니다. 순진한 행별 분할은 한 계보의 형제들을 훈련/테스트 경계를 가로질러 흩뿌리고 암기된 점수를 보고합니다. 정직한 검증은 그룹이 정확히 전이적 등뼈가 계산하는 derivedFrom 계보인 그룹별, 배치-하나-남기기(leave-one-batch-out) 교차검증입니다 — ML 데이터 장이 자신의 분할을 세우는 바로 그 배치-그룹 규율이며, 여기서는 온톨로지가 미리 만들어진 그룹화 키를 건네줍니다. bp:affectsQuality CPP-대-CQA 간선도 마찬가지로 감사된 특징 그래프입니다: 공급 속도를 단량체 순도의 특징으로 삼는 모델은 QbD 공리가 인증한 관계를 쓰는 것이지, 채굴해 낸 가짜 상관관계를 쓰는 것이 아닙니다.

셋째, 앞 절이 이름 붙인 검증 역설(validation paradox)은 날카로운 ML 날을 지닙니다. 추론기는 그래프가 일관적임을 증명하고, 교차검증은 모델이 예측적임을 증명하지만, 뿌리가 오인식되면 그 어느 쪽도 올바름을 증명하지 못합니다. 교차오염된 세포 은행에 뿌리내린 그래프로 학습한 출하 예측기는 잘못된 계보에서 결과로 가는, 완벽하게 교차검증된 매핑을 학습합니다 — 높은 R², 진리는 0 — 오류가 모든 분할의 상류에 있기 때문입니다. 바로 그래서 추론된 그래프에 대고 검사되는 검색 증강 모델이 제 유창함만 믿는 모델보다 더 강합니다: 그래프는 disjointness나 기수를 위반하는 답을 거부할 수 있지만, 모델은 참된 계보와 지어낸 계보를 구별하지 못합니다. 온톨로지는 학습기에 붙은 장식이 아니라 학습기의 회귀 스위트입니다 — 그러나 그것은 정합성을 인증할 뿐 뿌리의 습식 실험실 동일성은 결코 인증하지 못하므로, 그 빈틈을 닫는 인간 인증은 ML 거버넌스(모델 검증, 하이브리드 디지털 트윈)가 루프 안에 유지하는 바로 그것입니다.

왜 중요한가

공리는 캠페인을 그저 라벨링하는 어휘와 그것을 검사하고 확장하는 어휘 사이의 차이입니다. 전이성은 계보를 의약품 완제품에서 얼린 바이알까지 걸어갈 수 있게 만들고, 함수형 속성은 중복된 출처 기록을 병합해 한 세포주가 하나의 이력을 갖게 하며, 제약은 세포 은행 완전성을 고정해 특성 규명이 덜 된 은행이 배치의 씨앗이 될 수 없게 하고, disjointness는 계보를 오염시키는 범주 오류를 시끄럽게 만듭니다. 이것들을 제대로 잡으면 모델은 자라나면서 자신의 무결성을 스스로 방어합니다 — 디지털 스레드가 돌리는 이후의 모든 계보 및 영향 질의는 구성상 신뢰할 수 있으며, 여기에는 DP-004가 HMW 응집체에서 규격을 벗어나 되돌아왔을 때 리콜의 범위를 잡고 영향 추적이 공유 세포 은행까지 올라가는 그 질의도 포함됩니다.

그 리콜 추적이 전하 변이체 이동이 아니라 HMW 응집체에서 시작하는 이유 자체가 프로세스 현실입니다: 고분자량 종은 주사형 항체의 주된 면역원성 및 안전성(immunogenicity and safety) 책임이므로, SEC 단량체/응집체 결과는 단단한 출하 한계(여기서는 HMW 2.0%)를 가진 안전성 CQA입니다. 2.41%의 DP-004는 미용상의 빗나감이 아니라 — 현장 조치를 강제하는 종류의 규격 이탈이며, 바로 그래서 영향 질의가 바이알에 담긴 로트에서 원료의약품, 연마 및 바이러스 단계, 생물반응기 배치를 거쳐 위로 — 규격 내 형제 로트들도 씨앗으로 삼은 공유 워킹 세포 은행까지 derivedFrom을 올라가야 합니다. 전이성은 그 리콜을 올바른 후손으로, 그 이상은 아니게 범위 짓는 것입니다. 공리를 틀리게 잡으면 조치는 너무 좁거나(리콜할 로트를 놓침) 너무 넓어집니다(좋은 로트를 폐기). 이것들을 잘못 잡거나 과도하게 제약하면, IRI가 붙은 비싼 스프레드시트이거나 그 어떤 추론기도 끝낼 수 없는 모델을 갖게 됩니다. 이 접근 전체의 지렛대는 이 장에 살아 있습니다. 그것이 뿌리에 살아 있기 때문입니다.

실제 현장에서는

이 공리들을 텍스트 편집기에서 손으로 쓰지는 않습니다. 사실상의 도구는 Protégé, 무료 스탠퍼드 편집기로, 거기서 도메인 전문가는 클래스와 속성을 시각적으로 정의하고 DL 추론기를 돌려 무엇이든 출하되기 전에 추론을 보고 모순을 잡아냅니다 [4]. 전이성-프로파일 제약도 학술적 잡학이 아닙니다 — part-of나 derived-from 관계를 전이적이면서 비순환으로 만드는 순간 실제 온톨로지가 부딪히는, 문서화된 OWL 2 DL 규칙이며, 표준적이고 정직한 해법은 정확히 여기 있는 것입니다: 속성을 전이적으로 유지하고 비순환성을 논리 밖에서 집행하는 것 [2]. 마찬가지로 세포 은행 특성 규명 제약은 규제 기대를 반영합니다 — RCB / MCB / WCB 위계와 그 특성 규명은 세포 기질에 관한 지침의 기대이지 선택적 모범 관행이 아니며 — 그래서 유전체가 서열로 밝혀져 공개된 숙주로 일하는 모든 실제 CHO 항체 프로그램은 정확히 이 계통과 정확히 이 네 종류의 결과를 유지합니다 [6].

핵심 용어

  • 서브클래스 / 정의역 / 치역(Subclass / domain / range) — 타이핑 규칙: 서브클래스는 부모로부터 모든 것을 상속하고, 정의역과 치역은 속성 양 끝의 유형을 추론하여, 느슨한 derivedFrom 간선을 disjointness 가드가 단속할 수 있는 타이핑된 간선으로 바꿉니다.
  • 전이적 속성(Transitive property) — A→B이고 B→C이면 A→C인 OWL 관계(derivedFrom, contains, hasTemporalPart)로, 몇 개의 서술된 간선에서 열한 깊이 계보와 포장 담음을 임의의 깊이까지 추론 가능하게 만듭니다.
  • 함수형 속성(Functional property)createdBy, hasHostOrganism, hasClone: 주어당 최대 하나의 값(하나의 형질주입, 하나의 숙주 종, 하나의 클론)이어서, 추론기가 세포주의 이력을 분기시키는 대신 중복된 출처 기록을 병합합니다(owl:sameAs).
  • 존재 제약(Existential restriction)CellLine ⊑ ∃createdBy.Transfection: 모든 조작된 세포주는 어떤 형질주입 사건의 출력이어야 하므로, 생산 세포주는 늘 정의된 유전적 기원을 가집니다.
  • 한정 기수 제약(Qualified cardinality restriction)WorkingCellBank ⊑ ≥1 hasCharacterization.CharacterizationResult: 은행이 특성 규명 증거를 지녀야 한다는 열린 세계의 필요조건이며, 그 닫힌 세계 쌍둥이는 SHACL 세포 은행 게이트입니다.
  • disjointnessowl:disjointWithowl:AllDisjointClasses: 다중 출처 적재가 배치를 그 런, 그 용기, 또는 잘못된 계층과 융합하지 못하게 막는 material/equipment, continuant/occurrent, 세포-은행-계층 가드.
  • 전이성-프로파일 제약(Transitivity-profile constraint)derivedFrom이 전이적(비단순)이므로 OWL 2 DL은 그것을 비반사적/비대칭으로도 유형 짓는 것을 금지합니다. 계보가 시간상 뒤로 가리킨다는 것은 OWL이 아니라 SHACL/관례로 집행되는 도메인 사실입니다.
  • 과도한 공리화(Over-axiomatization) — 질문이 필요로 하는 것보다 더 많은 제약을 더하여 비싸거나 종료하지 않는 추론을 무릅쓰는 것. 규율은 중요한 계보와 완전성 오류를 잡을 만큼만 정확히 공리화하고 멈추는 것입니다.
  • 그룹별 / 배치-하나-남기기 교차검증(Grouped / leave-one-batch-out cross-validation) — 이 그래프의 인스턴스 위에서 학습하는 모델을 검증하는 정직한 방법: derivedFrom 계보를 공유하는 모든 로트가 통째로 훈련 또는 테스트로 가므로, 점수는 암기된 형제가 아니라 진정으로 새로운 배치를 반영합니다 — 전이적 등뼈가 그룹화 키를 공급합니다.
  • SHACL로 검증된 학습 데이터(SHACL-validated training data) — 출하 게이트 셰이프를 재사용하여 모델이 학습되거나 검색이 그라운딩되기 에 서브그래프가 완전하고 잘 타입 부여되었음을 인증하는 것. 그래서 모델은 텅 빈 그래프를 학습 기억으로 조용히 채우는 일이 없습니다.
  • ISA-95 / B2MML / OPC UA 그라운딩물질 로트, 장비, 활동을 별개의 객체로 이미 모델링하는 공장 데이터 표준. disjointness 가드를 그것들에 정렬하는 것이, 통합 이음매가 잃어버리는 구별을 그래프가 붙들게 합니다.
(표기: CellLine ⊑ ∃createdBy.Transfection은 위 Turtle 제약의 서술 논리(description-logic) 약기입니다 — 은 "의 서브클래스이다 / 를 만족해야 한다", ∃ p.C는 "C인 속성 p의 값을 어떤 것이든 하나 가진다", ≥1 p.C는 "C인 p-값을 하나 이상 가진다"로 읽으십시오. 본문은 전반에 걸쳐 Turtle 형식을 사용합니다.)

이제 클래스에는 이빨이 있습니다: 타이핑되고, 전이적이고, 함수형이고, 제약되고, 가드됩니다 — 세포 은행 뿌리는 제약되고, 계보는 걸어갈 수 있으며, OWL이 붙들 수 없는 단 하나의 공리는 이름 붙여졌습니다. 그러나 지금까지 쓰인 모든 주어, 술어, 값은 이름이 어디서나 같은 것을 뜻하고, 98.611 같은 숫자가 그 단위 없이는 결코 여행하지 않는다고 가정합니다. 다음 장, 식별자와 단위: IRI, QUDT, 그리고 타입 값은 그 보장을 구체화합니다 — 두 시스템의 BATCH-2026-001이 충돌하지 못하게 막는 전역 고유 식별자, 그리고 98.611이 한 시스템에서는 분수, 다른 시스템에서는 퍼센트를 결코 뜻하지 못하게 막는 단위-및-데이터타입 규율, 곧 출하 게이트가 감당할 수 없는 바로 그 모호성을 막는 규율입니다.