Files
AI/PHASE3_OPTION_B.md

6.2 KiB

Phase 3 Option B: OntoCast GraphUpdate 검증 (Hybrid 접근법)

완료일: 2026-05-14
상태: Acceptance Gate 3 Option B 검수 준비 완료

개요

Phase 3 Option B는 점진적 OntoCast 통합 (Hybrid approach)입니다.

핵심 전략

  • Phase 0-2 유지: 현재 경량 구조 그대로
  • GraphUpdate 검증 추가: OntoCast의 SPARQL 쿼리 검증
  • Critic loop 준비: Phase 4+에서 추가 가능하도록 설계
시간 축
────────────────────────────────────────
Phase 0-2: 경량 추출 (완료)
Phase 3 MVP (A): 엔티티 검증 (완료)
Phase 3 Option B: SPARQL 검증 (지금 이것) ← 지금 여기
Phase 4+: Critic loop + Fuseki (향후)

구현 내용

1. SPARQL 검증기 (SPARQLValidator)

SPARQL 쿼리 기본 검증:

 문법 검사: 괄호/중괄호 균형, 키워드 확인
 SQL 인젝션 패턴 감지
 프리픽스 선언 확인
 쿼리 크기 경고 (너무  쿼리 감지)

2. OntoCastValidator (Phase 3 Option B)

GraphUpdate 검증:

단계 1: SPARQL 문법 검증
  -  쿼리 감지
  - 괄호 불균형 감지
  - 위험한 패턴 감지 (SQL injection )

단계 2: 작업 순서 검증
  - 안전한 순서: INSERT  UPDATE  DELETE
  - 불안전한 순서 감지 (DELETE  INSERT )

단계 3: 프리픽스 검증
  - 선언되지 않은 프리픽스 감지
  - 표준 RDF 프리픽스 자동 인식

단계 4: 작업 수량 체크
  -  작업 목록 경고
  - 과도하게  작업 경고 (100 초과)

3. 테스트 결과 (모두 통과 )

테스트 설명 결과
Valid SPARQL 올바른 INSERT 작업 통과
Invalid syntax 괄호 불균형 감지
Safe order INSERT → UPDATE → DELETE 통과
Unsafe order DELETE 후 INSERT 감지
Undeclared prefix 선언되지 않은 프리픽스 경고
Utility functions SPARQLValidator 직접 사용 통과

아키텍처: Phase 0-2와의 호환성

┌─────────────────────────────────────┐
│  OntologyGuard (통합 인터페이스)     │
└──────────┬──────────────────────────┘
           │
     ┌─────┴──────────┐
     │                │
  경량 검증        OntoCast 검증
(Phase 3 MVP)   (Phase 3 Option B)
  ↓                ↓
엔티티/관계      SPARQL 쿼리
검증             검증

두 검증을 동시에 사용 가능:

# 둘 다 활성화
guard_entity = OntologyGuard(validator_type="lightweight")
guard_sparql = OntologyGuard(validator_type="ontocast")

# 또는 런타임에 선택
validator_type = "ontocast" if use_ontocast else "lightweight"
guard = OntologyGuard(validator_type=validator_type)

파일 구조

신규 생성:
  ✨ ont_platform/core/validation/ontocast_validator.py
     ├── SPARQLValidator: 기본 SPARQL 검증
     ├── OntoCastValidator: GraphUpdate 검증
     └── GraphUpdate: 검증 결과 모델

수정:
  ✏️ ont_platform/core/validation/validators.py
     (ValidatorFactory에 OntoCast 지원 추가)
  ✏️ ont_platform/core/validation/__init__.py
     (OntoCastValidator export)

테스트:
  ✨ test_phase3_option_b.py (6개 테스트, 모두 통과)

Acceptance Gate 3 Option B 상태

완료된 항목

  • SPARQL 문법 검증

    • 괄호/중괄호 균형 ✓
    • 키워드 확인 ✓
    • SQL 인젝션 패턴 감지 ✓
  • 안전한 작업 순서 검증 (INSERT → UPDATE → DELETE)

    • 불안전한 순서 감지 ✓
    • 순서 강제 가능 ✓
  • 프리픽스 선언 검증

    • 미선언 프리픽스 감지 ✓
    • 표준 RDF 프리픽스 자동 인식 ✓
  • Phase 0-2 회귀 없음

    • 경량 검증 여전히 작동 ✓
    • API 호환성 유지 ✓

향후 추가 예정 (Phase 4+)

Critic Loop 통합

# Phase 4에서 구현될 것
if validation_errors:
    suggestions = generate_critic_suggestions(errors)
    retry_result = await llm.retry(original_query, suggestions)

RDF 일관성 검증

# Fuseki 사용 가능 시
if fuseki_available:
    # 1. 쿼리 실행 시뮬레이션
    # 2. 결과 그래프 검증
    # 3. 일관성 확인
    validate_rdf_consistency(update)

GraphUpdate 추적

# 감사 로그
graph_update_history.append({
    "timestamp": now,
    "operation_count": len(operations),
    "validation_status": "passed",
    "execution_time": elapsed_ms,
})

향후 옵션

Phase 3 Option A (경량 MVP) vs Option B (Hybrid) 비교

항목 Option A (MVP) Option B (Hybrid)
엔티티 검증
SPARQL 검증
OntoCast 의존성 부분적
Critic loop (Phase 4+) 준비됨 (Phase 4+)
구현 복잡도 낮음 중간
Phase 0-2 호환성

설계의 확장성

ValidatorFactory 플러그인 구조

현재:

ValidatorFactory.create("lightweight")   # Option A
ValidatorFactory.create("ontocast")      # Option B (지금)

향후 추가 가능:

ValidatorFactory.create("guardrails")    # Phase 3+ (제3 선택지)
ValidatorFactory.create("full_ontocast") # Phase 4+ (완전통합)

Phase 3 완료 상태 요약

선택지 상태 특징
A: 경량 MVP 완료 엔티티/관계 검증만
B: Hybrid 완료 + SPARQL 검증
C: Guardrails 준비 + Reask 루프

현재: 옵션 A + B 모두 선택 가능한 상태

다음 단계

Phase 4: Neo4j GraphRAG (권장)

  • RDF ↔ Property Graph 프로젝션
  • Vector 검색 + Entity Resolver
  • GraphUpdate 실행 시뮬레이션

또는: Phase 3+ (향후)

  • Guardrails 통합 (더 정교한 reask)
  • Full OntoCast (Critic loop 본격화)
  • Fuseki 연동 (RDF 저장소)

참고 문헌

  • 설계서 §5 Phase 3 (p. 222-224)
  • OntoCast sparql_models.py (GraphUpdate 모델)
  • SPARQL 1.1 명세 (검증 규칙)