본문으로 건너뛰기

유지보수: 발행, 조립된 실타래, 그리고 FAIR

📍 현재 위치: 제7부 · 유지보수, 발행, FAIR — 생애주기의 마지막 단계입니다. 명세(Specification)는 요구서를 썼고, 재사용(Reuse)은 등뼈를 빌렸으며, 개념화(Conceptualization)와 형식화(Formalization)와 구현(Implementation)이 모델을 짓고 인스턴스화했고, 검증(Validation)이 그것을 관문에서 통과시켰습니다. 이제 LOT(Linked Open Terms) 방법론이 후단부를 넘겨받습니다: 완성된 어휘를 하나의 재사용 가능한 산출물로 발행하고, 그것이 FAIR한지를 — 가정이 아니라 — 측정합니다.

하나의 CHO(중국 햄스터 난소) 단클론 항체(mAb) 캠페인 — 조작된 세포주와 그것이 분비하는 항체 약물 — 을 위해 우리는 모든 간선을 깔았습니다: 약국 선반의 콜드체인 바이알에서 직렬화된 단위, 의약품 완제품(최종으로 제형화되어 충전 가능한 투여 형태)과 원료의약품(제형화되기 전 정제된 활성 항체), 폴리싱 및 포획 풀, 생물반응기 배치, 시드 트레인, 그리고 세포 은행 위계를 거쳐 WCB-CHO-001까지 거슬러 올라가는 derivedFrom; 피드 속도 파라미터에서 그것이 형성하는 단량체 순도 속성으로 향하는 affectsQuality(단량체 순도 — 산물 가운데 뭉쳐 버린 응집체가 아니라 온전한 단일 항체 분자인 비율 — 는 mAb의 대표적 품질 척도입니다); 관문에서의 출하 판정; 한 배치를 두고 의견이 갈렸던 두 소스 시스템을 조정하는 PROV 출처. 각각은 하나의 모델링 작업이었습니다. 조립되고 발행되면, 그것들은 하나의 항행 가능한 어휘가 되며, 그 안에서는 리콜의 범위를 추측이 아니라 질의로 정할 수 있습니다 — 그리고 발행 단계는 이 모든 노력을 정당화하는 질문을 던집니다: 그것이 정말로 세상에 유용한가? FAIR가 그 답을 재는 잣대이며, 이 장의 정직한 규율은 FAIR를 구호에서 측정으로 바꾸고, 측정 결과가 광고지보다 못하게 나오는 지점을 인정하는 것입니다.

쉽게 말하면

도서관이 모든 책을 소장하고도, 목록이 없고 출입문이 아무 때나 잠기며 책 절반이 라벨 없는 언어로 쓰여 있다면 무용지물일 수 있습니다. "우리는 책을 가지고 있다"는 "당신이 그것을 찾고, 가져가고, 결합하고, 재사용할 수 있다"와 다릅니다. mAb 제조사에게 그 책들은 배치 기록, 세포 은행 인증서, 크로마토그램, 콜드체인 로그입니다: 그것들을 모두 소장한다는 것은, 실패한 로트를 그 세포 은행까지 거슬러 걷거나, 그 은행을 공유하는 정확히 그 로트들로 리콜 범위를 단 한 번의 질의로 좁힐 수 있다는 것과 같지 않습니다. FAIR는 목록이 실제로 작동한다는 약속이며 — 그것을 아는 유일한 길은 올바른 서가 배치가 그것을 가져다주었다고 가정하는 것이 아니라 시험하는 것입니다. 이 장은 완성된 CHO 캠페인 온톨로지를 하나의 어휘로 발행하고, 그것을 FAIR에 비추어 정직하게 시험하며, 가장 점수가 낮은 차원을 인정합니다.

질문에서 시작하라

명세의 두 역량 질문(완성된 온톨로지가 답해야 하는 평이한 자연어 질문으로, 각각 합격/불합격 인수 시험으로 실행됩니다)이 이 장을 차지하며, 둘 다 출처(provenance) 그룹에 속합니다. 발행이란 한 배치의 사실이 어디서 왔는가그 물질이 어떤 규제 동일성을 지니는가에 관한 모델의 주장이 마침내 발행된 그래프에 대해 시험되는 곳이기 때문입니다. CQ-15는 두 소스 시스템 기록 — BATCH-2026-001을 등록한 MES(Manufacturing Execution System, 생산을 운영하고 기록하는 현장 소프트웨어)와 그 생물반응기를 명명한 계보 로더(ETL — Extract-Transform-Load — 작업) — 이, 배치 물질을 용기에 융합시켜 버릴 owl:sameAs 과잉 병합(owl:sameAs는 두 IRI가 같은 개체라고 선언하므로, 여기서 그것을 단언하면 배치와 용기가 하나로 뭉쳐 버립니다) 없이, 하나의 큐레이션된 결정으로 조정되는지를 묻습니다. CQ-16ISO IDMP 규제 물질 동일성 — 규제 당국이 의약 물질을 명명하는 전역 식별자 체계 — 이 출하 관문이 검증한 바로 그 DS-001 노드에 — 사본이 아니라 — 붙어서, 규제 당국이 보는 원료의약품과 제조사가 보는 원료의약품이 하나의 존재인지를 묻습니다. 둘 다 발행된 그래프에 대해 초록으로 통과하며, 둘 다 FAIR-실제(FAIR-in-fact)의 시험입니다: 출처는 수년 뒤 한 배치 기록을 조사하는 낯선 이에게 그것을 재사용 가능(Reusable)하게 만드는 것이고, 단일한 공유 동일성은 출하된 로트를 규제 제출과 상호운용 가능(Interoperable)하게 만드는 것입니다.

하나의 발행된 산출물로 조립된 어휘 전체

발행의 첫 행위는 한 걸음 물러나 이전 장들이 실제로 무엇을 지었는지 바라보는 것입니다. 각 장은 자신의 클래스와 관계를 하나의 네임스페이스 bp:에 더했습니다(클래스는 사물의 종류 — Batch, Bioreactor — 이고, 객체 속성은 두 사물을 잇는 관계 — derivedFrom — 이며, 데이터 속성은 리터럴 값 — 단량체 백분율 — 을 붙입니다). 그 결과는 여러 어휘가 아니라 하나입니다 — 첫날의 표적에서 환자 머리맡의 콜드체인 바이알까지, 프로세스 전체를 아우르는, 완전하고 로드 가능한 온톨로지입니다. bioproc.ttl에 담긴 완성된 bp: 어휘는 206개 클래스, 88개 객체 속성, 46개 데이터 속성(여기에 폐기 패턴을 위한 주석 속성 하나)이며 — 모든 클래스가 BFO 상위 등뼈 위에 근거하고, align.ttl에서 BFO, IOF, OBO 생물학 온톨로지들, AFO, QUDT, RO, PROV로 위로 정렬됩니다(이들은 외부의 널리 쓰이는 참조 온톨로지로 — BFO는 기본 범주의 최상위 골격, QUDT는 단위, RO는 관계를 위한 것이며 — 위로 정렬한다는 것은 각 로컬 bp: 용어를 대응하는 외부 용어의 하위 클래스나 하위 속성으로 선언해 다른 도구가 그것을 인식하게 하는 것입니다). 각 장은 하중을 지는 용어들을 도입했고, 잎 수준의 전체 집합 — 모든 CQA(Critical Quality Attribute, 산물이 안전하고 효과적이려면 한계 안에 머물러야 하는 측정 가능한 속성), 모든 분석법(그런 속성 하나를 측정하는 실험실 시험), 모든 산물 변종 — 은 파일 안에 살아 있습니다. 일곱 개의 최상위 범주로 압축하면, 전체가 한 화면에 들어옵니다(RDF 그래프를 위한 표준 사람-가독 텍스트 형식인 Turtle로 작성되며, a는 그 안에서 "is a", 즉 ~의 인스턴스이다의 약식입니다):

