← 프로젝트 목록
방책 생성 에이전트용 교범 온톨로지 설계
TBox · ABox · SHACL · 교범 3권 통합
방책 생성 에이전트가 "이 상황에서 왜 이 방책인가"를 교범 근거와 함께 답할 수 있도록, 교범 3권(작전 개념 FM 3-0, 전술 FM 3-90, 계획 절차 FM 5-0)의 교리를 하나의 온톨로지로 설계했습니다.
RDF/OWLTurtleSHACLSPARQLProtégéPython
5,277TBox 클래스
1,024ABox 개체
38 → 77%테스트 질문 정답률
0통합 후 모순
프로젝트 목적
교리는 교범 문장으로만 있어서 에이전트가 조건에 맞는 방책을 고르거나 그 이유를 설명할 수 없었습니다. 또 교범별로 따로 만든 온톨로지는 합치면 관계가 충돌했습니다. 교범 3권을 하나의 구조로 묶고, 방책마다 선택 조건과 원문 근거를 연결하는 것이 목표였습니다.
| 기간 | 2026.09 — 진행 중 |
|---|---|
| 링크 | 사내 과제로 비공개 |
담당 역할
- TBox(교리 스키마) 계층 설계와 교범 3종 통합
- ABox 선택 조건·원문 근거 추출과 연결
- 통합 중 생긴 모순의 원인 추적과 정오표 관리
- SPARQL 테스트 질문, 구조 점검·인용 대조 스크립트 작성
스키마 구조
이렇게 설계한 이유TBox는 작전 유형에서 방책까지 위에서부터 좁혀 가는 계층으로 두어, 에이전트가 상황에 맞는 방책 후보를 단계적으로 찾게 했습니다. ABox에는 방책마다 선택 조건과 근거가 된 교범 문단을 담아 선택 이유를 원문으로 설명할 수 있게 했습니다. 교리와 엔진 연동 설정(과업 동사·역할 할당 규칙·저장 질의)은 파일을 나눠, 교리를 고칠 때 엔진 쪽 규칙을 건드리지 않게 했습니다.
주요 구현
1. 질문 정의→2. TBox 통합→3. ABox 조건 추출→4. 자동 점검
- 에이전트가 물을 질문을 SPARQL로 먼저 만들었습니다. 예: "방어작전의 유형은?", "각 기동 형태에 원문 근거가 있는 선택 조건이 있는가?" 정답은 교범 문단입니다.
- 교범 3권의 TBox를 BFO/CCO 표준 상위 온톨로지 아래로 단계별로 합치며 클래스 계층을 재배치하고, 빠져 있던 작전(종심방어, 엄호·경계, 포위 3종 등)을 추가했습니다.
- 선택 조건은 필요·지원·금기로 나눠 방책별 선택 프로파일에 연결하고, SHACL로 필수 필드와 형식을 검증했습니다.
- 순환 관계·상위 온톨로지 연결·선언 누락·라벨 품질 등 19개 항목을 한 번에 점검하는 스크립트와, 인용문이 실제 교범 문단과 같은지 대조하는 스크립트를 수정할 때마다 돌렸습니다.
해결 과제
1. 합치자 모순이 된 온톨로지
- 과제
- 교범별 온톨로지를 합치자 온톨로지 전체가 모순 상태가 되어 추론이 멈췄습니다.
- 원인
- '사격 구역 통제수단'이 '구역 통제수단'의 하위이면서 동시에 서로 배타적이라고 선언돼 있었습니다. 경계선·통제선 클래스는 표준 상위 온톨로지에서 서로 배타적인 '지역'과 '선' 양쪽 아래에 동시에 있었습니다.
- 접근
- 배타 선언은 두고 잘못 붙은 상위 관계를 끊어 올바른 위치로 다시 연결했습니다. 지운 관계는 모두 정오표로 남겨 되돌릴 수 있게 했습니다.
모순 0, 만족 불가능 클래스 0으로 통합
2. 명세와 활동이 섞이는 문제
- 과제
- 포위의 세 변형(단일·이중·수직)을 기동 형태 아래에 넣어야 했는데, 이미 '포위 기동 활동' 클래스가 있었습니다.
- 접근
- 활동 클래스를 그대로 옮기면 정보(명세)와 과정(활동)이 한 계층에 섞입니다. 그래서 기동 형태 쪽에 명세 클래스를 새로 만들고 활동 클래스와는 연결만 했습니다. 같은 기준으로 종심방어 작전 클래스도 지침 명세와 분리했습니다.
3. 지식이 충분한지 판단할 기준
- 과제
- 온톨로지가 커질수록 에이전트에게 필요한 지식이 실제로 들어 있는지 판단할 기준이 없었습니다.
- 접근
- 교범 문단을 정답으로 하는 테스트 질문을 만들어, 작업 단계마다 같은 질문으로 다시 돌렸습니다. 엔진이 실제로 읽는 연동 질문 4개는 모든 단계에서 통과하는지 함께 확인했습니다.
| 작업 단계 | 통과한 교리 질문 |
|---|---|
| 엔진이 쓰던 기존 버전 | 10 / 26 |
| 교범 3종 통합 직후 | 15 / 24 |
| 과업 연결 추가 | 17 / 24 |
| 작전 11개 선택 조건 추가 | 18 / 24 |
| FM 3-90 원문 층 추가 (질문 2개 추가) | 20 / 26 |
엔진 연동 질문 4개는 모든 단계에서 4/4 유지
남은 한계
- 현재 엔진은 아직 교리 부분을 읽는 코드가 없어, 실제 방책 선택에는 연결되지 않았습니다.
- 정의가 없는 클래스가 절반이 넘습니다(57%).
- 교리 질문 6개는 관계가 빠져 있어 아직 통과하지 못합니다.