형식화: 공리, 제약, 그리고 프로파일의 한계
📍 현재 위치: 제4부 · 형식화 — 개념적 클래스와 관계를 추론기가 실제로 작동시키는 형식적 OWL 2 공리로 바꿉니다. 방법론은 SAMOD이며, 그 테스트 우선 루프는 각 공리가 우리가 돌릴 수 있는 역량 질문에 봉사할 때에만 자리를 얻는다고 말합니다.
분류 체계(taxonomy)는 명사들을 위아래로 늘어놓은 목록입니다. 온톨로지는 명사들의 목록에, 기계가 그것들 위에서 추론하게 해 주는 규칙을 더한 것입니다 — 그리고 이 장은 다른 모든 것이 거기에 매달리는 모델의 일부, 즉 세포 은행 계통과 mAb 캠페인의 정제 계보에 대해 그 규칙이 작성되는 곳입니다. 우리는 이미 개념화된 클래스와 관계 — WCB-CHO-001과 그 마스터·연구 계층, 얼린 바이알에서 바이알에 담긴 의약품 완제품까지 내려가는 derivedFrom 사슬 — 를 가져와, 그것들에 이빨을 달아 주는 OWL 2 공리를 더합니다: 서브클래스 상속, 타이핑 규칙으로서의 정의역과 치역, 계통을 위한 전이성, 이중 입력된 출처 기록을 잡아내는 함수형 속성, 세포 은행 완전성을 위한 존재 및 기수 제약, 그리고 배치 추적성을 망가뜨리는 범주 오류를 막는 disjointness입니다. 또한 우리가 원하지만 가질 수 없는 단 하나의 규칙 — 전이성에 대한 프로파일 한계 — 과도 마주치며, 이를 정직하게 이름 붙입니다. 제조 그래프의 뿌리에서 그것을 못 본 척하는 것이야말로, 모델이 조용히 신뢰할 수 없게 되는 길이기 때문입니다.
빵집의 사워도우 스타터는 모든 빵 덩어리의 조상이고, 주방 검사관은 매번 요청받지 않아도 상시 규칙을 집행합니다: "모든 워킹 단지는 정확히 하나의 마스터 단지에서 내려온다"(함수형 속성), "단지는 결코 빵을 굽는 오븐이기도 하지 않다"(disjointness), "이 빵이 저 단지에서 왔고 저 단지가 마스터에서 왔다면, 이 빵은 마스터에서 온 것이다"(전이성), "품질 검사 기록이 하나 이상 없는 워킹 단지는 선반을 떠날 수 없다"(기수). 클래스와 인스턴스는 형태와 사물을 줍니다. 공리(axiom)는 기계가 계보 전체를 스스로 검사하고 확장하게 해 주는 상시 규칙이어서 — 추론기는 누가 중간 고리를 일일이 적어 두지 않아도 어떤 빵이든 그 스타터까지 추적할 수 있습니다. 다만 한 가지 규칙, 즉 계보가 결코 순환하지 않는다는 규칙만큼은 검사관이 이 언어로 표현할 수 없으므로 — 우리는 그것을 두 번째 검사관(SHACL)에게 넘기고, 그 사실을 소리 내어 밝힙니다.
질문에서 출발하라
공리는 장식이 아닙니다. 각각은 실제 세포 은행, 실제 배치, 실제 계보에 대해 역량 질문(competency question)을 답할 수 있게 만들기 위해 여기 있습니다. 이 장을 지배하는 CQ는 넷이며, 각각은 그 구조적 표면 뒤에 제조 질문을 품고 있습니다. CQ-22는 장거리 전이적 derivedFrom 간선이 추론되는지, 그리고 장비가 BFO 물질 존재로 추론되는지를 묻습니다 — 이는 그래프가 누구의 손으로도 간선을 단언하지 않고 원료의약품 DS-001을 워킹 세포 은행까지 거슬러 추적할 수 있는가?를 형식적으로 묻는 방식입니다. CQ-23은 disjointness 가드가 심어 둔 혼동을 잡아내는지 묻습니다 — 순진한 다중 출처 적재가 "배치는 곧 런이다" 또는 "배치는 곧 생물반응기다"라는, 계통을 조용히 망가뜨리는 두 오류를 몰래 들여올 수 있는가? CQ-17은 워킹 세포 은행이 세포 은행 게이트에 부합하도록 충분히 특성 규명되었는지 묻습니다 — 이 은행은 실제로 캠페인에 투입해도 안전한가: 동일성, 무균성, 바이러스 안전성, 유전적 안정성이 모두 기록에 있는가? 그리고 CQ-18은 은행이 검증된 계대 한계 안에 있는지 묻습니다 — 세포가 너무 오래 자라서 생산성이나 산물 품질이 표류했을 수 있는가? 이 넷을 붙들어 두십시오. 아래의 모든 공리 블록은 그중 하나를 가리키며, 각각은 품질 부서가 그러지 않으면 스프레드시트 고고학으로 답해야 할 질문입니다.
형식화: 규칙으로서의 서브클래스와 정의역/치역
가장 값싼 공리가 실제 일을 합니다. 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:Equipment나 Person으로 선언되어 있다면, 아래의 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가 나머지를 깝니다. 이 실행 예제의 계보는 열한 개 물질 깊이이므로, 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:contains를 derivedFrom 등뼈에서 떼어 두는 것이, 모델이 "현재 같은 상자에 들어 있음"과 "에서 내려옴"을 혼동하기를 거부하는 방식입니다.
이제 우리가 원하지만 쓸 수 없는 규칙입니다. 우리는 bp:derivedFrom이 비반사적(irreflexive)(어떤 물질도 자기 자신에서 파생되지 않음)이고 비대칭(asymmetric)(DS-001이 세포 은행에서 파생되면 세포 은행은 DS-001에서 파생되지 않음)이기를 바랍니다 — 이 둘을 합치면 계보의 순환이 표시되는 모순이 되어, 하나의 도메인 사실, 즉 계보 간선은 오직 시간상 뒤쪽, 더 이른 물질을 향해서만 가리킨다는 사실의 형식적 서술이 됩니다. 그러나 bp:derivedFrom은 이미 전이적이고, 전이적 속성은 비단순(non-simple)합니다. OWL 2 DL은 비단순 속성이 owl:IrreflexiveProperty나 owl:AsymmetricProperty를 함께 지니는 것을 금지하는데, 그렇게 하면 논리가 추론 종료가 보장되는 결정 가능 프로파일 밖으로 밀려나기 때문입니다 [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-001은 CONSTRUCT-mAb-A(항체 유전자를 담은 발현 벡터)를 입력으로 받아 CELLLINE-001을 출력으로 산출합니다. 세포주는 한 사건 안에서 만들어집니다. 그 사건을 문자열 속성이 아니라 프로세스로 유지하는 것이, 나중에 그래프가 "이 세포주는 어떻게 만들어졌는가?"를 — "그것이 무엇인가?"만이 아니라 — 답할 수 있게 해 줍니다. 그리고 함수형 공리는 그 답이 단일 값임을 보장하므로, 모든 후손 배치의 출처는 분기가 아니라 단 하나의 형질주입으로 귀결됩니다.
형식화: 제약 — 존재 및 한정 기수
서브클래스 고리는 분류 체계를 만들지만, 클래스 제약(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) 결과(은행화 이후에도 세포주가 여전히 올바른 항체를 발현함). 이 중 어느 하나라도 빠진 워킹 은행은 안전하게 배치의 씨앗으로 삼을 수 없는 은행입니다. 이것들은 열린 세계 가정 아래의 필요조건입니다: 특성 규명이 하나도 기록되지 않은 워킹 은행은 모순이 아니라 "불완전"하며 — 추론기는 그 빈틈을 지어내지 않습니다. 누락된 바이러스 안전성 결과를 완전한 실패로 바꾸고 — 실행 가능한 파이프라인에서 CQ-17을 답하는 — 닫힌 세계 게이트는 SHACL의 출하/세포 은행 셰이프입니다.
작동하는 공리: 단언된 직접
derivedFrom 간선(실선)은 추론기가 전이성으로 장거리 고리(점선)를 추론하게 하고, 정의역과 치역은 양 끝을 타이핑하며, Batch와 CellCultureProcess 사이의 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는 이항 경우(Material 대 Equipment, Batch 대 CellCultureProcess)를 처리하고, owl:AllDisjointClasses는 세 세포 은행 계층을 하나의 간결한 공리로 처리하여 한 은행이 연구이자 워킹일 수 없게 합니다. 계층 가드는 관료적 정돈이 아닙니다 — RCB / MCB / WCB 위계는 각 계층이 서로 다른 출하 질문에 답하기 때문에 존재하며, 조용히 "둘 다"인 은행은 연구 등급의, 특성 규명이 덜 된 분취액이 출하 준비된 워킹 은행으로 통하게 만들 것입니다. 한 IRI에 두 disjoint 유형을 단언하면 전체 DL 추론기는 그래프가 비일관적이라고 보고합니다 — 이것이 바로 CQ-23이 심어 둔 혼동에 맞서 검사하는 것입니다. 계보의 뿌리에서 배치, 그것을 만든 런, 그리고 그것을 담았던 용기 사이의 차이는 추적 가능한 실타래와 자신만만한 거짓말 사이의 차이이기 때문입니다.
OWL-RL이 집행하는 것 — 그리고 집행하지 않는 것
여기에는 모델이 출하 결정에 대해 정직한지를 가르는 경계가 있습니다. 실행 가능한 파이프라인은 전체 DL 추론기가 아니라, 경량 규칙 기반 프로파일인 OWL-RL로 추론합니다. OWL-RL은 전이적 폐쇄와 정의역/치역 타이핑을 계산합니다 — 그래서 CQ-22의 장거리 계보(DS-001이 WCB-CHO-001과 RCB-CHO-001에 닿는 것)와 "장비는 BFO 물질 존재다"가 그것에서 곧바로 떨어집니다. 그러나 OWL-RL은 owl:disjointWith, owl:AllDisjointClasses, 또는 한정 기수 제약에는 작동하지 않습니다. 연구이자 워킹으로 잘못 유형이 정해진 은행, 또는 bp:Batch이자 bp:Bioreactor로 유형이 정해진 배치는 owlrl을 조용히 빠져나가며 — 범주 가드에서의 조용한 누락은 바로 오염된 리콜 범위로 전파되는 실패입니다. 전체 DL 추론기(Protégé의 HermiT/ELK)는 그것들을 직접 잡아내고, 실행 가능한 검증기에서는 SHACL 가드가 닫힌 세계의 포착을 담당합니다:
# 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]. 멜빵에 허리띠까지 — 그리고 현장에서 실제로 버텨 주는 것은 허리띠입니다. 실행 가능한 게이트야말로 품질 부서가 그날의 데이터에 대고 실제로 돌리는 것이기 때문입니다.
QbD 연결: 품질 속성에 영향을 주는 프로세스 파라미터
모든 공리가 계보를 지키는 것은 아닙니다. 가장 값진 것 중 하나는 개발 지식을 기록합니다. 프로세스 개발 팀이 확립하려 가장 애쓰는 연결 — 이 핵심 프로세스 파라미터가 저 핵심 품질 속성에 영향을 준다 — 은 구조적으로 보면 또 하나의 저작된 객체 속성입니다. bp:affectsQuality는 bp: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를 단언하면, 낮은 단량체 결과를 쫓는 조사자는 나중에 그래프에 "어떤 파라미터가 단량체 순도에 영향을 주는가?"라고 물어 독서 과제가 아니라 답을 얻을 수 있습니다. 정의역/치역 타이핑은 그 간선을 정직하게 유지합니다 — 오직 파라미터만 영향을 줄 수 있고, 오직 속성만 영향을 받을 수 있으므로 — 그래서 프로세스 개발에서 가장 값진 지식은 계보 등뼈와 똑같은 기계 검증 가능한 규율을 물려받습니다.
형식화: 출하 속성이 어디에 범위 지정되는가, 그리고 왜
한 가지 미묘한 공리 선택은 가까이 들여다볼 가치가 있습니다. 물리기 전까지는 보이지 않기 때문입니다: 출하 속성의 범위입니다. 배치는 그 부모로 가는 bp:derivedFrom 간선을 지니지만, 출하 속성 — bp:releaseStatus, bp:monomerPct, bp:hmwPct, bp:cexMainPct — 은 그 정의역이 bp:Batch가 아니라 상위 클래스인 bp:Material로 설정된 채 선언됩니다. 그 넓이는 의도된 것입니다. 실제로 출하 상태와 SEC 단량체 결과를 지니는 로트는 생물반응기 배치가 아니라 원료의약품과 의약품 완제품 로트 — DS-001과 바이알에 담긴 DP-001 — 이며, 이것들 역시 bp:Material입니다. 원료의약품 DS-001은 releaseStatus "PASS", monomerPct 98.611, hmwPct 1.287, cexMainPct 70.686을 지닙니다. 이 속성들을 bp:Batch로 좁게 범위 지정했다면 출하된 모든 로트를 배치로 잘못 유형 지정하여, disjointness 가드가 지키는 바로 그 continuant 구별을 무너뜨렸을 것입니다. bp:Material로 범위 지정함으로써, 출하 결과를 단언하면 주어가 물질로 유형 지정되고 출하된 로트는 누가 배치이기를 강요하지 않아도 속성을 상속받습니다. 스키마는 일부러 넓으며, 그 넓이는 출하 게이트가 무엇을 표적으로 삼을 수 있는지에 하류 결과를 갖는 공리 결정입니다.
평가: 공리가 질문을 벌어들이다
validate.py는 bioproc.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 가드는 심어 둔 혼동을 거부합니다(OWL-RL이 owl:disjointWith에 작동하지 않으므로 conforms False가 SHACL의 평결입니다): "배치는 런이다"와 "배치는 생물반응기다" 오류가 둘 다 잡힙니다. 그것이 CQ-23, 통과입니다. CQ-17과 CQ-18은 세포 은행 게이트와 계대-한계 ASK로 답해집니다: WCB-CHO-001은 자신의 네 가지 특성 규명 — 동일성, 무균성, 바이러스 안전성, 유전적 안정성 — 을 지니고, 계대 수 8로 검증된 한계 40 이내입니다. 넷 모두 성립하며, 우리가 쓸 수 없었던 단 하나의 공리는 거짓으로 꾸며지지 않고 문서화되어 있습니다.
미해결 과제: 일관된 모델도 살아 있는 뿌리를 여전히 오인식할 수 있다
모든 공리는 추론기가 지켜야 하는 약속이며, 그것은 양날입니다. 풍부하게 제약된 온톨로지는 계산적으로 비싸지거나, 추론이 더 이상 안정적으로 종료하지 않는 결정 가능 OWL 2 프로파일 밖으로 발을 디딜 수 있습니다 [5] — 위의 전이성-프로파일 한계가 구체화한 바로 그 위험입니다. 기술은 정확히 중요한 오류를 잡을 만큼만 공리화하는 것입니다 — 이 그래프의 경우 계보를 오염시키는 범주 오류와 세포 은행 완전성 빈틈 — 그 이상은 아닙니다.
그러나 더 깊은 한계는 추론기가 모델이 일관적(consistent)임을 증명할 뿐, 결코 올바름(correct)을 증명하지 못한다는 것입니다. 방향이 뒤집힌 derivedFrom, 잊혀서 "배치는 런이다" 오류가 빠져나가게 한 disjointness, "정확히 하나"여야 하는데 "하나 이상"으로 남겨진 기수 — 이 모든 것은 완벽하게 일관적이고 완벽하게 틀렸습니다. 그리고 이 특정 그래프의 뿌리에서 일관과 올바름 사이의 빈틈은 생물학적인 것이 됩니다. 세포주는 살아 있습니다: 세대를 거치며 돌연변이하고 표류하는 세포의 집단이어서, 계대 60의 은행은 계대 5의 은행과 유전적으로 동일하지 않으며, 그 어떤 owl:sameAs나 제약도 둘이 "같은 존재"인지를 답할 수 없습니다. 공리는 WCB-CHO-001이 WCB-CHO-001이라고, 움직이는 집단 위의 안정적인 IRI라고 가정합니다 — 특성 규명으로 한정된 유용한 허구이지, 식별자가 암시하는 또렷한 동일함이 아닙니다. 더 나쁘고 역사적으로 실재하는 것은 오인식(misidentification)입니다: 세포주는 수십 년 동안 생명과학 전반에 걸쳐 혼동되고 교차오염되어 왔습니다. 제조 뿌리 노드에서 그것은 가능한 한 최악의 오류입니다. 완전한 확신을 가지고 단언되고, derivedFrom을 통해 모든 후손 배치로 전파되며, 그 어떤 하류 데이터 무결성도 그것을 잡아내지 못하기 때문입니다 — 모든 하류 사실이 잘못 식별된 뿌리에서 올바르게 유래됩니다. 논리는 정합성을 검사하지 진리를 검사하지 않으며, 바로 그래서 형식화는 생성된 산물이 아니라 검토되고 거버넌스된 인간 실천으로 남고 — 그래서 그래프의 뿌리는 궁극적으로 온톨로지가 기록할 수는 있어도 결코 인증할 수 없는 습식 실험실 인증에 놓입니다.
왜 중요한가
공리는 캠페인을 그저 라벨링하는 어휘와 그것을 검사하고 확장하는 어휘 사이의 차이입니다. 전이성은 계보를 의약품 완제품에서 얼린 바이알까지 걸어갈 수 있게 만들고, 함수형 속성은 중복된 출처 기록을 병합해 한 세포주가 하나의 이력을 갖게 하며, 제약은 세포 은행 완전성을 고정해 특성 규명이 덜 된 은행이 배치의 씨앗이 될 수 없게 하고, disjointness는 계보를 오염시키는 범주 오류를 시끄럽게 만듭니다. 이것들을 제대로 잡으면 모델은 자라나면서 자신의 무결성을 스스로 방어합니다 — 디지털 스레드가 돌리는 이후의 모든 계보 및 영향 질의는 구성상 신뢰할 수 있으며, 여기에는 DP-004가 HMW 응집체에서 규격을 벗어나 되돌아왔을 때 리콜의 범위를 잡고 영향 추적이 공유 세포 은행까지 올라가는 그 질의도 포함됩니다. 이것들을 잘못 잡거나 과도하게 제약하면, 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 세포 은행 게이트입니다. - disjointness —
owl:disjointWith와owl:AllDisjointClasses: 다중 출처 적재가 배치를 그 런, 그 용기, 또는 잘못된 계층과 융합하지 못하게 막는 material/equipment, continuant/occurrent, 세포-은행-계층 가드. - 전이성-프로파일 제약(Transitivity-profile constraint) —
derivedFrom이 전이적(비단순)이므로 OWL 2 DL은 그것을 비반사적/비대칭으로도 유형 짓는 것을 금지합니다. 계보가 시간상 뒤로 가리킨다는 것은 OWL이 아니라 SHACL/관례로 집행되는 도메인 사실입니다. - 과도한 공리화(Over-axiomatization) — 질문이 필요로 하는 것보다 더 많은 제약을 더하여 비싸거나 종료하지 않는 추론을 무릅쓰는 것. 규율은 중요한 계보와 완전성 오류를 잡을 만큼만 정확히 공리화하고 멈추는 것입니다.
다음 이야기
이제 클래스에는 이빨이 있습니다: 타이핑되고, 전이적이고, 함수형이고, 제약되고, 가드됩니다 — 세포 은행 뿌리는 제약되고, 계보는 걸어갈 수 있으며, OWL이 붙들 수 없는 단 하나의 공리는 이름 붙여졌습니다. 그러나 지금까지 쓰인 모든 주어, 술어, 값은 이름이 어디서나 같은 것을 뜻하고, 98.611 같은 숫자가 그 단위 없이는 결코 여행하지 않는다고 가정합니다. 다음 장, 식별자와 단위: IRI, QUDT, 그리고 타입 값은 그 보장을 구체화합니다 — 두 시스템의 BATCH-2026-001이 충돌하지 못하게 막는 전역 고유 식별자, 그리고 98.611이 한 시스템에서는 분수, 다른 시스템에서는 퍼센트를 결코 뜻하지 못하게 막는 단위-및-데이터타입 규율, 곧 출하 게이트가 감당할 수 없는 바로 그 모호성을 막는 규율입니다.