# bioproc.ttl — the assembled vocabulary, by BFO category (representative members)
bp:Material # cells, banks, cultures, batch, pools, substance, product, vials, packages
bp:Equipment # bioreactors, columns, resins, filters, instruments, loggers, sites
bp:Quality # purity, aggregate, charge variant, HCP, turbidity, integrity, criticality
bp:RealizableEntity # roles; dispositions (developability, resin binding, LRV); functions
bp:InformationArtifact # concept, sequence, recipe, spec, method, result, certificate, FAIR, IDMP
bp:ProcessParameter # the CPP types: feed rate, temperature, pH, dissolved oxygen
bp:Process # discovery, transfection, culture runs, unit operations, assays, EPCIS events

# and one transitive relation threads every material in the namespace together:
bp:derivedFrom a owl:TransitiveProperty . # WCB-CHO-001 -> ... -> DS-001 -> { DP-001 , DP-002 }

이것은 온톨로지에 관한 그림이 아닙니다 — 그것은 이 책이 하나의 CHO mAb를 위해 쓴 온톨로지 바로 그것입니다. 하나의 버전과 하나의 라이선스 아래 하나의 산출물로 발행된 단일 bp: 네임스페이스가 LOT 산출물입니다: 스무 개의 단절된 작은 모델이 아니라, 재사용 가능한 어휘입니다. 그 가치는 그것이 존재한다는 데 있지 않고, 그것을 발행함으로써 어려운 제조 질문들이 한 줄짜리 질의가 된다는 데 있습니다.

발행은 또한 산출물이 자신의 동일성을 선언하는 곳이기도 합니다. bioproc.ttlowl:Ontology 헤더로 시작합니다 — 거버넌스 프로세스가 약속하고 규제 제출이 인용하는 릴리스 기록입니다:

# bioproc.ttl — the published artifact's own identity header (live, this release)
bp: a owl:Ontology ;
rdfs:label "Bioprocess running-example vocabulary" ;
owl:versionInfo "2.1.0" ;
owl:versionIRI <https://example.org/bioproc/2.1.0> ;
owl:priorVersion <https://example.org/bioproc/2.0.0> .

네임스페이스 https://example.org/bioproc#는 이 책의 모든 IRI(Internationalized Resource Identifier — 페이지가 아니라 사물을 위한 URL처럼, 개념에 붙는 전역적으로 고유한 웹 이름)가 펼쳐지는 기준이 되는 지속적 베이스이며, owl:versionIRI는 제출이 고정하는 불변의 핸들입니다 — 후속 릴리스로 결코 표류하지 않는 릴리스. 헤더가 여전히 요구하는 두 가지 FAIR 기제: 지속성은 발행이 설계해 내야 하는 것입니다 — bp: IRI는 그 호스트가 안정적 리다이렉트(w3id.org / PURL 패턴 — 파일이 실제로 있는 곳으로 전달하는 영구 웹 주소로, 호스팅이 옮겨가도 이름이 살아남게 합니다)를 지키고 콘텐츠 협상(서버가 요청자에 따라 다른 형식을 돌려주는 것)에 응답해 같은 주소에서 기계에는 text/turtle을, 사람에게는 text/html을 돌려줄 때에만 5년 뒤에도 찾을 수 있습니다. (FAIR는 번호 매겨진 하위 기준들로 분해되는데, 여기서는 F1, 지속적인 고유 식별자, 그리고 A1, 표준 회수 프로토콜입니다.) 그리고 재사용 가능은 라이선스가 — 그래프가 오늘 지니고 있는rdfs:label "CC BY 4.0"이 아니라 — 역참조 가능한 IRI(dcterms:license <https://creativecommons.org/licenses/by/4.0/>)일 때에만 기계 작동 가능합니다: 도구는 IRI는 따라갈 수 있어도 라벨은 따라갈 수 없습니다(R1.1).

그 어휘는 어떻게 FAIR하게 발행되었는가. LOT의 의미에서 발행이란 "어딘가에 .ttl을 올려 두는 것"이 아닙니다 — 그것은 검증된 모델을, 각 FAIR 글자가 그에 비추어 점검될 수 있는 산출물로 바꾸는 짧고 재현 가능한 절차이며, 위의 네 점검이 단언되는 것이 아니라 눈에 보이게 얻어지도록, 이 책 자신의 bioproc.ttl 릴리스 위에서 한 번 걸어 볼 가치가 있습니다 [1]:

  1. 모든 용어에 지속적이고 역참조 가능한 IRI를 부여한다. 모든 클래스, 속성, 개체는 이미 단일 베이스 https://example.org/bioproc# 아래에 살고 있으므로, bp:DS-001은 하나의 전역 문자열로 펼쳐집니다. 발행 단계는 그 베이스가 해소되도록 설계하는 것입니다 — w3id.org/PURL 리다이렉트에 콘텐츠 협상을 더하여 — 이것이 바로 찾을 수 있음(F1)과 접근할 수 있음(A1) 점검을, 죽은 주소를 가리키는 대신 통과하게 만드는 것입니다.
  2. 사람과 기계가 읽을 수 있는 메타데이터를 각 용어에 붙인다. 모든 bp: 클래스는 rdfs:labelskos:definition(명세의 두 저자가 만든 사전 단계 용어집을 영속화한 것)을 지니고, 산출물은 그 owl:versionInfo/owl:versionIRI 동일성 헤더를 지니며, DS-001은 그 PROV 계통을 지닙니다. 재사용 가능 점검은 추가로 dcterms:license IRI를 요구하는데, 이것이 바로 라이브 그래프가 여전히 라이선스를 맨 rdfs:label로 지니고 있기에 정직하게 "PARTIAL"에 인접한 한 지점입니다.
  3. 각 IRI가 실제로 해소되도록 직렬화하고 호스팅한다. 네임스페이스 전체는 하나의 Turtle 묶음(bioproc.ttl + align.ttl + instances.ttl)으로 기록되어, 임의의 bp: IRI에 대한 GET이 도구에는 text/turtle을, 사람에게는 text/html을 돌려주도록 제공됩니다 — 인용할 수 있는 어휘와 그저 내려받을 수만 있는 어휘의 차이입니다.
  4. 실제로 상호운용 가능하고 재사용 가능하도록 등록하고 정렬한다. align.ttl은 로컬 용어들을 검증된 외부 IRI(BFO, IOF, OBO, QUDT)로 위로 매핑하고, 바이알의 GS1 SGTIN 같은 식별자 시스템을 skos:exactMatch로 교차 연결한 뒤, 산출물은 낯선 이가 그것을 발견할 수 있도록 카탈로그됩니다 — 이것이 상호운용 가능을 얻는 단계이고, 그 불완전함이 바로 아래의 FC-I 판정이 "PASS"가 아니라 "PARTIAL"로 읽히는 이유 그 자체입니다.

이것은 validate.py가 승인하는 바로 그 산출물이, 이제 각 FAIR 글자가 측정될 수 있게 하는 메타데이터와 해소를 지닌 채로 있는 것입니다 — 이 장 뒤의 레시피와 점수표는 하나의 발행을 보는 두 시야입니다.

발행된 실타래가 답하는 것: 계보, 영향, 그리고 생애주기 가로지르기

발행이 중요한 까닭은 오직, 조립된 bp: 그래프가 품질 부서가 몇 주씩 상호 참조로 답하던 세 가지 질문을 단일 진술로 바꾸기 때문입니다. 첫째는 계보 걷기(lineage walk)입니다 — 이 로트는 어디서 왔는가? derivedFrom이 전이적이고 모든 간선이 실제 물질 변환의 흔적이므로, 한 홉 이상의 SPARQL(RDF 그래프를 위한 표준 질의 언어) 속성 경로가 임의의 깊이에서 원료의약품의 전체 조상을 재구성합니다. validate.py가 돌리는 바로 그 질의입니다:

# queries/CQ-01.rq — everything DS-001 derives from, to any depth, in one property path.
# (bp:derivedFrom)+ = one-or-more hops; works whether the lineage is 3 steps or 20.
PREFIX bp: <https://example.org/bioproc#>
SELECT ?ancestor ?type WHERE {
bp:DS-001 (bp:derivedFrom)+ ?ancestor .
?ancestor a ?type .
FILTER(STRSTARTS(STR(?type), STR(bp:)))
} ORDER BY ?ancestor

로드된 그래프에서 CQ-01은 전체 열한 개 조상의 계보를 반환합니다 — validate.py는 이를 하나의 초록 줄로 보고하며, 그 열한 개의 조상은, 순서대로, 거친 CSV 사슬이라면 뭉개 버렸을 모든 실제 단위 작업 중간체를 폴리싱 풀에서 세포 은행 위계까지 담고 있습니다:

CQ-01 lineage PASS 11 row(s)

속성 경로가 반환하는 열한 개 조상은 BATCH-2026-001, CLAR-001, MCB-CHO-001, PApool-001, POLpool-001, RCB-CHO-001, SEED-001, SEEDFLASK-001, VFpool-001, VIpool-001, WCB-CHO-001입니다.

이것이 바로 세포 은행에 계보가 필요한 이유입니다: 원료의약품은 폴리싱 및 바이러스 제거 풀(POLpool-001, VFpool-001, VIpool-001), 포획 풀과 청징 하베스트(PApool-001, CLAR-001), 생물반응기 배치, 시드 트레인(SEED-001, SEEDFLASK-001), 그리고 세포 은행 위계(WCB-CHO-001, MCB-CHO-001, RCB-CHO-001)를 거쳐 거슬러 올라가며 — 이 장거리 도달 가능성은 손으로 단언된 것이 아니라 전이적 폐포(transitive closure)에 의해 추론됩니다.

둘째 질문은 그 역이며, 실타래가 돈과 환자 안전으로 제값을 하는 지점입니다: 한 로트가 실패하면, 무엇이 그 운명을 함께하는가? DP-004HMW(high-molecular-weight, 고분자량) 응집체에서 규격을 벗어나면(측정값이 승인된 허용 한계 바깥으로 떨어지면) — 응집체는 뭉쳐 버린 항체 분자로, 원하는 단일 분자 단량체의 반대입니다 — 조사는 그 계보를 거슬러 올라가 공유 조상에 닿고, 다시 내려와 그 조상으로 추적되는 모든 의약품 완제품에 이릅니다:

# queries/CQ-04.rq — when DP-004 fails, what shares its fate? Walk UP DP-004's
# lineage to common ancestors, then back DOWN to every drug product that shares
# one — i.e. every sibling lot tracing to the same cell bank. Scopes a recall by
# query instead of quarantining the whole campaign.
PREFIX bp: <https://example.org/bioproc#>
SELECT DISTINCT ?affected WHERE {
bp:DP-004 (bp:derivedFrom)+ ?shared . # an ancestor of the failed lot
?affected (bp:derivedFrom)+ ?shared . # anything else derived from it
?affected a bp:DrugProduct .
FILTER(?affected != bp:DP-004)
} ORDER BY ?affected

캠페인의 모든 배치가 같은 WCB-CHO-001로 추적되므로, 이 질의는 두 형제 로트를 모두 반환합니다 — validate.py는 이를 하나의 초록 줄로 기록하며, 전방 분기 bp:DS-001 bp:fillsInto bp:DP-001 , bp:DP-002야말로, 운명을 함께하는 영향 집합을 운이 아니라 구성상 완전하게 만드는 것이고, 범위가 정해진 일탈과 눈먼 캠페인 전체 격리의 차이입니다:

CQ-04 impact PASS affected = ['DP-001', 'DP-002']

HMW 응집체가 리콜 범위를 정할 올바른 속성인 까닭은 그것이 안전성/면역원성 CQA이고, 크기 배제 크로마토그램(분자를 크기순으로 분류하는 실험실 트레이스) 위에서 출하가 보고하는 단량체 순도의 여집합이기 때문입니다 — 단량체, HMW, LMW(low-molecular-weight species — 단편으로, 응집체의 작은-쪽 반대) 는 약 100 %로 합산되므로, DP-004가 단량체 98.687 %(규격 내)인데도 HMW 2.41 %(규격 외, 한계 2.0 %)인 것은 내부적으로 일관됩니다: 응집체가 단량체를 그 자신의 문턱 아래로 떨어뜨리지 않은 채 올라간 것입니다. 출하 판정을 뒤집는 단 하나의 숫자가 신뢰할 만한 까닭은, 모델이 어느 숫자가 중요한지를 알기 때문입니다.

셋째 질문은 오직 이 책의 모델링만이 가능하게 하는 것입니다. 파편화된 공장이 세 가지 방언으로 유지하는 이음매를 가로지르기 때문입니다: 어떤 프로세스 파라미터가 이 로트의 단량체 순도를 좌우했는가? 그것은 개발기의 affectsQuality 단언(bp:FeedRate bp:affectsQuality bp:MonomerPct-CQA)에서 시작해, 그 파라미터를 설정점으로 실현한 생산 단계 운전을 찾고, 그 운전이 산출한 배치로 건너간 뒤, derivedFrom을 앞으로 걸어 그 결과를 지닌 출하된 원료의약품 로트에 이릅니다 — 개발 연구, 공장 센서, QC 판정을 하나의 진술로 결합해 피드 속도 CPP를 DS-001 위에 안착시킵니다. 이것이 축소판 QbD(Quality by Design — 끝에서 시험으로 품질을 집어넣는 대신, 프로세스를 이해함으로써 품질을 그 안에 짓는 것) 연결입니다: 피드 속도가 CPP(Critical Process Parameter — 품질 속성을 움직이므로 프로세스가 어떤 범위 안에 잡아 두어야 하는 입력)인 까닭은 바로 개발 연구가 그것을 설계 공간(허용 가능한 품질을 낳는다고 입증된 다차원 입력 범위 — 입증된 허용 범위 0.30-0.50 용기-부피/일의 affectsQuality 단언) 안에 두었기 때문이며, 생산 운전이 그것을 그 범위 안의 통제된 설정점 0.40 용기-부피/일(VVD, 용기 부피로 정규화한 일일 피드)로 실현했기 때문입니다(bp:RPS-feedrate-CCP001). 따라서 이 생애주기 가로지르기 간선은 지속적 공정 검증(continued process verification)(CPV — FDA 공정 검증 생애주기의 3단계로, 프로세스가 검증된 상태에 머무른다는 지속적 보증)이 지켜야 하는, ICH Q8-Q11이 성문화한 CPP-대-CQA 설계 공간 연결을 한데 붙들지만 파편화된 공장이 개발-대-GMP(Good Manufacturing Practice — 규제되는 생산 체제) 이음매에서 잃어버리는 그 흔적입니다. 어휘를 발행하는 핵심은 이 세 질의가 하나의 산출물 위에서 돌아간다는 데 있습니다: 간선을 충실히 깔면 계보, 리콜 범위, 생애주기 가로지르기 연결이 모두 고고학으로 재구성되는 것이 아니라 계산됩니다.

조립된 bp: 어휘를 그린 도해: 맨 위에 다섯 개의 색칠된 패널 — 토대(BFO 등뼈와 핵심 관계), 발견과 개발(표적, 분자, 세포주, 프로세스, 분석, 기술 이전), 상류(시드 트레인, 생산 생물반응기, 하베스트), 하류(포획, 바이러스 안전성, 폴리싱, UF/DF), 충전·완성과 출하(제형, QC 출하, 포장, 유통) — 가 가로로 늘어서 있고, 각각은 자신이 기여하는 대표적인 bp: 클래스를 나열합니다. 모든 패널에서 아래로 화살표가 내려와 중앙의 계보 등뼈로 모이며, 그 등뼈는 WCB-CHO-001에서 SEED-001, BATCH-2026-001, DS-001을 거쳐 DP-001과 DP-002로 갈라지는 derivedFrom 사슬을 보여 줍니다. 그리고 전폭의 마무리 막대가, BFO·IOF·OBO·QUDT로 위로 정렬되고 validate.py로 로드되어 SHACL 관문을 통과하는, 206개 클래스·88개 객체 속성·46개 데이터 속성의 하나의 bp: 온톨로지를 요약합니다. 하나의 온톨로지, 하나의 어휘로 발행됨: 모든 장이 자신의 클래스를 단일 bp: 네임스페이스에 더하고, 전부 하나의 BFO 등뼈 위에 근거하며 전이적 derivedFrom 계보로 엮입니다 — 206개 클래스가, 이 책 전체가 써 내려가던 완전하고 로드 가능한 모델로 조립됩니다. 저자가 AI의 도움을 받아 직접 제작한 그림입니다.

FAIR하게 발행된 실타래는 무엇을 위한 것인가: 모델이 발 디딜 지상 진리

어휘 발행을 정당화하는 바로 그 세 질의는, 또한 — 아무 RDF 덤프가 아니라 — 발행되고 FAIR한 산출물이야말로 동반 권(Machine Learning & AI for Biomanufacturing)의 기계학습 모델이 안전하게 학습할 수 있는 대상인 이유이기도 합니다. 생애주기를 연 요구서는 모델의 의도된 최종 용도 가운데 "검색 증강 AI를 위한 토대"를 명명했으므로, 이것은 끝에서 덧붙인 유행이 아니라 명세된 보상이며 — 그것은 정확히 이 장이 발행한 기제 위에 안착합니다.

계보 걷기가 곧 교차검증 폴드입니다. 바이오프로세스 ML의 대죄는 행 단위 무작위 훈련/시험 분할입니다. 형제 로트가 독립적인 예가 아니기 때문입니다 — 이 캠페인의 모든 배치는 같은 WCB-CHO-001에서 내려오므로, 한 세포 은행에서 나온 두 로트는 거의 쌍둥이이고, 그것들을 훈련/시험 선을 가로질러 흩뿌리면 모델이 답을 보고 환상의 점수를 보고하게 됩니다. 정직한 해법은 그룹화된, 한-배치-남김(leave-one-batch-out) 교차검증이며, 그룹 키는 이미 발행되어 있습니다: 공유 세포 은행으로 거슬러 가는 (bp:derivedFrom)+ 걷기 — CQ-01의 바로 그 속성 경로 — 가 한-세포은행-남김 그룹화이며, 이는 Book 5의 데이터 장이 기본값으로 삼고 모델·검증 장GroupKFold와 중첩 교차검증으로 바꾸는 그것입니다. 리콜 범위를 정하는 그래프(CQ-04)와 누수 없는 검증 폴드를 정의하는 그래프는 같은 그래프이며, 계보를 하나의 항행 가능한 산출물로 발행한다는 것은 학습기에 추측한 그룹 키가 아니라 이미 준비된 그룹 키를 건네는 일입니다.

발행된 간선은 감사된 특징 그래프이자 검색의 지상 진리입니다. 이 장이 DS-001 위에 안착시킨 bp:affectsQuality 단언(bp:FeedRate bp:affectsQuality bp:MonomerPct-CQA)은 모델이 채굴한 상관이 아니라 — 개발 연구가 인증한 QbD 관계이므로, 단량체 순도를 위한 특징으로 피드 속도를 취하는 출하 예측기는 허위가 아니라 감사된 간선을 쓰는 것입니다. 그리고 산출물이 FAIR하게 발행되어 있으므로, "DP-004는 무엇에서 유도되었는가?"에 답하는 GraphRAG 검색은 어떤 문단이 존재하기를 바라지 않습니다 — 그것은 해소 가능한 bp: IRI 위에서 CQ-04의 이미 초록인 속성 경로를 돌리고, 자신이 걸은 유형 지정 간선을 서술합니다. 그래서 모델은 유창한 구조를 공급하고 그래프는 검증된 실질을 공급합니다. 맨 문자열 monomerPct라면 상호운용 가능 점검에 실패하고 동시에 검색도 깨뜨립니다: 특징이든 검색된 사실이든 양쪽이 그 의미를 해소할 때에만 시스템 간 결합이 가능하며, 그래서 FC-I "PARTIAL" 판정은 FAIR 점수이자 기계학습 신뢰의 상한이기도 합니다.

발행된 그래프가 해소하는 검증 역설. 추론기는 그래프가 일관됨을 증명하고, 교차검증은 모델이 예측적임을 증명하지만, 계보 뿌리가 잘못 식별되면 둘 중 어느 것도 옳음을 증명하지 못합니다. 교차 오염된 세포 은행에 뿌리내린 그래프 위에서 훈련된 모델은 잘못된 계보에서 결과로 가는 완벽하게 교차검증된 사상을 학습합니다 — 높은 R², 진리는 영입니다. 그래서 추론되고 SHACL 관문을 통과한 그래프에 비추어 점검된 검색 증강 모델은 자신의 유창함만으로 신뢰되는 모델보다 강합니다: 부분 그래프가 모델에 넘겨지기 전에, 출하를 막는 바로 그 닫힌세계 형태가, 모든 로트가 자신의 derivedFrom 부모를 가지고 모든 CQA가 유형 지정 값을 가지는지를 점검하는 적합성 검사로도 작동하여, 유창한 모델이 그렇지 않았다면 훈련 기억에서 자신만만한 발명으로 채워 넣었을 텅 빈, 절반만 로드된 입력을 거부합니다. SHACL은 형태를 잡지, 뿌리의 습식 실험실 동일성은 결코 잡지 않습니다 — 그래서 발행된 산출물은 정합성을 인증하고 학습기에 정직한 폴드를 건네는 한편, 계보의 인간 인증은, 정확히 Book 5의 모델 검증하이브리드 디지털 트윈이 요구하는 대로, 회로 안에 남습니다. 그래프를 FAIR하게 만드는 규율은 그것을 신뢰할 만한 훈련 소스로 만드는 규율과 같습니다: FAIR해 보이지만 텅 빈 그래프는 모델 아래에서 조용히 실패하지 않습니다 — 그것은 대규모로 유창하고 잘못된 답을 발명합니다.

측정으로 바뀐 FAIR

FAIR의 힘은 그것이 구체적인 점검들로 분해된다는 데 있으며, 바로 그 점이 그것을 단지 주장하는 대신 측정할 수 있게 합니다 [1][2]. 발행된 CHO 캠페인 그래프에서, 각 글자는 실제 산출물과 실제 제조 필요에 안착합니다:

  • 찾을 수 있음(Findable) — 모든 존재가 전역적으로 고유하고 지속적인 IRI와 색인된 메타데이터를 지니므로, 조사자는 스프레드시트들을 뒤지는 대신 정확한 원료의약품 로트를 짚을 수 있습니다. bp:DS-001은 하나의 전역 문자열 https://example.org/bioproc#DS-001로 펼쳐지며, 계보 걷기에서든 출하 관문에서든 IDMP 기록에서든 어디서나 동일하게 — 라벨, 유형, 출하 상태를 지닌 채, 익명의 셀이 아니라 — 나타납니다.
  • 접근할 수 있음(Accessible) — 데이터는 그 식별자로, 명확한 접근 규칙과 함께 표준 프로토콜을 통해 회수 가능하며, 그것이 바로 감사관이 세포 은행 인증서를 요구 즉시 끌어올 수 있게 하는 것입니다. 문서화된 인가를 갖춘 SPARQL 엔드포인트는 통과합니다. FAIR-접근 가능은 공개를 뜻하지 않습니다 — GMP 배치 기록은 규제 대상이고 엄격히 접근 통제되지만, 접근 조건이 명확하고 회수 메커니즘이 표준이라면 온전히 FAIR합니다.
  • 상호운용 가능(Interoperable) — 값들이 공유된 형식 어휘와 단위를 지닌 한정 참조를 쓰므로, 98.611이라는 monomerPct가 다른 시스템이나 규제 당국 도구에서 분수로 오독될 수 없습니다(98.611 퍼센트와 분수 0.98611은 같은 양이지만, 잘못 추측하는 도구는 백 배 어긋납니다). QUDT 단위를 지닌 공유 클래스로 해소되는 값은 통과하고, 맨 문자열(기계가 해소할 수 있는 붙은 단위나 유형이 없는 평이한 텍스트 값)은 그렇지 못합니다 — 그리고 이것은 계보 자체가 의존하는 차원입니다. derivedFrom 간선은 양쪽이 그 의미를 인식할 때에만 시스템 간 결합이 가능하기 때문입니다.
  • 재사용 가능(Reusable) — 데이터가 출처와 명확한 사용 라이선스로 풍부하게 기술되므로, 일탈을 조사하는 낯선 이는 그것을 다시 유도하지 않고도 배치 기록을 신뢰할 수 있습니다. 자신의 방법, 세포 은행까지 거슬러 가는 시료 계보, 그리고 사용 조건을 지닌 결과는 통과하고, 고아가 된 숫자는 그렇지 못합니다.

이것들은 슬라이드 항목이 아니라 로드 가능한 개체입니다. 그래프는 DS-001 기록에 대한 자체 FAIR 자가 평가를, bp:FAIRAssessment에 매달린 네 개의 bp:FAIRCheck 노드로, 그리고 재사용 가능 점검이 의존하는 라이선스와 함께 지니고 있습니다:

bp:FAIR-DS-001 a bp:FAIRAssessment ; rdfs:label "FAIR assessment of the DS-001 record" ;
bp:assesses bp:DS-001 ;
bp:hasCheck bp:FC-F , bp:FC-A , bp:FC-I , bp:FC-R .
bp:FC-F a bp:FAIRCheck ; rdfs:label "Findable (global IRI)" ; bp:fairVerdict "PASS" .
bp:FC-A a bp:FAIRCheck ; rdfs:label "Accessible (resolves, with access conditions)" ; bp:fairVerdict "PASS" .
bp:FC-I a bp:FAIRCheck ; rdfs:label "Interoperable (shared vocab + QUDT units)" ; bp:fairVerdict "PARTIAL" .
bp:FC-R a bp:FAIRCheck ; rdfs:label "Reusable (method, lineage, licence)" ; bp:fairVerdict "PASS" .
bp:LICENSE-CC-BY a bp:UsageLicense ; rdfs:label "CC BY 4.0" .
bp:DS-001 bp:hasLicense bp:LICENSE-CC-BY .

이 모델의 정직함은 "PASS"가 아닌 단 하나의 판정에 있습니다: 상호운용 가능"PARTIAL"로 기록되는데, QUDT 단위나 공유 클래스 간선이 빠져서가 아니라, 이토록 신중하게 정렬된 그래프조차 자신의 로컬 용어 가운데 일부만을 검증된 외부 IRI로 위로 매핑하기 때문이며 — 상호운용성은 실제 그래프가 가장 자주 실패하는 차원이기 때문입니다.

바이오프로세스 그래프에 대한 FAIR 평가 점수표의 신원 카드: 글자마다 한 행씩 네 행이 있고, 각 행은 구체적인 점검과 판정을 담습니다 — 찾을 수 있음(지속적 IRI와 색인된 메타데이터: 통과), 접근할 수 있음(문서화되고 제한될 수도 있는 접근을 갖춘 SPARQL 엔드포인트: 통과, 접근 가능은 공개가 아니라는 주석과 함께), 상호운용 가능(값이 맨 문자열 대신 공유 온톨로지 클래스와 QUDT 단위를 씀: 위태로운 행, 부분으로 표시됨), 재사용 가능(출처·계보·라이선스 존재: 통과). 맨 위에는 기계 작동 가능성 배너가 가로질러 있고, 메타데이터가 통제 어휘 없이 손으로 작성되기 때문에 상호운용성이 가장 낮게 나올 가능성이 큰 차원임을 알리는 콜아웃이 있습니다. 구호가 아니라 점수표로서의 FAIR: 각 글자가 구체적인 점검이 되고, 기계 작동 가능성이 목표이며, 상호운용성이 실제 그래프가 가장 자주 실패하는 차원으로 표시됩니다 — 대개 엔진이 아니라 손으로 작성된 메타데이터 때문입니다. 저자가 AI의 도움을 받아 직접 제작한 그림입니다.

재사용 가능은 곧 출처: CQ-15가 두 소스 시스템을 조정한다

재사용 가능이라는 글자는 출처로 얻어지며, 그래프는 실제 출처를 하나 지니고 있습니다. 두 소스 시스템이 한 노드를 두고 의견이 갈렸습니다: 배치 등록기(MES)는 BATCH-2026-001Batch 물질이라 주장했고, 계보 로더(ETL 작업)는 그 운전이 BR-101로 해소되는 생물반응기를 썼다고 주장했습니다. 순진한 통합이라면 둘을 owl:sameAs로 병합해 배치 물질과 용기를 뒤섞어 버렸을 것입니다. 대신, 데이터 스튜어드의 큐레이션이 두 주장을 모두 사용해 그것들을 분리했고, 각 주장은 W3C PROV-O(출처를 기록하기 위한 표준 어휘 — 누가 또는 무엇이, 어떤 활동에서, 어떤 입력을 써서 한 사실을 만들어 냈는가)를 통해 자신의 소스 행위자에게 귀속되었습니다 — instances.ttlbp:reconciliation-001 prov:wasAssociatedWith bp:DataSteward로 기록하는 바로 그 규율입니다:

# instances.ttl — the PROV reconciliation: two source claims, one curated decision, no over-merge.
bp:BatchRegister a prov:SoftwareAgent ; rdfs:label "batch register (MES)" .
bp:GenealogyLoad a prov:SoftwareAgent ; rdfs:label "genealogy loader (ETL)" .
bp:DataSteward a prov:Agent ; rdfs:label "ontology data steward" .
bp:claim-batch-001 a prov:Entity ; rdfs:label "source claim: BATCH-2026-001 is a Batch (material)" ;
prov:wasAttributedTo bp:BatchRegister .
bp:claim-vessel-001 a prov:Entity ; rdfs:label "source claim: BATCH-2026-001's run used a bioreactor -> resolved to BR-101" ;
prov:wasAttributedTo bp:GenealogyLoad .
bp:reconciliation-001 a prov:Activity ; rdfs:label "curation: separate the vessel (BR-101) from the batch material" ;
prov:used bp:claim-batch-001 , bp:claim-vessel-001 ;
prov:wasAssociatedWith bp:DataSteward .

CQ-15는 발행된 그래프에게 조정된 두 소스 주장을 각각 그 소스에 귀속시켜 반환하도록 요청합니다 — prov:usedprov:wasAttributedTo에 대한 SELECT입니다:

# queries/CQ-15.rq — the two source claims the steward's reconciliation USED, each attributed.
PREFIX bp: <https://example.org/bioproc#>
PREFIX prov: <http://www.w3.org/ns/prov#>
SELECT ?claim ?source WHERE {
bp:reconciliation-001 prov:used ?claim .
?claim prov:wasAttributedTo ?source .
} ORDER BY ?claim

validate.py는 로드된 그래프에서 이를 돌려 두 주장을 모두 반환하며, 큐레이션된 결정은 파괴적 병합이 아니라 출처로 기록됩니다:

CQ-15 provenance PASS claim = ['claim-batch-001', 'claim-vessel-001']

바로 그 기록된 출처가 BATCH-2026-001의 기록을 낯선 이에게 재사용 가능하게 만드는 것입니다: 하류 소비자는 사실뿐 아니라 누가 그것을 단언했고 충돌이 어떻게 해결되었는지까지 볼 수 있습니다.

상호운용 가능은 곧 하나의 공유 동일성: CQ-16이 IDMP를 같은 노드에 둔다

상호운용 가능이라는 글자는 규제 당국의 동일성과 출하된 품질이 사본이 아니라 하나의 존재일 때 얻어집니다. 그래프는 ISO IDMP 물질 동일성 — 모델이 내부적으로 bp:DS-001로 추적하는 물질에 대한 규제 당국의 이름 — 을, 출하 관문이 검증한 바로 그 노드인 DS-001에 직접 붙입니다:

# instances.ttl — the IDMP regulatory identity attaches to the SAME node the gate validated.
bp:DS-001 bp:hasSubstanceIdentifier bp:IDMP-DS-001 .
bp:IDMP-DS-001 a bp:SubstanceIdentifier ; rdfs:label "IDMP substance identity for DS-001" ;
bp:isAbout bp:DS-001 ;
bp:uniiCode "ILLUSTRATIVE-UNII-0001" ; # an FDA UNII / GSRS code (value illustrative)
bp:mpid "ILLUSTRATIVE-MPID-mAb-A" . # an IDMP Medicinal Product Identifier (value illustrative)

CQ-16은 규제 동일성과 출하 CQA 패널이 하나의 IRI에 매달려 있음을 단일 ASK로 검증합니다:

# queries/CQ-16.rq — the IDMP identifier and the release CQA are carried by the SAME node.
PREFIX bp: <https://example.org/bioproc#>
ASK {
bp:DS-001 bp:hasSubstanceIdentifier ?id .
bp:DS-001 bp:monomerPct ?m .
}

validate.py는 참을 반환합니다: IDMP/UNII 식별자를 지닌 로트가 출하 단량체 값을 지닌 로트와 동일하므로, 그 물질에 대한 규제 당국의 시야와 제조사의 시야는 취약한 조인이 아니라 구성상 상호운용 가능합니다:

CQ-16 provenance PASS ASK = True

발행된 실타래가 끝나는 곳: 콜드체인과 공장 담장

발행된 그래프는 캠페인의 마지막 구간을 정직하게 모델링하며, 그 구간이 바로 FAIR의 연합 한계가 구체화되는 곳입니다. 유통은 모니터링되는 프로세스입니다: 온도에 민감한 바이알은 공장에서부터 검증된 2-8도 콜드체인 안에(승인된 라벨과 안정성 데이터가 허용하는 단기 이탈 허용 범위와 함께) 머물러야 하고, 그 범위로부터의 이탈 — 이탈(excursion) — 은 품질 부서가 판정해야 하는 사건입니다. 품질 부서는 순간적인 2-8도 한계가 아니라 산물의 검증된 안정성 예산에 비추어 판정합니다: 그 평균 동력학적 온도(MKT)와 허용되는 누적 냉장 이탈 시간(time-out-of-refrigeration)이며, 둘 다 라벨 뒤에 있는 ICH Q1A/Q5C 안정성 프로그램이 정합니다. 11.4도로의 일시적 튐은 그 예산 안에 넉넉히 들 수도 있고, 9도에서의 장시간 유지는 그렇지 못할 수도 있습니다. 바로 그래서 그래프는 이탈을 자동 불합격으로 표시하는 대신, 이산적이고 질의 가능한 개체로 — 처분 결정의 증거이자 출하가 세운 보관 가정을 다시 들춰보는 계기로 — 기록합니다. 데이터셋은 이것을 실제 개체로 지니고 있습니다 — 출하된 DP-001prov:usedbp:Shipment, 로거 트레이스를 지닌 bp:ColdChainProcess, bp:DataLogger, 이산적인 bp:TemperatureExcursion, 그리고 유통업체로의 인계를 명명하는 bp:CustodyRole — 빽빽한 로거 페이로드는 그래프 안으로 평평하게 펴 넣지 않고 참조됩니다(색인-대-페이로드):

# instances.ttl — the first distribution leg, modeled as the manufacturer's last authored edges.
bp:SHIP-001 a bp:Shipment ; rdfs:label "shipment of pallet P-001 to distributor" ;
prov:used bp:DP-001 ; # the released drug product (true individual)
bp:hasOutput bp:VIAL-DP-001-000042 . # the serialized vial that ships
bp:COLDCHAIN-001 a bp:ColdChainProcess ; rdfs:label "2-8 C cold-chain transport" ;
bp:hasParticipant bp:VIAL-DP-001-000042 ;
bp:storageTempLowC 2.0 ; bp:storageTempHighC 8.0 ;
bp:hasTrace bp:Trace-Logger-DP001 .
bp:LOGGER-01 a bp:DataLogger ; rdfs:label "cold-chain temperature logger" .
bp:EXCURSION-001 a bp:TemperatureExcursion ; rdfs:label "transient temperature excursion" ;
bp:isAbout bp:VIAL-DP-001-000042 ; bp:excursionTempC 11.4 .
bp:CUSTODY-distributor a bp:CustodyRole ; rdfs:label "distributor custody role" .

bp:hasTrace bp:Trace-Logger-DP001 간선은 의도적으로 페이로드가 아니라 색인입니다: 그래프는 포인터(tagName과 historian 태그 rdfs:seeAlso를 지닌 bp:Quality)와 대표 이탈 값(bp:excursionTempC 11.4)만 쥐고, 빽빽한 분 단위 열 시계열은 트레이스 IRI가 해소되는 로거의 객체 저장소에 남습니다. 지식 그래프는 그 안에서 질의하는 블롭이 아니라 가로질러 질의하는 관계를 위한 것입니다 — 만 개의 온도 점을 트리플로 평평하게 펴 넣는다면 리콜 범위 질문 하나도 더 빨리 답하게 만들지 못한 채 그래프만 부풀릴 뿐입니다.

derivedFrom이 전이적이므로, 직렬화된 바이알 VIAL-DP-001-000042 — 하위 클래스가 아니라 skos:exactMatch로 교차 연결된 식별자 시스템으로서 자신의 GS1 SGTIN을 지닌 — 은 약국 선반에서 WCB-CHO-001까지의 걷기 전체를 닫으며, DS-001의 열한 개 조상 걷기를 DP-001을 거쳐 직렬화된 바이알까지 두 걸음 더 위로 늘려 — 이제 그 계보가 환자의 손에서 얼린 세포 바이알까지 뻗습니다. 그러나 그래프는 저작권이 유통업체로 넘어가는 곳에서 끝납니다: bp:excursionTempC 11.4로의 이탈은 제조사가 통제한 운송 중에 로그되었지만, 어느 트럭이 그 팰릿을 그 너머로 운반했는지, 어느 창고가 그것을 보관했는지, 그리고 어느 온도에서였는지는 — 기록된다면 — 다른 조직들의 시스템에 쓰여 있습니다. 그리고 이 실타래는 환자에 한 걸음 못 미쳐 의도적으로 멈춥니다 — 한 단위가 조제되었다는 사실에는 연결하되 누가 그것을 받았는지는 받아들이지 않는데, 환자는 제조 존재가 아니라 사생활 권리를 가진 사람이기 때문이며, 그 경계는 공학적 한계가 아니라 데이터 보호 법입니다. 이것이 발행된 산출물이 실제로 상호운용 가능한 것은 오직 공장 안에서뿐이고 연합 가능한 것은 오직 담장까지뿐인 구조적 이유입니다.

평가: 발행된 그래프는 여전히 통과한다

발행이 검증을 약화시킬 권리는 없습니다. validate.py는 발행된 산출물 — bioproc.ttl + align.ttl + instances.ttl — 을 로드해 2120개 트리플(트리플은 하나의 주어-술어-목적어 사실로, RDF 그래프가 그것으로 지어지는 원자적 진술입니다)을 파싱하고, OWL-RL 폐포를 적용해 7137개 트리플(OWL-RL 추론기는 규칙을 읽어, 암시되었으나 결코 적혀 있지 않던 추가 트리플 — 예컨대 모든 전이적 derivedFrom 홉 — 을 추론하며, 그래서 개수가 늘어납니다)로 만들며, 23개 역량 질문을 모두 돌리고, 그 결과를 SHACL 관문으로 통과시킵니다. 이 장이 기대는 출처 쌍은 초록 줄 가운데 둘이며, 출하 관문은 여전히 마땅히 실패해야 할 곳에서만 실패합니다 — DP-004/DS-004hmwPct에서, 그 밖의 모든 로트는 규격 내, DS-001 단량체는 98.611 %, 총 바이러스 LRV는 8.7(LRV — Log Reduction Value, 한 단계가 바이러스를 십의 몇 제곱만큼 제거하는가; 8.7은 프로세스가 바이러스를 거의 10억 배 제거한다는 뜻이며, 높을수록 안전합니다):

[1] parsed 2120 triples (bioproc + align + instances)
[2] reasoned: 2120 -> 7137 triples after OWL-RL closure
...
CQ-15 provenance PASS claim = ['claim-batch-001', 'claim-vessel-001']
CQ-16 provenance PASS ASK = True
...
23/23 competency questions PASS

ALL CHECKS PASSED

8.7은 모델이 멋대로 단언해도 되는 산술적 우연이 아닙니다: 그것은 저-pH 유지(4.5 LRV, 외피 보유 바이러스 불활성화, 이 배치는 pH 3.6에서 60분 유지)와 바이러스 보유 나노여과(4.2 LRV, 크기 기반 제거)의 직교 합입니다. 둘이 가산적으로 셈해지는 것은 오직 그 기제가 서로 다르기 때문입니다(화학적 불활성화와 물리적 크기 기반 제거는 서로 독립적인 방식으로 실패하므로, 한쪽을 살아남은 바이러스가 다른 쪽도 살아남도록 미리 선별되어 있지 않습니다. 같은 방식으로 작동하는 두 단계는 두 번 온전한 점수를 받지 못하는데, 첫째를 빠져나간 것이라면 둘째도 빠져나갈 공산이 크기 때문입니다) — 두 단계 사이의 그래프 bp:orthogonalTo 간선이 바로 그것을 기록합니다. 그것이 수년 뒤 그 기록을 재사용하는 낯선 이로 하여금 숫자뿐 아니라 규제 당국이 왜 그것을 받아들였는지까지 보게 합니다.

자신의 ORSD를 더 이상 통과하지 못하는 발행된 어휘는 릴리스가 아니라 회귀일 것입니다. LOT 발행 단계는 검증 단계가 승인한 그 동일한 초록 산출물을 출하합니다.

미해결된 부분: 전선 위에서는 적합, 사실은 텅 빔, 담장 너머는 취약

이 시리즈가 맴돌아 온 빈틈이 여기 있습니다. 연구자들이 실제 데이터셋을 FAIR에 비추어 평가하면 일관된 패턴이 드러납니다: 거의 모든 것이 찾을 수 있음인 반면, 상호운용성은 가장 자주 점수가 낮은 차원이며, 네 글자 가운데 흔히 가장 낮습니다 [2][3]. 그 원인은 좀처럼 트리플스토어가 아닙니다 — 그것은 공장 현장에서 손으로 작성된 메타데이터입니다. 마감에 쫓기는 작업자가 고를 통제 어휘 없이 자유 텍스트 필드에 CQA 이름을 타이핑하므로, 한 배치 기록은 "monomer", 다음은 "% main peak", 그다음은 "purity (SEC)"라 적고, 단위는 맨 문자열로 도착합니다. 필드는 존재하지만 어떤 공유 온톨로지도 가리키지 않으며, 그런 두 시스템 사이의 계보 간선은 둘 다 유효한 RDF임에도 결합될 수 없습니다. 데이터는 찾을 수 있고 내려받을 수 있지만 결합 불가능합니다.

바로 그것이 모델 자신의 FC-I 판정이 정직하게 "PARTIAL"인 이유입니다: 일부 용어는 검증된 외부 IRI로 깔끔하게 매핑되고 — bp:Material은 BFO의 material entity로, bp:HostOrganism은 NCBI Taxonomy의 Cricetulus griseus로, bp:HCPAssay는 OBI ELISA 클래스로, bp:derivedFrom은 RO의 derives from으로 — 반면 QbD 관계 affectsQuality 같은 다른 것들은 표준 외부 잎이 없어, 그럴듯하지만 틀린 IRI로 매핑되느니 ILLUSTRATIVE로 표시된 채 남으며, IOF 용어들은 EBI Ontology Lookup Service(OLS — 유럽 생물정보학 연구소가 운영하는 공개 검색 색인으로, 도구가 한 용어의 IRI를 찾아볼 수 있습니다)가 아니라 발행된 IOF 릴리스에 대해 검증되었기에 — OLS는 IOF를 호스팅하지 않으므로 — OLS를 통해(그 색인에게 "이 식별자는 무엇인가"를 물으며) IRI를 해소하는 하류 도구는 BFO/OBI 쪽은 인식하고 IOF 쪽은 조용히 놓칩니다. 구체적으로: OBO 쪽의 모든 bp: 부모는 역참조됩니다(그 IRI를 가져오면 용어의 정의가 돌아옵니다) — http://purl.obolibrary.org/obo/OBI_0000661에 대한 GET(웹 주소를 가져오는 HTTP 요청)은 ELISA 클래스(흔한 항체 기반 실험실 분석법을 가리키는 OBI 용어)를 돌려줍니다 — 반면 IOF 부모들(iof:MaterialProduct, iof:ProcessParameter)은 OLS가 아니라 IOF PURL 공간을 통해서만 해소되므로, 정렬 폐포를 걷는 범용 IRI 해소기는 등뼈의 산업 쪽 절반에서 정확히 404("찾을 수 없음" 오류)를 냅니다. 빠진 트리플이 아니라 그 비대칭성이 바로 FC-I = "PARTIAL"이 기록하는 것입니다.

SHACL 관문은 빠진 필드나 틀린 데이터타입은 잡지만, SEC 단량체 필드에 그럴듯해 보이지만 틀린 용어를 확신을 가지고 잘못 라벨링하는 사람은 잡지 못합니다 — 그리고 출하 CQA에 대한 확신에 찬 오라벨링이야말로 상호운용성 보증을 무너뜨리는 바로 그 종류의 오류입니다 — 이것은 출하 관문이 그은 바로 그 열린 세계(open-world) 경계입니다. (열린 세계 가정에서는, 진술되지 않은 것은 거짓이 아니라 단지 알 수 없음입니다. SHACL은 그 대신 닫힌 세계 표적을 점검합니다 — 자신이 찾으라고 지시받은 것들이 존재하고 잘 형성되어 있는지를.) SHACL은 단언된 것의 형태는 검증하지만, 구문상 유효한 용어가 틀린 용어임을 알 길은 없습니다. 따라서 상호운용성은 검증 관문이 구조적으로 강제할 수 없는 단 하나의 FAIR 글자이며, 오직 저작 시점의 통제 어휘만이 그것을 할 수 있습니다. FAIR성은 RDF를 채택함으로써가 아니라 규율과 도구로 전달됩니다.

더 깊은 한계는 유통이 드러냈고 발행이 피할 수 없게 만드는 것입니다: 실타래는 공장 안에서는 철벽이지만 그 너머에서는 취약한 연합(federation)입니다. 제조사의 발행된 그래프는 첫 출하 구간을 정직하게 모델링합니다 — bp:Shipment prov:used bp:DP-001, 그것이 로그한 콜드체인 프로세스, 그것이 배정한 보관 역할 — 그러나 그것은 저작권이 유통업체로 넘어가는 곳에서 끝납니다. 그 인계 너머로, 출처는 독립적인 그래프들의 연합에 의존하는데, 그것들은 한 단위가 무엇인지에 동의하고 그것에 무슨 일이 일어났는지를 — 제조사가 결코 통제하지 못한 창고에서의 어떤 콜드체인 이탈을 포함해 — 공유하기로 선택해야 합니다. 인터페이스(GS1, EPCIS)는 표준화하고 각 당사자가 제 몫을 해 주기를 바랄 수는 있어도, 다른 회사의 데이터 품질을 강제할 수는 없습니다. 조직 간 디지털 스레드 연합은 어떤 발행된 온톨로지도 홀로 해결하지 못하는, 진정으로 열린 문제입니다. 그래서 발행된 산출물에 대한 정직한 FAIR 기준은 명확합니다: 진정으로 찾을 수 있고, 접근할 수 있고, 재사용 가능하며; 상호운용 가능한 것은 오직 정렬이 검증된 만큼만 실제로; 연합 가능한 것은 오직 공장 담장까지만.

왜 중요한가

FAIR는 모델링 노력 전체의 정당화 그 자체입니다 — mAb 제조사가 그저 숫자를 저장하는 대신 온톨로지, IRI, 단위의 비용을 치르는 이유입니다. 그 대가는 구체적입니다: 발행된 FAIR 그래프는 일탈을 WCB-CHO-001까지 거슬러 가는 계보 걷기로, 규격 외 로트를 질의로 정확히 DP-001DP-002로 범위가 좁혀진 리콜로, 출하 CQA를 규제 당국 도구가 모호함 없이 읽을 수 있는 값으로 바꿉니다. 그러나 그 정당화는 FAIR성이 실제일 때에만 성립하며, 실제 데이터가 찾을 수는 있지만 상호운용 불가능하다는 일관된 발견은 그 가치가 일상적으로 주장되기만 하고 전달되지는 않는다는 뜻입니다: monomerPct가 맨 문자열인 그래프는 약속한 리콜의 범위를 실제로는 좁힐 수 없습니다. 모델을 하나의 버전 매겨지고 라이선스된 bp: 어휘로 발행한 뒤 그 FAIR성을 측정하는 것 — 각 글자를 하나의 점검으로 바꾸고 정직하게 채점하며, 마땅한 곳에는 "PARTIAL"을 포함시키는 것 — 이야말로, 표준을 채택하는 것이 목표를 달성하는 것과 같다는 안락한 거짓말로부터 프로젝트를 지켜 냅니다. FAIR해 보이지만 그렇지 않은 그래프는 정직한 스프레드시트보다 어쩌면 더 나쁜데, 배치 기록이 얻지 못한 신뢰를 부르기 때문입니다.

실제 현장에서는

LOT는 명시적으로 산업 온톨로지 개발을 위해 지어졌고, 발행·버전 관리·FAIR 릴리스를 일급 단계로 삼아 재사용 가능한 어휘를 발행하기 위해 표준 기구와 대기업에서 쓰입니다. FAIR 평가는 다시, 원칙에서 실천으로 성숙해 왔습니다: 발행된 지표, 성숙도 표시자, 해석 프레임워크가 있어, 조직이 준수를 단언하는 대신 자신의 데이터를 채점할 수 있게 합니다 [2][3]. 여러 영역에 걸친 일관되고 냉정한 결과는, 상호운용성과 풍부한 재사용성이 찾을 수 있음에 한참 뒤처진다는 것입니다. 바이오제약에서, 상호운용성을 전달할 표준들 — IOF/BMIC, Allotrope, QUDT — 은 존재하고 수렴하고 있으므로, 병목은 빠진 기술이 아니라 현장에서 그것들에 맞추어 작성하는 규율과, 모든 조직 간 인계를 넘어 공급망이 여전히 구축해 가고 있는 연합 작업 — 공유 레지스트리, 검증 가능한 자격 증명 — 입니다.

한눈에 보는 FAIR 점수표

그래프가 지닌 네 개의 bp:FAIRCheck 판정을 종합하면, 발행된 산출물의 점수는 이렇습니다:

FAIR 글자bp: 그래프에 대한 구체적 점검판정이유
찾을 수 있음전역 지속 IRI와 색인된 메타데이터(bp:DS-001)PASS로트가 나타나는 모든 곳에서 하나의 영속 문자열
접근할 수 있음SPARQL 엔드포인트와 문서화된 접근 규칙PASS식별자로 회수 가능; 공개가 아니라 명확한 접근
상호운용 가능맨 문자열 대신 공유 클래스와 QUDT 단위PARTIAL로컬 용어 가운데 일부만 검증된 외부 IRI로 위로 매핑됨
재사용 가능출처(PROV)와 계보와 CC BY 라이선스PASS낯선 이가 다시 유도하지 않고도 기록을 신뢰할 수 있음

핵심 용어

  • LOT(Linked Open Terms) — 재사용 가능한 어휘의 요구사항 → 구현 → 발행 → 유지보수를 규율하는 산업 지향 방법론. 이 단계의 발행-및-릴리스 후단부의 출처입니다.
  • 조립된 어휘(Assembled vocabulary) — 206개 클래스, 88개 객체 속성, 46개 데이터 속성의 단일 bp: 네임스페이스. 여러 작은 모델이 아니라 하나의 버전 매겨지고 라이선스된 산출물로 발행됩니다.
  • 계보 걷기 / 영향 분석(Lineage walk / impact analysis) — 발행이 얻어 내는 질의들: DS-001의 열한 개 조상 계보를 WCB-CHO-001까지 반환하는 (derivedFrom)+ 속성 경로와, 실패한 로트의 리콜을 그 세포 은행을 공유하는 형제(DP-001, DP-002)로 좁히는 그 역.
  • 콜드체인 / 이탈(Cold chain / excursion) — 출하된 바이알이 지켜야 하는 검증된 2-8도 범위. 모니터링되는 bp:ColdChainProcess로 모델링됩니다. 이탈(bp:excursionTempC 11.4)은 그 단위의 사용 적합성에 영향을 미치는 이산 사건입니다.
  • 환자 동일성 간선(Patient-identity edge) — 식별된 개인에 못 미쳐, 조제 시점에서 제조 실타래를 의도적으로 종료하는 것. 데이터 무결성이 데이터 보호 법에 길을 내주는 지점입니다.
  • FAIR 원칙(FAIR principles) — 데이터가 찾을 수 있고, 접근할 수 있고, 상호운용 가능하고, 재사용 가능하며, 기계 작동 가능성이 명시적 목표라는 것. 준수 시험이 아니라 원칙입니다.
  • FAIR는 공개가 아니다(FAIR is not open) — 접근 가능은 명확한 접근 조건과 표준 회수 메커니즘을 뜻하지, 누구나 모든 것을 읽을 수 있음을 뜻하지 않습니다. 제한된 규제 데이터도 온전히 FAIR할 수 있습니다.
  • 상호운용성 빈틈(The interoperability gap) — 실제 데이터가 찾을 수는 있지만 상호운용성에서 가장 자주 실패한다는 일관된 발견. 메타데이터가 통제 어휘 없이 손으로 작성되기 때문이며, 모델 자신의 FC-I 판정이 정직하게 "PARTIAL"인 이유입니다.
  • PROV 조정(PROV reconciliation) — 큐레이션된 결정(CQ-15)을, 귀속된 두 소스 주장을 prov:usedprov:Activity로 기록하여, owl:sameAs 과잉 병합 없이 용기를 배치 물질에서 분리하는 것.
  • 같은 노드 위의 IDMP(IDMP-on-the-same-node) — ISO IDMP 규제 물질 동일성(CQ-16)을, 출하 관문이 검증한 바로 그 DS-001 노드에 붙여, 규제 동일성과 출하된 품질이 하나의 상호운용 가능한 존재가 되게 하는 것.
  • 담장 너머의 연합(Federation past the wall) — 발행된 실타래를, 제조사가 시스템·식별자·데이터 품질을 통제하지 못하는 유통업체와 약국을 거쳐 이어 가는 열린 문제.
  • AI를 위한 지상 진리(Ground truth for AI) — 기계학습 모델이 학습하고 GraphRAG 검색이 답하는 검증된 저장소로서의 FAIR-발행된 bp: 그래프: (derivedFrom)+ 계보는 한-배치-남김 교차검증 그룹 키를 겸하고, affectsQuality 간선은 감사된 특징이며, 출하를 막는 SHACL 형태는 검색도 막습니다. 그래서 발행된 산출물은 정합성을 인증하되(습식 실험실 동일성은 결코 인증하지 못하며) 인간은 회로 안에 남습니다.

다음 이야기

모델은 지어졌고, 검증되었으며, 하나의 FAIR-측정된 어휘로 발행되었고, 상호운용성과 연합이 어디서 얇아지는지에 대해 정직합니다. 러닝 예제는 완성되었습니다. 제8부는 이제 캠페인에서 한 걸음 나와, 생애주기가 답을 가정했던 경험적 질문을 던집니다: 실제 산업은 정말로 이 중 무엇이라도 하고 있으며, 얼마나 성숙해 있는가? 그것은 표준 기구: 누가 실제로 바이오제약의 공유 어휘를 짓는가로 시작하여, 모든 이전 장이 조용히 기대어 온 공유 어휘를 만들어 내는 경쟁 이전(pre-competitive) 컨소시엄들 — Allotrope, Pistoia Alliance, ISA-88/95, OPC UA와 MTP, ISPE Pharma 4.0, BioPhorum, GS1, 그리고 OAGi/NIIMBL 바이오제조 온톨로지 노력 — 을 둘러봅니다.